お世話になります。
エクセルで図のような買物履歴の表があるとします。
表のうち、一度に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.2
- 回答日時:
1.範囲 A1:C9 を選択
2.[数式]→[定義された名前]→[選択範囲から作成]を実行
3.“上端列”だけにチェックを残して[OK]をツン
此処からは添付図参照
4.セル F3 に次式を入力して、此れを右にオートフィル
=SUMPRODUCT((性別=F2)*(金額>=E3)*1)
または、
セル F7 に次式を入力して、此れを右にオートフィル
=COUNTIFS(性別,F6,金額,">="&E7)
回答ありがとうございます。
ですが、この式はAを2件として数えています。
私が求めたい重複を除いた数値というのは、10,000円を超える購入履歴のあるAとCで2人です。
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.4
- 回答日時:
様々な条件にもよりますが、ピボットテーブルを作成してから考えてはいかが?
データの追加削除に対応するため、[Ctrl]+[F3]名前の定義
名前 桜
参照範囲 =$A$1:INDEX($C:$C,COUNTA($A:$A))
データ-ピボットテーブル
使用するデータの範囲
=桜
列フィールドに 性別
行フィールドに 人物
データフィールドに 代金(最大値にする)
様々な条件にもよるけど 平均や最小値なども可能です
添付図通りにできたら
=COUNTIF(G3:G6,">=10000")
条件部分は
=COUNTIF(G3:G6,">="&J1) のようにセル参照も可能です
データの変更があったらピボットテーブルで「!データの更新」します
なるほど、ピボットテーブルはほとんど使うことがありませんでしたが、これなら条件が変るごとに作業列を作るよりは、遥かに手軽に処理ができますね。
ただ、できれば関数だけで、セルも余り使わずに数値を求めたいのですが、難しいですかね
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
“重複するレコードは無視する”にチェック入れ
最後の「チェック入れ」がミソです!
お探しの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のチェックボックスの使い...
-
【関数】適切な文字数の数字を...
-
Excelのpivotについて質問です
-
Excel ピボットテーブルで日付...
-
LOOKUP関数を使えばいいのでし...
-
エクセル関数を教えてください
-
エクセルのセルに同じ大きさの...
-
UNIQUE関数が使えないバージョ...
-
excelの不要な行の削除ができな...
-
エクセルで「-0.0」と表示さ...
-
時間によってファイル名が変わ...
-
WPS OFFICEでの縦書きについて
-
エクセルの関数について教えて...
-
Aというブックの1というシート...
-
【マクロ】シート名を取得する...
-
VBA Private Sub Worksheet_Cha...
-
VBA、Excelのworkbook.open に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
[関数得意な方]教えて下さい・...
-
Excelにてある膨大なデータを管...
-
[関数について]わかる方教えて...
-
Excel初心者です。 詳しい方、...
-
excelの不要な行の削除ができな...
-
エクセル関数に詳しい方教えて...
-
INDIRECTを使わず excelで複数...
-
[オートフィルタ]で抽出された...
-
エクセルの神よ、ご回答を! エ...
-
エクセル関数に詳しい方、教え...
-
各ページの1番上の表示について
-
Excelで写真のような表を作った...
-
エクセルで不等号記号(≠)が上に...
-
数学 Tan(θ)-1/Cos(θ)について...
-
Excel 2019 は、SPILL機能があ...
-
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関数を使えるか否かという違いがあったのですね。