[[20260303085434]] 『カウント関数の複合技?』(あい) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『カウント関数の複合技?』(あい)

年間の一覧表があるのですが、月×対象項目のクロス関数を作成したいと考えています。

表のイメージは販売実績表のイメージです。

〈イメージ〉
A列…販売日(1年間の特定日が記載)
B〜D列…特定のキーワードが記載
E〜G列…各列ごとの項目において該当する場合は「●」が記載

〈やりたいこと〉
?@A列特定月におけるB〜D列の特定キーワードが記載されている件数のカウント
 B〜D列には、それぞれ各列ごと選択肢の中からキーワードを選択する。
 ⇒E列…都道府県を選択
例)4月(A列)に東京都(B列)に該当する件数のカウントを行う。

?AA列特定月におけるE〜G列の「●」が記載されている件数のカウント
 E〜G列には、各列に項目があり、該当する場合各行に「●」が記載されるイメージ 
 ⇒E列以降 販売物の内容を列ごとに記載
例)4月(A列)に(E列)に「●」が記載されている件数のみカウント

期間×カウントの合わせ技になるかな、と思いつつ適切な関数が分からずご教示頂けると嬉しいです。

< 使用 Excel:Microsoft365、使用 OS:Windows11 >


 全然表のイメージがつかめないです
 集計方法も説明が良く理解できません

 嘘データでいいので表で例を示して、集計方法の具体例を示せませんか
(´・ω・`) 2026/03/03(火) 10:19:41

例えばですが下記のようなイメージになります。
売上表において各月ごとの地域とその内訳の件数をカウントしていきたいです。
ーーーーーーーーーーーー
  A列  B列  C列(りんご) D列(みかん) E列(いちご) 
1 1/10 東京   ●
2 1/20 大阪
3 2/10 東京   ●       ●     ●
4 3/10 東京           ●     ●
5 4/20 大阪           ●
ーーーーーーーーーーーー
本来は行数はもっと膨大にありますが、イメージとして限定的に記載しています。

このような一覧表から、時期(A列)とB列以降のクロス集計カウントが実施したいです。
(1)各月の東京の件数
(2)各月のりんごの件数

こちらでイメージ分かりますでしょうか?

(あい) 2026/03/03(火) 10:44:27


 あまりよく分かりませんが、ピボットテーブルを使えばできそうな気がします。
 ピボットテーブルでチャレンジしてみてください
(´・ω・`) 2026/03/03(火) 10:54:02

集計表の様式が解らないので次のように想定した式です。

          H      I         J        K
 1      地区   東京
 2       月    りんご   みかん   いちご
 3       1
 4       2
 5       3
 6       4

セル I3:=SUMPRODUCT(($B$2:$B$6=$I$1)*(MONTH($A$2:$A$6)=$H3)*(C$2:C$6="●"))

この式を、右と下にコピーします。
セルI1を「大阪 → ??」と変化させて地区を指定します。

