お世話になります。
エクセルで図のような買物履歴の表があるとします。
表のうち、一度に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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel(エクセル)でフィルター抽出後、非表示の行を計算しないで、合計を算出する方法 【内容】 添 4 2023/01/30 17:17
- Excel(エクセル) フォルダ内のエクセルファイルを開かずにデータ採取する関数式 2 2022/12/22 22:15
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 3 2023/02/28 01:13
- Excel(エクセル) Excelでの複数条件のカウントについて 1 2022/09/25 07:40
- Excel(エクセル) Excel2019、2021の日付、曜日の表示について 2 2022/11/29 15:01
- Excel(エクセル) エクセルの条件付き書式 3 2022/05/08 03:17
- Visual Basic(VBA) A列にある値をB列・C列にVBAで切り出し 3 2022/04/09 19:20
- Excel(エクセル) ExcelのIF関数について 4 2023/05/24 12:54
- Excel(エクセル) エクセルで条件付き書式を使わずにセルの文字の色を変える方法を教えて下さい 8 2023/07/28 01:15
- Excel(エクセル) エクセル VBA セルの結合 2 2022/09/07 11:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelはなんで先頭の0を消すん...
-
Excel元に戻す方法を教えてくだ...
-
Excelが固まってしまった。
-
エクセルで特定の範囲内から小...
-
Excel 2019 のピボットテーブル...
-
テレビを購入してYouTubeのボタ...
-
Excel2013のF6キー操作について
-
西暦や和暦の表示をyyyymmdd表...
-
【関数】スペースがいくつ入っ...
-
【Microsoft Office Excel Comp...
-
Excelのオートフィル
-
別シートからの文字を変更
-
Excelのセルを飛ばして入力する
-
MOS365 Excel Expert / Excel R...
-
エクセルで指定した日付、店舗...
-
4つのパターンを表示するEXACT...
-
スマートな関数を教えて下さい。
-
【Excel】セル内の時間帯が特定...
-
Excel初心者です。 詳しい方、...
-
Excelで全角を半角にしたいので...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ファイル内にある数字の出現回...
-
Excel関数の先頭に「@」が入っ...
-
エクセルの気味悪い不思議
-
Excel VBAで、実行時にsheet上...
-
表示されている人数だけを数え...
-
他人が作ったマクロの理解
-
Excelの関数について質問です。
-
Excel 集計表
-
エクセル 日時の計算式について
-
Excelの関数に関して質問です。...
-
エクセル:セル内の文字列の下...
-
絞り込み検索
-
エクセルの関数で
-
エクセルの書式設定について教...
-
余分なEXCELファイルに印刷され...
-
VBA 同一シート内での転記の仕方
-
長期休みの関数はありますか
-
Excelの空のセル
-
エクセルで入力してある文を別...
-
Excelのマクロで、セルを結合し...
おすすめ情報
皆さん色々な解法をありがとうございます。
私自身も質問してからいろいろと試行したところ、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関数を使えるか否かという違いがあったのですね。