Excel で 1 つのセル内の最も頻繁に発生する値を返すにはどうすればよいですか?

Excel で 1 つのセル内の最も頻繁に発生する値を返すにはどうすればよいですか?

カンマとスペースで区切られた長い数字のリストを含む単一のセルがあります。

いくつかの数字が重複していますが、どの数字が最も多く重複しているかを知りたいです。

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)。MODE_SNGL次に は を2INDEX に返します。 ここに画像の説明を入力してください

答え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

ここに画像の説明を入力してください

関連情報