なお、当方はExcel2010ですのでMicrosoft365では新しい便利な関数があるのかも
知れません。
(メジロ) 2026/03/03(火) 12:07:51


 最近groupby関数を知ったので勉強がてら

 R4:=LET(_date,TEXT(A.:.A,"m月"),
     _keys,B.:.D,
     _vals,E.:.G,
     _func,COUNTA,
  GROUPBY(HSTACK(_date,_keys),_vals,_func,3)
)

 表は適当に生成
    |   [A]| [B]| [C]| [D]| [E]| [F]| [G]|
 [2]|販売日|key1|key2|key3|chk1|chk2|chk3|
 [3]| 02/05|  く|   L|  ヅ|    |    |    |
 [4]| 05/02|  わ|   K|  ギ|    |    |  ●|
 [5]| 10/23|  ゐ|   F|  ワ|  ●|    |    |
 [6]| 09/12|  む|   C|  ド|  ●|    |  ●|
 [7]| 01/09|  ば|   W|  ビ|    |  ●|    |

 A3:=TEXT(DATE(2026,1,RANDARRAY(1000,1,1,366,1)),"mm/dd")
 E3:=IF(RANDARRAY(1000,3,0,1,1),"●","")
 B3~D3:=UNICHAR(RANDARRAY(1000,1,unicode(”あ"),unicode("ん"),1))  あ〜ん A〜Z ア〜ン

 ↓集計結果(1000行しか作ってないので 4key だと全然一致しなかった)
    |   [R]| [S]| [T]| [U]| [V]| [W]| [X]|
 [4]|販売日|key1|key2|key3|chk1|chk2|chk3|
 [5]|  10月|  あ|   T|  マ|   1|   1|   1|
 [6]|  10月|  い|   U|  ヰ|   1|   1|   1|
 [7]|  10月|  う|   D|  フ|   1|   1|   1|
 [8]|  10月|  う|   K|  ビ|   1|   1|   1|

(ちくわ) 2026/03/03(火) 13:26:13


私もピボットテーブルが手軽でよいと思います。

     A           B        C       D       E
 1  日付 	場所	りんご	みかん	いちご
 2 1月10日	東京	  ●		
 3 1月20日	大阪			
 4 2月10日	東京	  ●	  ●	  ●
 5 3月10日	東京		  ●	  ●
 6 4月20日	大阪		  ●

元表に上表の様に見出し行を挿入し、表を選択した状態で、
メニューの挿入>ピボットテーブル>OKボタン
右ペインに表示されたピボットテーブルのフィールド下部にある各ボックスに、
以下のフィールドをドラッグ&ドロップ。

(1)各月の東京の件数
行:日付(挿入後に表示される「月(日付)」だけチェック)
列:場所
値:場所
※東京だけ絞り込みたければ列ラベルで東京のみチェック

(2)各月のりんごの件数
行:日付(挿入後に表示される「月(日付)」だけチェック)
値:りんご(複数種表示したいなら続けて値ボックスにドラッグ)

任意のセル範囲にピボットテーブルを配置したい場合は、
ピボットテーブル挿入時に「既存のワークシート」にチェックをいれて、
場所ボックスでセル範囲を選択すれば可能です。

(猫目石) 2026/03/03(火) 21:10:12


 ちくわさんへ:
 GROUPBY関数の研究材料の提供ありがとうございました。

 > ↓集計結果(1000行しか作ってないので 4key だと全然一致しなかった)
 とのことですが、個数の話ではなさそうに思います。

 まず、これはテストデータの作り方に依存した話ですが、
 それだとセルには、""であってもそれを返す数式が入っているので、
 COUNTAを作用させると常に1が返ることに注意が必要かと思います。

 それを修正したとしても単純にCOUNTAを渡すのでは機能しないと思います。(実験しました)

 【追記】
 研究した結果、
    _func,LAMBDA(x, SUM(--(x<>""))),
 という評価関数を使うと文字列でも動作することが分かりました。   

 そもそも●なんてのじゃなくて、1とかを使うべきかなと思います。
 そうすれば単純に関数としてSUMを指定すればよいと思います。

 -------
 猫目石さんへ:

 >(1)各月の東京の件数
 のほうですが、それだと
 東京3、大阪2 といわば行数をカウントすることになり、
 たぶん想定結果と異なるのではないかと思います。

 私なら、PowerQueryでunpivotを実行して、いったん
 販売日      支店    属性    値
 2026/1/10   東京    りんご  1
 2026/2/10   東京    りんご  1
 2026/2/10   東京    みかん  1
 2026/2/10   東京    いちご  1
 ・・(以下略)
 のような形式に変換してからピボットテーブルを使うかもしれません。

 # 質問者さんには、フォーマットを含めて想定結果も提示されると良かったと思います。
 # たぶんご自身の思考の整理になるはずですし、
 # お互いの情報共有やテスト検証に役立つことでしょう。
(xyz) 2026/03/04(水) 07:12:34

 xyzさんへ
 >それだとセルには、""であってもそれを返す数式が入っているので、
 countA()が""を数えることをすっかり忘れておりました。

 ""に対してcountA()にしてたのはただのミスなんですが、
 サンプルをテキスト化して""を削除しても
 うまくいきませんでした。

 全然知りませんでしたが、
 そもそも配列をcountA()に渡すとnullもカウントするんですね(古い関数は全部?)

     |[AE]|[AF]|[AG]|                           [AH]|
  [7]|    |    |    |                               |
  [8]|TRUE|TRUE|TRUE|              =ISBLANK(AE7:AG7)|
  [9]|   0|    |    |               =COUNTA(AE7:AG7)|
 [10]|   0|    |    |      =COUNTA(LET(a,AE7:AG7,a))|
 [11]|   0|    |    |    =COUNTA(INDEX(AE7:AG7,1,0))|
 [12]|   3|    |    | =COUNTA(CHOOSEROWS(AE6:AG6,1))|
 [13]|TRUE|TRUE|TRUE|=ISBLANK(CHOOSEROWS(AE6:AG6,1))|
(ちくわ) 2026/03/04(水) 11:34:46

 個人的な印象ですが、配列の中で、空白セルは 0 になって渡っている感じですね

 なので、 xyzさんの指摘のとおり
 =GROUPBY(A1:A10,B1:B10,COUNTA)    は上手くいかなくて
 =GROUPBY(A1:A10,N(B1:B10<>""),SUM)  にしないと上手くいかないようです
(´・ω・`) 2026/03/04(水) 12:35:01

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.