Apple IDログイン機能メンテナンスのお知らせ

A B C
1 無料    埼玉   田中
2 有料    埼玉   田中     
3 半額    埼玉   田中
4 無料    埼玉   空欄
5 無料    埼玉   鈴木
6 有料    埼玉   鈴木
7 無料    東京   田中
8 無料    東京   鈴木
9 半額    東京   空欄
10 割増    東京   田中

わかりずらくて申し訳ありません。A列が無料などの項目、B列が都道府県、C列が名前です。
カウントしたいのは、A列が無料若しくは有料の各都道府県の実人数(C列)です。
埼玉の有料若しくは無料なのが5個あって、田中2回、鈴木で2回、空欄1ですが、同一人物の場合は何回でも1とカウントしたいのと、C列が空欄の場合はカウントしない。
なので、埼玉の場合重複は1、空欄は0で考えると2になるようにしたいです。

A列B列は決まった文字が入るのですが、C列はどんな名前が入るかはわかっていません。
こういった質問をするのが初めてなのとあまり知識がないので申し訳ごさいませんが、アドバイス頂けると助かります。

古いエクセルなのでUNIQUEは使えないです。

A 回答 (3件)

>古いエクセルなのでUNIQUEは使えないです。


というご説明なので、バージョン2019以前だと推測しました。
既に、No.2さんによって、解決する数式が示されています。
No.2さんの数式は作業列を使用した解決方法ですが、場合によっては、作業列が使用できないというケースもあるかも知れません。
作業列を使用した方が、圧倒的に簡潔な数式になるのですが、【作業列が使用できない】という条件の場合はやりようがないので、作業列を使用しない方法を考えてみました。
添付画像をご覧ください。G列にユニークな都道府県名を抽出します。そのために、G2セルに

=IFERROR(INDEX($B$2:$B$11,AGGREGATE(15,6,ROW($A$1:$A$10)/(MATCH($B$2:$B$11,$B$2:$B$11,0)=ROW($A$1:$A$10)),ROW(A1))),"")

という数式を入れて下方向へフィルコピーしています。
さらにH2セルに

=SUMPRODUCT((($A$2:$A$11="有料")+($A$2:$A$11="無料"))*($B$2:$B$11=G2)*($C$2:$C$11<>"")/((LEN(CONCAT(REPT("○",($A$2:$A$11="無料")+($A$2:$A$11="有料"))&REPT("×",($A$2:$A$11<>"無料")*($A$2:$A$11<>"有料"))&$B$2:$B$11&$C$2:$C$11&REPT(" ",$C$2:$C$11="")))-LEN(SUBSTITUTE(CONCAT(REPT("○",($A$2:$A$11="無料")+($A$2:$A$11="有料"))&REPT("×",($A$2:$A$11<>"無料")*($A$2:$A$11<>"有料"))&$B$2:$B$11&$C$2:$C$11&REPT(" ",$C$2:$C$11="")),REPT("○",($A$2:$A$11="無料")+($A$2:$A$11="有料"))&REPT("×",($A$2:$A$11<>"無料")*($A$2:$A$11<>"有料"))&$B$2:$B$11&$C$2:$C$11&REPT(" ",$C$2:$C$11=""),"")))/LEN(REPT("○",($A$2:$A$11="無料")+($A$2:$A$11="有料"))&REPT("×",($A$2:$A$11<>"無料")*($A$2:$A$11<>"有料"))&$B$2:$B$11&$C$2:$C$11&REPT(" ",$C$2:$C$11=""))))

という、とてつもなく長い数式を入れて、こちらはCTRLキーとSHIFTキーを押しながらENTERキーを押して確定させて「配列数式」にします。
その上で、下方向へフィルコピーしています。
これで、バージョン2016、2019でも作業列なしで結果を表示することができます。

画像が見づらいので、別サイトにもアップしておきます。
https://gyazo.com/76b70bac463800bf80b94df251abf2d0
「重複や複数条件でのカウント教えて下さい。」の回答画像3
    • good
    • 0

こんにちは



スピル機能が使えればFILTERとUNIQUEで簡単に算出できますけれど、使えないという条件で、無理矢理関数でやってみました。
とはいえ、
>古いエクセルなのでUNIQUEは使えないです。
どれだけ古いのか不明なので、どこまでの関数が使えるのかがわかりませんが・・


作業列を用いた方が簡単なので、添付図ではD列(=どこでも良いです)を作業列にしてあります。

以下、添付図での関数例です。
1)D2セルに
=(C2<>"")*(SUMPRODUCT(((A$2:A2="無料")+(A$2:A2="有料")>0)*(B$2:B2=B2)*(C$2:C2=C2))=1)
の式を入力し、下方にフィルコピー。

2)F列に地域のリストを作成します
B列をコピペして、「データ」-「重複の削除」で一意のリストを作成できます。
関数でやるなら、F2セルに
=IFERROR(INDEX(B:B,AGGREGATE(15,6,ROW(B$2:B$999)/(COUNTIF(OFFSET($B$2,,,ROW(B$1:B$998)),B$2:B$999)=1),ROW(A1))),"")
を入力して、下方にフィルコピー。

3)G2セルに
=IF(F2="","",SUMPRODUCT(((A:A="無料")+(A:A="有料")>0)*(B:B=F2)*(D:D=1)))
の式を入力して、下方にフィルコピーしてあります。
「重複や複数条件でのカウント教えて下さい。」の回答画像2
    • good
    • 1

普通にピボットテーブルでできるように思いますが。


https://xn--pckua2a7gp15o89zb.com/journal/life/% …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A