[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『複数条件に当てはまる文字列を重複は1として数える』(初心者)
よろしくお願いいたします。
A列に日付、B列にグループ分けの項目があり
C〜E列に文字列(行によって3セル全て埋まっているものもあれば空白もある)
の表があるとして
同じ日付&グループの組み合わせごとに文字列の入ったセルの数を数えたいです。
その時空白は数えず、重複するものは1つとしたいです。
1月1日 Aグルーブ いちご みかん
1月1日 Bグループ ぶどう
1月1日 Aグループ みかん ぶどう すいか
1月1日 Cグループ いちご すいか
上記の表だったら
1月1日 Aグループ 4(個)
1月1日 Bグループ 1
1月1日Cグループ 2
のような計算をしたいです。(関数で出すのは数えた数字の部分だけ大丈夫です)
もしくは
1月1日 Aグループ いちご みかん ぶどう すいか
1月1日 Bグループ ぶどう
1月1日Cグループ いちご すいか
上記のように抜き出す形でもいいのですが、文字列を指定せず
複数条件で重複しない値を抜き出す方法が分かりませんでした。
説明が下手で分かりにくかったらすみません。
あまりExcelが得意ではなく、教えていただけますと幸いです。
よろしくお願いいたします。
< 使用 Excel:unknown、使用 OS:Windows10 >
Excelのバージョンを書いた方が良いです。 バージョンによって使える関数が異なるので。 ここで言うバージョンとは、Excel2019とかMicrosoft365とかのことです。
お持ちのExcelがPowerQueryを使えるバージョンだとしたら、 私なら関数ではなく、PowerQueryを使用して、 列のピボット解除、重複行の削除をしてから、ピボットテーブルで集計すると思います。 結果としては、個数を数える方です。 (にわか) 2025/01/20(月) 22:14:36
バージョンがわかれば、関数での回答も付くと思いますし、 Microsoft365なら、関数だけで解決できるとも思います。 ただ私には出来ませんので、関数での解決は他の方の回答をお待ちください。 ご自身でトライされるなら、UNIQUE関数とかFILTER関数などが使えるかもしれません。 (にわか) 2025/01/21(火) 12:39:56
=LET(x,A1:E500,a,INDEX(x,,1),b,INDEX(x,,2),c,DROP(x,,2), F,LAMBDA(i,[j],TOCOL(IF(i=i,IF(i="",NA(),IF(ISOMITTED(j),i,j))),3)), d,HSTACK(F(c,a),F(c,b),F(c)),e,UNIQUE(d), GROUPBY(DROP(e,,-1),TAKE(e,,-1),COUNTA,,0)) →左端の列の書式を日付に または =LET(x,A1:E500,a,INDEX(x,,1),b,INDEX(x,,2),c,DROP(x,,2), F,LAMBDA(i,[j],TOCOL(IF(i=i,IF(i="",NA(),IF(ISOMITTED(j),i,j))),3)), d,HSTACK(F(c,a),F(c,b),F(c)),e,UNIQUE(d), PIVOTBY(DROP(e,,-1),TAKE(e,,-1),TAKE(e,,-1),COUNTA,,0))
(んなっと) 2025/01/21(火) 16:47:45
GROUPBYが使えない環境のときは、さらに式が長くなります。 (んなっと) 2025/01/21(火) 16:50:30
挑戦してみました
=LAMBDA(rng,LET( x,CHOOSECOLS(rng,1,2), ux,UNIQUE(x), n,BYROW(DROP(rng,,2),COUNTA), HSTACK(ux,BYROW(ux,LAMBDA(r,SUM(FILTER(n,BYROW(x=r,LAMBDA(c,AND(c)))))))) ))(A1:E4)
ここで rng :表全体 x :表の1列目と2列目 DROP(rng,,2) :表の3列目以降 n :表の3列目以降の各行の個数
最新バージョンだと A1:E4 じゃなくて A.:.E でもできそう (´・ω・`) 2025/01/21(火) 21:34:14
GROUPBY関数が使える場合、これではどうでしょう =LAMBDA(rng,GROUPBY(CHOOSECOLS(rng,1,2),BYROW(DROP(rng,,2),COUNTA),SUM))(A1:E4) (´・ω・`) 2025/01/21(火) 22:05:17
重複削除して数えるのが面倒ですね。 =LET(x,A1:E500,a,TAKE(x,,2),b,UNIQUE(FILTER(a,TAKE(a,,1)<>"")),c,DROP(x,,2), d,BYROW(b,LAMBDA(r,ROWS(UNIQUE(TOCOL(FILTER(c,BYROW(a,LAMBDA(i,AND(r=i)))),3))))),HSTACK(b,d)) (んなっと) 2025/01/22(水) 00:02:10
あ、そうですね 私のは重複削除してません。忘れてください。 (´・ω・`) 2025/01/22(水) 06:08:13
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.