電子書籍の厳選無料作品が豊富!

CSVデータなのですが、
2行毎に購入者と、伝票番号、商品番号、商品データがあります。
1行目と2行目に伝票番号と購入者が同一になっており、
商品番号と、商品が別になっています。

例a b c d
 購入者 伝票番号 商品番号 商品名
1 Aさん 00010 1001 チョコ
2 Aさん 00010 1003 アイス
3 Bさん 00011 1001 チョコ
4 Bさん 00011 1002 スイカ
5 Cさん 00012 1001 チョコ
6 Cさん 00012 1002 スイカ
.
.
.
このような形で、商品を二つ買っており、同一の内容を購入している人数が何人かカウントしたいです!!

商品コードをCONCATENATE関数で
=CONCATENATE(C1" "C2)
の値をカウントする等考えましたが、どなたかお力添えお願いします。

質問者からの補足コメント

  • つらい・・・

    手入力で記載しましたが、
    アイスとチョコの組み合わせは何人が購入しているか をカウントしたいということです。。
    なので、これは2つ購入したパターンですが、3つ購入したパターンや3つ購入したパターンもできれば最高です。

    「エクセル 同じものを購入している人数をカ」の補足画像1
    No.2の回答に寄せられた補足コメントです。 補足日時:2021/09/26 19:50

A 回答 (8件)

No.7です。


前回回答で、
>「同一購入者が再登場することがある」という前提がないと、
>最大2商品の組合せしかあり得ないことになります。
と述べましたが、仮に「同一購入者が再登場することがある」だとするとどうなるか考えてみました。
添付画像をご覧ください。購入者Aと購入者Bが2度登場しています。
この場合、最大4商品の組合せがあることになります。そこで、O列に「3商品組合せ」を全て登録しています。
6個から3個選ぶ組合せは全部で20種類あります。それぞれの組合せの購入者が何人いるかを計算する数式は前回回答の数式を若干修正して、
P2セルに

=SUMPRODUCT((INDIRECT(LEFT(O2,3))>0)*(INDIRECT(RIGHT(O2,3))>0)*(INDIRECT(MID(O2,5,3))>0))

を記述し、下方向へコピーすればよいということになります。
「エクセル 同じものを購入している人数をカ」の回答画像8
    • good
    • 0

ご質問者は


>1行目と2行目に伝票番号と購入者が同一になっており、
>商品番号と、商品が別になっています。
とおっしゃっています。
データがこの形式だと、「同一購入者が再登場することがある」という前提がないと、最大2商品の組合せしかあり得ないことになります。
にも拘わらず、ご質問者は
>これは2つ購入したパターンですが、3つ購入した
>パターンや3つ購入したパターンもできれば最高です。
とおっしゃっています。「最大2商品の組合せしかない」のに、どういう意味なのか意図が不明です。
また、商品番号と商品の組合せは「ユニーク」であるというのが「常識」ですが、ご質問者の例示の中には「商品番号903=スイカ」と「商品番号904=スイカ」の二種類登場します。
もしかすると「スイカ(上)」「スイカ(並)」とか種類が別れているのかもしれませんが、「常識」に基づいて「商品番号904=スイカ」は「商品番号903=スイカ」の間違いだと判断して統一しました。
例示されたデータに、この修正を行ったうえで、とりあえず手順を考えてみました。
添付画像①をご覧ください。元データはA列~D列にあります。まず、A1~D23セルを選択し、以下の手順でピボットテーブルを作成します。
(1)「メニュー」⇒「挿入」⇒「ピボットテーブル」から「ピボットテーブル作成」ダイアログを表示させ、「配置場所」を「既存のワークシート」とし、F1セルを指定します。
(2)「商品番号」「商品」を「列」のボックスへドラッグ&ドロップ
(3)「購入者」を「行」のボックスへドラッグ&ドロップ
(4)「商品番号」を「∑値」のボックスへドラッグ&ドロップ
(5)「∑値」にドラッグした「商品番号」をクリックし、「値フィールドの設定」から「合計」ではなく「個数」を選択
(6)「デザイン」⇒「レポートのレイアウト」から「表形式で表示」を選択
(7)「デザイン」⇒「小計」から「小計を表示しない」を選択
すると添付画像①の中央にある「ピボットテーブル」が出来上がります。
次に以下の手順で範囲に名前を定義します。
(1)ピボットテーブルの商品の左端列から右端の商品列最終行まで、個数が表示されている範囲を全て(添付画像でいえばG3セル~L14セル)を選択する
(2)「ALT+M」キーを押す
(3)「C」キーを押し、「選択範囲から名前を作成」ダイアログボックスを表示
(4)表示されたダイアログボックスで「上端行」にチェックが入っていることを確認
(5)OKボタンを押す
ご質問者の目的は
>アイスとチョコの組み合わせは何人が購入しているかをカウントしたい
ということですので、
2商品の組合せのリストをO列に作成しています。6商品ありますので、そこから2商品を選ぶ組合せは15種類あります。
添付画像ではO2セルに「アイス・チョコ」の組合せが入力されています。
P2セルに

=SUMPRODUCT((INDIRECT(LEFT(O3,3))>0)*(INDIRECT(RIGHT(O3,3))>0))

という数式を記述し、下方向へコピーします。
これで、O列に入力されている「商品組合せ」を何人が購入しているか計算できます。
「エクセル 同じものを購入している人数をカ」の回答画像7
    • good
    • 0

「2つ購入したパターン」の形式の提示もしないで、「3つ購入したパターンもできれば最高です」とは空いた口が塞がりません!


前者の場合はここの添付図の形式が分かり易いかと思いますが、後者(3つ以上)の形式は貴方から提案してみてください。
「エクセル 同じものを購入している人数をカ」の回答画像6
    • good
    • 0

[No.4]用の操作手順で~す。



 ̄ ̄式 =D2&"と"&D3&"を購入" をセル H2 に入力⇒セル H3 は空白の
 ̄ ̄ままの放置プレー⇒範囲 H2:H3 のフィルハンドルを下方にズズーッ
 ̄ ̄とオートフィル⇒範囲 H2:H1000 を選択⇒Ctrl+Cをパシーッ⇒セル
 ̄ ̄J2 を選択⇒マウスの右クリック⇒[貼り付けのオプション]直下の
 ̄ ̄[123](値)アイコンをツン⇒選択状態のまま、[データ]⇒[並べ替えと
 ̄ ̄フィルター <[A→Z](昇順)アイコン>]をツン⇒“現在…並べ替える”
 ̄ ̄に目玉入れ→[並べ替え]→式 =COUNTIF(H:H,J2) を入力したセル
 ̄ ̄K2 のフィルハンドルを「エイヤッ!」とダブルクリック
オ・シ・マ・イ
    • good
    • 0

こんなのではダメですか?


もしOKなら、率直に言えば、ツマラナイ(*^_^*)
添付図参照(Excel 2019)
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄↓↓↓↓↓↓↓↓↓↓↓↓↓
「エクセル 同じものを購入している人数をカ」の回答画像4
    • good
    • 0

補足要求です。


1.マクロでなら実現可能ですが、マクロでもよろしいでしょうか。

以降は、マクロでの前提です。マクロがNGの場合は、回答不要です。
2.出力先は、2行目以降になります。
  ①H列に商品名の組み合わせ(例 アイスとチョコ)
  ②I列にその組み合わせをもつ人数
  上記でよろしいでしょうか。

3.商品番号が異なり、商品名が同じになるケースはありますか。
例 Xさん 商品番号=1100 商品名=バナナ
  Xさん 商品番号=1200 商品名=みかん
  Yさん 商品番号=1100 商品名=バナナ
  Yさん 商品番号=1200 商品名=みかん
  Zさん 商品番号=1500 商品名=バナナ・・・商品番号が他と異なるが商品名は同じ
  Zさん 商品番号=1200 商品名=みかん

その場合は、商品番号が異なるので、同一の内容とはみなしません。
出力結果は以下のようになりますが宜しいでしょうか。
H列       I列
バナナとみかん  2・・・・・XさんとYさん
バナナとみかん  1・・・・・Zさん

4.3つ購入したパターンの場合
例 Xさん 商品番号=1100 商品名=バナナ
  Xさん 商品番号=1200 商品名=みかん
  Yさん 商品番号=1100 商品名=バナナ
  Yさん 商品番号=1200 商品名=みかん
  Zさん 商品番号=1100 商品名=バナナ
  Zさん 商品番号=1200 商品名=みかん
  Zさん 商品番号=1500 商品名=りんご

Zさんだけが3つの商品を購入しています。
2つの商品はXさんと同じですが、3つ購入しているのでXさんと同じ内容とはみなしません。
出力結果は以下のようになりますが宜しいでしょうか。
H列          I列
バナナとみかん     2・・・・・XさんとYさん
バナナとみかんとリンゴ 1・・・・・Zさん
    • good
    • 0

こんにちは



商品番号で検索して、重複している名前を数えればよいってことでしょうか?

・データの1行目はタイトル行で、A列が購入者名、C列が商品番号として、
 2行目から実際のデータが並んでいるものと仮定
・検索したい商品番号がどこかのセルにあるものとします
 (以下ではF1セルと仮定)

Office365環境であれば、とりあえず
=COUNTA(INDEX(FILTER(A2:D99,C2:C99=F1),,1))-COUNTA(UNIQUE(INDEX(FILTER(A2:D99,C2:C99=F1),,1)))
で、求められると思いますが、3回以上購入している人がいると、ダブって数え始めますのでご注意ください。
(3回以上の購入者が存在するような場合には、下の方法を試してみてください)


365環境ではない場合に、直接求めるのはそれなりに面倒そうですね。
作業列を利用する方法で良ければ、上記の「3回以上」の人も含めて正しくカウントすることが可能です。
条件は同じとして、作業列の2行目に
 =IF(C2=$F$1,(COUNTIFS(A$2:A2,A2,C$2:C2,$F$1)=2)*1,"")
を入力して、下方にフィルコピー。

そのうえで、作業列の合計を求めれば(←SUM関数等で)、ご質問のカウント数になると思います。
この回答への補足あり
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

恐らく365環境ではないです。
タイトルの書き方が悪かったかもしれません。

あくまで、同じ商品の内容で購入している人物が何人いるかをカウントしたいということです。
fujillinさんに回答いただいた、365環境ではない場合のやり方でできるのでしょうか。

お礼日時:2021/09/26 19:44

単に、商品名の数を数えれば良い、と思います。

    • good
    • 0
この回答へのお礼

ありがとうございます。
あくまで、同じ商品を同時に購入している人の数を数えたいので、
商品名の数を数えるだけだと、同じ商品の組み合わせで購入している人にはならないんです。。

お礼日時:2021/09/26 19:23

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!