人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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


●質問者: donkydonut
●カテゴリ:コンピュータ インターネット
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● SALINGER
●100ポイント

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

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

2 ● きゃづみぃ
●100ポイント

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

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

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

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

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


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

きゃづみぃさんのコメント
それは 関数でも式でもないですよね?

3 ● kodairabase
●100ポイント

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

関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