
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件)
- 最新から表示
- 回答順に表示
No.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

No.2
- 回答日時:
こんにちは
スピル機能が使えれば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)))
の式を入力して、下方にフィルコピーしてあります。

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでフィルタ後の条件付...
-
PowerPointで表の1つの列だけ...
-
エクセルで二つの数字の小さい...
-
エクセル(勝手に太字になる)
-
2つのエクセルのデータを同じよ...
-
エクセルの表から正の数、負の...
-
エクセルの項目軸を左寄せにしたい
-
エクセルで最初のスペースまで...
-
EXCELで 一桁の数値を二桁に
-
【エクセルの並び替え】末尾の...
-
エクセルで、列の空欄に隣の列...
-
Excel関数(通常はA列優先で、...
-
EXCELで cuontifやsubtot...
-
エクセルで文字が混じった数字...
-
VBAでセル入力の数式に変数を用...
-
エクセルのセル内の文字の一部...
-
Excel VBAで不一致なら空白セル...
-
お店に入るために行列に並んで...
-
【excelVBA】Findメソッドで検...
-
50人を数回、グループ分けする...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで二つの数字の小さい...
-
PowerPointで表の1つの列だけ...
-
2つのエクセルのデータを同じよ...
-
Excelで半角の文字を含むセルを...
-
EXCELで 一桁の数値を二桁に
-
エクセル(勝手に太字になる)
-
エクセル 文字数 多い順 並...
-
エクセルで最初のスペースまで...
-
オートフィルターをかけ、#N/A...
-
エクセル 同じ数字を他の列に自...
-
エクセル 同じ値を探して隣の...
-
「B列が日曜の場合」C列に/...
-
エクセルで文字が混じった数字...
-
Excel、市から登録している住所...
-
エクセルの項目軸を左寄せにしたい
-
Excel 文字列を結合するときに...
-
エクセルの表から正の数、負の...
-
【VBA】特定列に文字が入ってい...
-
エクセルで、列の空欄に隣の列...
-
オートフィルターの絞込みをし...
おすすめ情報