Excelで列のパターンを抽出する関数や式は?


Excel で 次のようなデータがあります。
A列に「血液型」B列に「年齢」C列に「性別」

[したい事]
A列 x B列 x C列の組み合わせで重複しないパターンのリストを"自動"で抽出し、
なおかつ、パターンの"カウント数"を出力する関数、もしくは式をお教えください。

[データ]
A列 B列 C列
1行目 A型 29歳 男
2行目 B型 30歳 男
3行目 AB型 29歳 女
4行目 O型 33歳 女
5行目 AB型 30歳 女
6行目 O型 33歳 男
7行目 A型 40歳 男
8行目 B型 30歳 男
9行目 AB型 29歳 男

[求める結果]
A列 B列 C列  D列
AB型 29歳 女 1
AB型 30歳 女 1
AB型 29歳 男 1
A型 29歳 男 1
A型 40歳 男 1
B型 30歳 男 2
O型 33歳 女 1
O型 33歳 男 1

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2011/12/27 23:40:05
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:SALINGER No.1

回答回数3454ベストアンサー獲得回数969

ポイント100pt

ピボットテーブルでやればいい感じですが、マクロだと。

Sub Macro()
    Dim i As Long
    Dim j As Long
    Dim lastRow As Long
    
    lastRow = Cells(Rows.Count, "A").End(xlUp).Row
    
    Range("D1:D" & lastRow).Value = 1
    
    For i = lastRow To 2 Step -1
        For j = 1 To i - 1
            If Cells(i, "A").Value = Cells(j, "A").Value And Cells(i, "B").Value = Cells(j, "B").Value _
                And Cells(i, "C").Value = Cells(j, "C").Value Then
                Cells(j, "D").Value = Cells(j, "D").Value + 1
                Rows(i).Delete
                Exit For
            End If
        Next j
    Next i
End Sub
id:taknt No.2

回答回数13539ベストアンサー獲得回数1198

ポイント100pt

質問の内容を実行するための関数はないです。
数式を用いても できないでしょう。

重複するものが 何件あるのか調べるには countif をもちいれば いいですが
countif では 一項目しか比較できないので、3項目を連結して ひとつの項目にする必要があります。
つまり A列、B列、C列を連結した 項目を作って そこに対して countifすれば 何件あるのかぐらいは 調べられます。

連結の仕方ですが たとえば D列に作るとして D列に
=A1 & B1 & C1
といった感じで入れればいいです。

それで そのD列に対して countif してやればいいでしょう。

重複行を削除するのは マクロ等使わなければ 消せませんね。
別シートだったら 表示させるということは 可能ですが、現実的ではないです。

id:nanntenn

重複行の削除はExcel2007以降であれば「データ」→「重複の削除」→D列を指定で
いけますよね?

2011/12/21 22:11:10
id:taknt

それは 関数でも式でもないですよね?

2011/12/21 22:19:11
id:kodairabase No.3

回答回数661ベストアンサー獲得回数80

ポイント100pt

そういう関数や式はありません。
マクロを使いましょう。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません