Excel이 한 셀에서 가장 빈번한 값을 반환하도록 하려면 어떻게 해야 합니까?

Excel이 한 셀에서 가장 빈번한 값을 반환하도록 하려면 어떻게 해야 합니까?

쉼표와 공백으로 구분된 긴 숫자 목록이 포함된 단일 셀이 있습니다.

일부 숫자가 반복되는데, 어떤 숫자가 가장 많이 반복되는지 알고 싶습니다.

MODE 함수는 작동하지 않으며 모든 값이 자체 셀에 있는 범위에서 작동하도록 설계된 것 같습니다.

나에게 필요한 것의 예

Cell with numbers
123, 456, 456

Most frequently repeated value
 456

답변1

값이 표시된 것과 같은 숫자인 경우:

=MODE.SNGL(FILTERXML("<a><b>"&SUBSTITUTE(A1,",","</b><b>")&"</b></a>","//b"))

그러면 "<a><b>"&SUBSTITUTE(A1,",","</b><b>")&"</b></a>"xml 문자열이 생성됩니다. 그런 다음 FILTERXML(...,"//b")숫자 배열을 반환합니다. 그런 다음 MODE.SNGL가장 큰 반복 항목을 반환합니다.

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


텍스트 또는 혼합인 경우:

=INDEX(FILTERXML("<a><b>"&SUBSTITUTE(A1,",","</b><b>")&"</b></a>","//b"),MODE.SNGL(MATCH(FILTERXML("<a><b>"&SUBSTITUTE(A1,",","</b><b>")&"</b></a>","//b"),FILTERXML("<a><b>"&SUBSTITUTE(A1,",","</b><b>")&"</b></a>","//b"),0)))

이번에는 Match를 사용하여 숫자 배열을 반환합니다(첫 번째 일치 항목과 일치하는 경우 아래의 경우 1,2,2). 그런 다음 INDEX에 MODE_SNGL반환합니다 .2여기에 이미지 설명을 입력하세요

답변2

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

Public Function splitt(s As String) As Variant
    Dim mx As Long, i As Long, j As Long, mxkp As Long
    arr = Split(s, ", ")
    mx = 0
    mxkp = 0
    splitt = arr(0)
    For i = 0 To UBound(arr)
        v = arr(i)
        mx = 0
        For j = 1 To UBound(arr)
            If v = arr(j) Then mx = mx + 1
        Next j
        If mx > mxkp Then
            mxkp = mx
            splitt = v
        End If
    Next i
End Function

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

관련 정보