400 種類以上のアイテムを含む Excel リスト内の出現回数をカウントします

400 種類以上のアイテムを含む Excel リスト内の出現回数をカウントします

各項目の出現回数をカウントしたい約 5,000 行のリストがあります。

このリストには約 300 ~ 400 個の異なる項目が含まれています。

300以上のユニークな数式を入力する代わりに、

=COUNTIF(A1:A5000,"A")
=COUNTIF(A1:A5000,"B")
=COUNTIF(A1:A5000,"C")
=COUNTIF(A1:A5000,"D")
=COUNTIF(A1:A5000,"E")
ETC to 300...

何らかの強化された式を使用してこの目標を達成する方法はありますか?

以下は、私が達成しようとしていることを示しているため、以前に投稿された質問から借用したリストの例です。ただし、私の場合は、A、B、C、D、E だけでなく、300 〜 400 の異なる項目があります。

「次のようなアイテムのリストがあります:」

A
B
C
A
A
B
D
E
A

「ここで、各項目の出現回数をカウントします。結果は次のようになります。」

A 4
B 2
C 1
D 1
E 1

元の質問を投稿してくれた RoflcoptrException に感謝します。

答え1

簡単な方法としては、値をテキスト ファイル (たとえば ) にエクスポートし、同じフォルダーでf.txt次のスクリプトを実行することです。.bat

@echo off
setlocal

rem Accumulate each occurrence in its corresponding array element
for /F %%a in (f.txt) do set /A "[%%a]+=1"

rem Show the result
for /F %%a in ('set [') do echo %%a

サンプル データで実行すると、次の結果が返されます。

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

答え2

数式ではなく、VBA Macroさまざまな項目の発生回数をカウントする最も速い方法を提案したいと思います。

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

使い方:

  • カウントする項目の一意のリストを作成するには、セル内の配列 (CSE) 数式を使用しますC68

    {=IFERROR(INDEX($A$68:$A$78, MATCH(0,COUNTIF($C$67:C67, $A$68:$A$78), 0)),"")}
    
  • フォーミュラを仕上げるCtrl+Shift+Enter&記入してください。

  • どちらかを押すAlt+F11またはRシートのTabをクリックしてコードを表示します。

  • VBエディタウィンドウでnsertコマンドクリックオドル。

  • オピ &このコードを使用します。

    Public Function CountString(SearchFor As String, InRange As Range) As Long
    
      Dim wbcs As Long, rng As Range, addr As String
       For Each s In Worksheets
    
    addr = InRange.Address
    Set rng = s.Range(addr)
    
    wbcs = wbcs + Application.WorksheetFunction.CountIf(rng, "*" & SearchFor & "*")
     Next s
     CountString = wbcs
    
     End Function
    
  • ワークブックをマクロ有効 (.xlsm) として保存します。

  • セルに次の数式を入力してD68、下方向に塗りつぶします。

=CountString($C68,A$68:A$78)

  • 複数の列の出現回数をカウントするには、次のような数式を使用できます。

=CountString($C68,A:C)

必要に応じて数式内のセル参照を調整します。

関連情報