
お世話になります。
エクセルで図のような買物履歴の表があるとします。
表のうち、一度に10,000円以上の買物をしたことがある男性の人数を、重複を除いて数えたいのですが、何か良い方法はないでしょうか?
作業列を使えるならば、D2のセルに
=AND(B2="男",C2>=10000,COUNTIFS(A$2:A2,A2,B$2:B2,"男",C$2:C2,">="&10000)=1)
として、それをD9までコピーをして、TRUEの数を数えればよいわけですが、実際には様々な条件で件数を数える必要があるため、いちいち作業列を追加することはできない状況にあります。
SUMPRODUCT関数を使おうにも、
=SUMPRODUCT((B2:B9="男")*(C2:C9>=10000)/COUNTIFS(A2:A9,A2:A9,A2:A9,">="&10000))
とすると、0で割ることになってしまい、#DIV/0!となってしまいます。
なにかよい方法はないでしょうか?
できれば、VBAも使わないで関数だけで求められると助かります。

A 回答 (5件)
- 最新から表示
- 回答順に表示

No.5
- 回答日時:
[No.2お礼]へのコメント、
タイトルにも明記されていた「重複を除いて」を見落としていました。
「作業列を使わず」ともあるので、私にはそれを満足する能力はナシです。
ただし、何処でも好い、遠い彼方の僅か2個のセルだけのご使用を許可いただけるなら、次のように[フィルタオプションの設定]を利用して、チョー簡単に実現できそうです。ご一考ください。
1.範囲 A1:B1 を[コピー]してセル E1 に[貼り付け]
2.何処か邪魔にならない場所(此処では 範囲 H1:H2)の
上のセル H1 は空白のままに放置して、下のセル H2
に式 =C2>=10000 を入力
3.次の条件で[フィルタオプションの設定]を実行した
結果を添付図に示しました。
抽出先→ 指定した範囲
リスト範囲→ $A$1:$C$9
検索条件範囲→ $H$1:$H$2
抽出範囲→ $E$1:$F$1
“重複するレコードは無視する”にチェック入れ
最後の「チェック入れ」がミソです!

No.4
- 回答日時:
様々な条件にもよりますが、ピボットテーブルを作成してから考えてはいかが?
データの追加削除に対応するため、[Ctrl]+[F3]名前の定義
名前 桜
参照範囲 =$A$1:INDEX($C:$C,COUNTA($A:$A))
データ-ピボットテーブル
使用するデータの範囲
=桜
列フィールドに 性別
行フィールドに 人物
データフィールドに 代金(最大値にする)
様々な条件にもよるけど 平均や最小値なども可能です
添付図通りにできたら
=COUNTIF(G3:G6,">=10000")
条件部分は
=COUNTIF(G3:G6,">="&J1) のようにセル参照も可能です
データの変更があったらピボットテーブルで「!データの更新」します

なるほど、ピボットテーブルはほとんど使うことがありませんでしたが、これなら条件が変るごとに作業列を作るよりは、遥かに手軽に処理ができますね。
ただ、できれば関数だけで、セルも余り使わずに数値を求めたいのですが、難しいですかね

No.3
- 回答日時:
[No.2]への補足、
ステップ4に提示した2つの式は、それぞれ次式でもOKです。
F3: =SUMPRODUCT((INDIRECT($B1)=F2)*(INDIRECT($C1)>=E3)*1)
F7: =COUNTIFS(INDIRECT($B1),F6,INDIRECT($C1),">="&E7)

No.2
- 回答日時:
1.範囲 A1:C9 を選択
2.[数式]→[定義された名前]→[選択範囲から作成]を実行
3.“上端列”だけにチェックを残して[OK]をツン
此処からは添付図参照
4.セル F3 に次式を入力して、此れを右にオートフィル
=SUMPRODUCT((性別=F2)*(金額>=E3)*1)
または、
セル F7 に次式を入力して、此れを右にオートフィル
=COUNTIFS(性別,F6,金額,">="&E7)

回答ありがとうございます。
ですが、この式はAを2件として数えています。
私が求めたい重複を除いた数値というのは、10,000円を超える購入履歴のあるAとCで2人です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【画像あり】オートフィルター...
-
Office2021のエクセルで米国株...
-
エクセルのVBAで集計をしたい
-
vba テキストボックスとリフト...
-
【マクロ】元データと同じお客...
-
【マクロ】【相談】Excelブック...
-
【マクロ】実行時エラー '424':...
-
他のシートの検索
-
【マクロ】【配列】3つのシー...
-
【マクロ】数式を入力したい。...
-
【マクロ】左のブックと右のブ...
-
【関数】3つのセルの中で最新...
-
LibreOffice Clalc(またはエク...
-
エクセルシートの見出しの文字...
-
【マクロ】excelファイルを開く...
-
【マクロ】【画像あり】❶ブック...
-
空白のはずがSUBTOTAL関数でカ...
-
【関数】同じ関数なのに、エラ...
-
【マクロ】【画像あり】4つの...
-
エクセルの複雑なシフト表から...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【マクロ】元データと同じお客...
-
エクセルの関数について
-
【画像あり】オートフィルター...
-
エクセルのVBAで集計をしたい
-
エクセルのリストについて
-
【マクロ】数式を入力したい。...
-
【マクロ】【相談】Excelブック...
-
Office2021のエクセルで米国株...
-
【マクロ】実行時エラー '424':...
-
他のシートの検索
-
エクセルの複雑なシフト表から...
-
【マクロ】【配列】3つのシー...
-
vba テキストボックスとリフト...
-
【マクロ】左のブックと右のブ...
-
【マクロ】変数に入れるコード...
-
エクセルシートの見出しの文字...
-
【マクロ】別ファイルへマクロ...
-
【関数】同じ関数なのに、エラ...
-
Amazonでマイクロソフトオフィ...
-
ページが変なふうに切れる
おすすめ情報
皆さん色々な解法をありがとうございます。
私自身も質問してからいろいろと試行したところ、SUM関数の配列数式とIF関数を組み合わせることで、欲しい値を導くことができました。
式は
{=SUM((B2:B9="男")*(C2:C9>=10000)/IF(COUNTIFS(A2:A9,A2:A9,B2:B9,"男",C2:C9,">="&10000),COUNTIFS(A2:A9,A2:A9,B2:B9,"男",C2:C9,">="&10000),1))}
です。
分母が0の時は1にすることで、条件を満たさない行の計算を0/0から0/1にして、エラーが出ないようにしました。
因みにSUMPRODUCT関数で同じような式をたてても、うまく行きませんでした。
SUMPRODUCT関数とSUM関数の配列数式は同じようなものだと思っていたのですが、IF関数を使えるか否かという違いがあったのですね。