• ベストアンサー

Excelでの抽出方法を教えてください

Excelに以下のデータが入力されています。 氏名  日付 都市名 Aさん  9/8 東京 Bさん 9/15 大阪 Cさん 9/16 仙台 Bさん 9/19 名古屋 Cさん 9/22 前橋 Dさん 9/22 横浜 Cさん 9/22 清水 Aさん 9/30 東京 これらのデータから氏名欄に出現する氏名の一覧を抽出したいのです 求められている結果は Aさん Bさん Cさん Dさん です。 何か方法はあるでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

VBAですが、わずか十数行のコードで出来ます。 やったことが無ければやって見てください。 プログラムの組み方は稚拙ですが、1000件でも一瞬で終わりました。表の「行数」も自動的に採る方法もありますが( 1行で)極くシンプルにしました。cells(○、△)は○行 △列のデータ値を示します。For i = 1 To 行数はiを1ずつ 増やして行数になるまでNext iまでの処理を繰り返します。新顔はCells(j, y) に書き出します。1行ずつそれと比較し、その中に無ければ、追加しています。 ----------- Sub test01() Dim x As Integer 'どの列の出現メンバを考えるか Dim y As Integer 'どの列へ書き出すか Dim 行数 As Long x = 1: y = 5: 行数 = 20 '本例での仮のデータ k = 1 For i = 1 To 行数 For j = 1 To k If Cells(i, x) = Cells(j, y) Then GoTo p01 End If Next j Cells(k, y) = Cells(i, x) k = k + 1 p01: Next i End Sub --------------- VBAですがワークシートの画面において、ALT+F11をするとVBEの画面になり、ALT+I、ALT+MをするとMojule1の挿入が出来るので、上記のSub test01()から End Subまでをコピーして、Mojule1画面に貼り付けて、F5を押す(実行する)と出来ます。

orion6619
質問者

お礼

imogasiさんわざわざサンプルVBAまで載せて頂きどうもありがとうございました。うまくいきました。助かりました。

その他の回答 (1)

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

こんにちは。 氏名がA列で「氏名」というタイトルがあるとして、 仮にA2:A100が入力範囲とします。 1.タイトルを含む A1:A100のみを選択 2.データ-フィルタ-フィルタオプションの設定 3.メッセージにはOK 4.重複するレコードは無視するにチェックをしてOK 以上で抽出出来ます。 非表示になっているだけなので、データ-フィルタ-全て表示で戻せます。 コピーして違うシートにでも貼りつければ、重複を除いた値のみ取れます。

orion6619
質問者

お礼

早速の回答どうもありがとうございました。試したところ確かに抽出できました。助かりました。