![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
お世話になります。
エクセルで図のような買物履歴の表があるとします。
表のうち、一度に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も使わないで関数だけで求められると助かります。
![「エクセルで作業列を使わず特定の条件を満た」の質問画像](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/9/369514_568e8726e0634/M.png)
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
“重複するレコードは無視する”にチェック入れ
最後の「チェック入れ」がミソです!
![「エクセルで作業列を使わず特定の条件を満た」の回答画像5](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/e/298588_568fd73518b54/M.jpg)
No.4
- 回答日時:
様々な条件にもよりますが、ピボットテーブルを作成してから考えてはいかが?
データの追加削除に対応するため、[Ctrl]+[F3]名前の定義
名前 桜
参照範囲 =$A$1:INDEX($C:$C,COUNTA($A:$A))
データ-ピボットテーブル
使用するデータの範囲
=桜
列フィールドに 性別
行フィールドに 人物
データフィールドに 代金(最大値にする)
様々な条件にもよるけど 平均や最小値なども可能です
添付図通りにできたら
=COUNTIF(G3:G6,">=10000")
条件部分は
=COUNTIF(G3:G6,">="&J1) のようにセル参照も可能です
データの変更があったらピボットテーブルで「!データの更新」します
![「エクセルで作業列を使わず特定の条件を満た」の回答画像4](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/d/655143_568f65ae49e37/M.jpg)
なるほど、ピボットテーブルはほとんど使うことがありませんでしたが、これなら条件が変るごとに作業列を作るよりは、遥かに手軽に処理ができますね。
ただ、できれば関数だけで、セルも余り使わずに数値を求めたいのですが、難しいですかね
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)
![「エクセルで作業列を使わず特定の条件を満た」の回答画像2](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/b/298588_568ef3c1a9de5/M.jpg)
回答ありがとうございます。
ですが、この式は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ランキング
-
エクセルのツールバーから数値...
-
祝日と土曜、日曜の合計をカウ...
-
【マクロ】2回実行したら、エ...
-
特定の文字列を含む、住所を抽...
-
EXCELの散布図で日付が1900年に...
-
マイクロソフトのPADを使ってい...
-
Excel分数の表示について
-
Excelで表を作ったところに文字...
-
マクロエクセルのブロック解除
-
文字2桁、3桁交じりの文字列...
-
絶対参照
-
Excelについての質問です。 B2...
-
在庫管理表に使うエクセルの関...
-
【マクロ】VLOOKUPにて参照元に...
-
【EXCEL】画像の黄色部分の抽出...
-
DATE関数で現在の年齢を出した...
-
ユーザー定義関数をアドイン登...
-
エクセルでの作業計算方法について
-
行数が不規則な一週間ごとの合...
-
Excelピボットテーブルの1行目
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
半角カタカナをヘボン式ローマ...
-
(マクロ)vlookupの元データを同...
-
エクセルで上位バイトのセルと...
-
exselの質問です
-
Excel 大小比較演算子による「...
-
Excel VBについての質問です。
-
エクセルの問題です。絶対値の...
-
非表示列の再表示に失敗
-
職場の人から聞かれており、こ...
-
Excel関数-文字列で自動作成さ...
-
Excelデータをコピペして、ペー...
-
ユーザー定義関数をアドイン登...
-
【マクロ】for next構文について
-
エクセルの日付を編集する
-
【マクロ】VLOOKUPにて参照元に...
-
exselで最小数で並び替える関数
-
libre 表計算ソフトの計算がう...
-
エクセルで表
-
エクセルの表で1年間の曜日を...
-
西暦和暦
おすすめ情報
皆さん色々な解法をありがとうございます。
私自身も質問してからいろいろと試行したところ、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関数を使えるか否かという違いがあったのですね。