쉼표로 구분된 값의 문자열을 배열로 변환하는 방법

쉼표로 구분된 값의 문자열을 배열로 변환하는 방법

다음과 같은 문자열이 포함된 셀이 여러 개 있습니다.

"존, 칼라, 피터, 존, 밥, 크리스, 칼라, 안드레아"

나는 얼마나 많은 사람의 이름이 지정되었는지(즉, 고유한 값이 몇 개인지) 세고 싶습니다. 위 문자열의 개수는 6입니다. 문자열에 있는 이름의 총 개수는 많이 다를 수 있습니다. 일부는 이름이 하나만 있고 가장 큰 이름은 14개입니다(일부는 중복될 수 있음). 일부 이름에는 공백이 있지만(예: "Peter Smith,Andrea,Carla Moore") 쉼표를 사용하여 구분할 수 있습니다.

해결책은 문자열을 배열로 변환한 다음 온라인에서 찾은 SUM, IF 및 FREQUENCY 수식의 조합을 사용하는 것입니다.여기, 해당 배열에 적용됩니다.

그러나 문자열을 배열로 변환하는 방법을 모르겠습니다(그렇게 하는 방법이라면).

답변1

다음과 같은 작은 사용자 정의 함수를 사용해 보세요.

Public Function PeopleKounter(s As String) As Long
    Dim DQ As String, c As Collection
    Set c = New Collection
    DQ = Chr(34)

    ary = Split(Replace(s, DQ, ""), ",")

    On Error Resume Next
        For Each a In ary
            c.Add a, CStr(a)
        Next a
    On Error GoTo 0

    PeopleKounter = c.Count
End Function

여기에 이미지 설명을 입력하세요

답변2

이 수식은 "단어"를 반복하고 고유한 단어만 계산합니다.

=SUMPRODUCT(--(ISERROR(FIND(TRIM(MID(SUBSTITUTE(A1,",",REPT(" ",99)),(ROW($1:$17)-1)*99+1,99)),TRIM(MID(SUBSTITUTE(A1,",",REPT(" ",99)),1,(ROW($1:$17)-1)*99+1))))))

반복하면서 이전에 나온 모든 것과 현재를 비교합니다 FIND(). 그리고 발견되지 않으면 오류가 반환되므로 계산됩니다.

여기에 이미지 설명을 입력하세요

답변3

=COUNTA(UNIQUE(TEXTSPLIT(A1,","),TRUE))

관련 정보