なんでもエクセル(Nandemo Excel)

何でもエクセルでやってしまう そこのあなた。ようこそ

Power Query:行のグループ化 その2(個別の行数のカウント)

Excelで時々困るのが、「重複を省いて件数をカウントしたい」時。ダブっているものを1つとして計算したい時、ピボットテーブルでは単純に集計できない。

「田中太郎:3」、「鈴木一郎:2」になってくれないといけないのに、ピボットテーブルで集計すると個数をただカウントするだけになってしまう。

Microsoft365だったら数式で重複を省いてからカウントする手もあるにはある。

数式版(Microsoft365):
=LET(
    _unq,UNIQUE(テーブル1[氏名]),
    _byr,BYROW(_unq,LAMBDA(_a,
        ROWS(UNIQUE(FILTER(テーブル1,テーブル1[氏名]=_a)))
    )),
    VSTACK({"氏名","カウント"},HSTACK(_unq,_byr))
)

ただ他のバージョンだとやり方を間違えると(分母に COUNTIF/Sを入れて足すやつのこと。空白を除く処理も面倒)演算誤差が発生する。そうならないようにしようと思ったら配列計算になってしまう。対象が数値のみなら FREQUENCYでもできるけど……

ここはやはりクエリの出番だと思う。すんごい簡単だし。

まず例によって作成したテーブルからクエリを作成する。


[データ]→[テーブルまたは範囲から]

クエリができたら「氏名」列を指定してグループ化を実行する。


「氏名」列を選択して右クリック[グループ化]

新しい列名:カウント 操作:個別の行数のカウント →[OK]

これで完成。

これを指定のセル上に読み込めばおしまい。

nandemo-xl.hatenablog.com