- 締切済み
エクセルで複数条件に当てはまるセルの数を数える方法ありませんでしょうか?
Excel2002での質問です。 ご覧頂いた皆様で、方法がわかる方がいらっしゃいましたら回答お願い致します。 ------------------------- 1 A B 2 期日A ○ 3 期日B 4 A店 15 5 B店 20 6 C店 * 7 担当A1 ○ 8 担当B2 × 9 A価格 10 B価格 ○ 11 C価格 - ------------------------- というリストから、 a. A列に「A」の文字が含まれ(期日A・A店・担当A1・A価格)、B列が「○」である件数(この場合、2) b. A列は上記と同様で、B列に何かが入っている件数(この場合、3) を求めたいのです。 できれば、求める数式以外の「計算用のスペース」は作りたくありません。 また、 c. リストが下に伸びる事を考慮した範囲選択の方法 も、何か上手い手段はないかと考えています。 webサイトを検索した所、 SUMPRODUCT関数を使うのが正解かな? 検索のワイルドカードのような要領で、*A* と出来ないかな? 「何かが入っている」…COUNTAで数えるといい? と言った想像をしていまして、自分でも数式をいじって試したりしましたが上手く結果が得られません。 何かいい手段はありませんでしょうか?ご助力をお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17070)
例データ 期日A ○ 期日B A店 15 B店 20 C店 * 担当A1 ○ 担当B2 × A価格 B価格 ○ C価格 - =SUM(IF((NOT(ISERROR(FIND("A",A1:A10))))*(B1:B10="○"),1,0)) と入れて、SHIFT,CTRL,ENTERを同時に押す。 ーー SUMPRODUCTで表現すると =SUMPRODUCT((NOT(ISERROR(FIND("A",A1:A10)))*(B1:B10="○")*1)) 結果 2 ーー B =SUM(IF((NOT(ISERROR(FIND("A",A1:A10))))*(B1:B10<>""),1,0)) と入れて、SHIFT,CTRL,ENTERを同時に押す。 SUMPRODUCTで表現すると =SUMPRODUCT((NOT(ISERROR(FIND("A",A1:A10)))*(B1:B10<>"")*1)) 結果 3 ーーー c 条件で何が変わるか、質問では不明だが、条件が全く同じで 業だけ増えるのなら、あ1:A10のA10などをA1:A100などと増やせばよい。初めから余分に指定しておいてもエラーにはならない。 A->Bや○をxとかになる場合は、AやBをどう配置するかで式が変わる。 ーー 蛇足で こういうエクセル表の設計は、扱いにくい。そういうことを考えずにやっているのはエクセルをあまり使ったことが無いのではないかと思う。 VBAでもやらないと、式が難しくなって考えられなくなる恐れあり。 項目は横(列)方向、同類データを下(行)方向へ積み重ねるのがやりやすい。
- mu2011
- ベストアンサー率38% (1910/4994)
次の方法は如何でしょうか。 行範囲は仮に2:100としていますので調整して下さい。 a.=SUMPRODUCT((LEN(A2:A100)<>LEN(SUBSTITUTE(A2:A100,"A","")))*(B2:B100="○")) b.=SUMPRODUCT((LEN(A2:A100)<>LEN(SUBSTITUTE(A2:A100,"A","")))*(B2:B100<>""))
お礼
回答ありがとうございました。 無事に求めるものが得られました。 質問投稿後に、条件に変更があったのですが 考え方を少し理解できたお陰で対応することができました。
- maron--5
- ベストアンサー率36% (321/877)
◆下記の条件下であれば 1)A列のデータは途中に空白がない 2)A1からデータがある場合 aの式 =SUMPRODUCT(ISNUMBER(FIND("A",OFFSET(A1,,,COUNTA(A:A))))*(OFFSET(B1,,,COUNTA(A:A),)="○")) bの式 =SUMPRODUCT(ISNUMBER(FIND("A",OFFSET(A1,,,COUNTA(A:A))))*(OFFSET(B1,,,COUNTA(A:A),)<>"")) ★データがA2からある場合 aの式 =SUMPRODUCT(ISNUMBER(FIND("A",OFFSET(A2,,,COUNTA(A:A)-1)))*(OFFSET(B2,,,COUNTA(A:A)-1,)="○")) bの式 =SUMPRODUCT(ISNUMBER(FIND("A",OFFSET(A2,,,COUNTA(A:A)-1)))*(OFFSET(B2,,,COUNTA(A:A)-1,)<>""))
お礼
早速の回答ありがとうございました。 求めていた結果が得られ、大変助かりました。
お礼
今回は業務上で引継ぎを受けたリストでして、 自分でも、なんと扱いにくい作りだと・・・うんざりしていました。 しかも自分のほかに使うのは 「このブックを開くための最低限のPC操作がやっと」という方々なので 独断で体裁を変える訳にもいかず困っておりました。 素晴らしい解決策をありがとうございました。