『カウント関数の複合技?』(あい)
年間の一覧表があるのですが、月×対象項目のクロス関数を作成したいと考えています。
表のイメージは販売実績表のイメージです。
〈イメージ〉
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列以降のクロス集計カウントが実施したいです。
(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.