• ベストアンサー

excel2003の、値抽出方法について。

写真のように、A列に重複しているリストがあります。 C列に重複を排除したリストを作成する場合。 どのようにすればいいでしょうか。 VBAで記述した場合の方法と、関数の場合の方法とで それぞれ教えていただけるとありがたいです。

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

  • ベストアンサー
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.3

Excelの一般機能で対応するなら、A列を選択して「データ」「フィルタ」「フィルタオプションの設定」で「重複するレコードは無視する」にチェックを入れ、抽出先を「指定した範囲」にしてC1セルを選択するのがお勧めです。 データ数が多くなると動きが重くなるのであまりお勧めできませんが、補助列を使用しない関数で対応したいなら、以下のような数式を入力して下方向に適当数オートフィルすることになります。 =INDEX(A:A,SMALL(INDEX((MATCH($A$2:$A$100&"",$A$2:$A$100&"",0)<>ROW($A$2:$A$100)-1)*1000+ROW($A$2:$A$100),),ROW(1:1)))&""

puyopa
質問者

お礼

「重複するレコードは無視する」というオプションが求めていた回答だった 気がします。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

noname#204879
noname#204879
回答No.4

B1: =IF(COUNTIF(A$1:A1,A1)=1,ROW(),"") C1: =IF(ISERROR(SMALL(B:B,ROW(A1))),"",INDEX(A:A,SMALL(B:B,ROW(A1))))

puyopa
質問者

お礼

回答ありがとうございます。 参考になりました。

全文を見る
すると、全ての回答が全文表示されます。
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんにちは! 一例です。 関数の場合 B列を作業用の列として使用します。 B2セルに =IF(COUNTIF(A$2:A2,A2)=1,ROW(),"") という数式を入れオートフィルでしっかり下へコピーしておきます。 C2セルに =IF(COUNT(B:B)<ROW(A1),"",INDEX(A:A,SMALL(B:B,ROW(A1)),)) という数式を入れこれもオートフィルで下へコピー! これで重複なしに表示されます。 VBAの場合というより一番簡単なのは 「フィルタオプション」で「重複するレコードは無視する」にチェックを入れる方法だと思いますが、 いかにもマクロらしくやるとしたら Sub Sample1() Dim i As Long, endRow As Long endRow = Cells(Rows.Count, "C").End(xlUp).Row If endRow > 1 Then Range(Cells(2, "C"), Cells(endRow, "C")).ClearContents End If For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row If WorksheetFunction.CountIf(Range("C:C"), Cells(i, "A")) = 0 Then Cells(Rows.Count, "C").End(xlUp).Offset(1) = Cells(i, "A") End If Next i End Sub こんな感じではどうでしょうか?m(_ _)m

puyopa
質問者

お礼

回答ありがとうございます。 こんな考え方もあるんだというのが、面白くて参考になりました。 出来れば、作業セルは使わず行える方法が望ましいです。

全文を見る
すると、全ての回答が全文表示されます。
  • aokii
  • ベストアンサー率23% (5210/22062)
回答No.1

ピボットテーブルを作ると重複していないリストができます。

puyopa
質問者

お礼

回答ありがとうございます。 そうですね。その存在を忘れていました。 簡単に出来る方法として、覚えておきたいと思います。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 【Excel】2つの値のどちらかを抽出する

    A、Bのセルがあり、どちらのセルにも文字列が入っていたり、入っていなかったりとします。 そこでセルCに、A、Bどちらかの文字列を入れたいと考えたとき、どのような関数が考えられますでしょうか? 条件は以下のようにします。 (1)A,Bとも文字列か、空白のどちらか (2)Aの方が優先される。A,Bのどちらも値が入っている場合はA、Aが空白で、Bに値が入っている場合はBの値がCに反映される。 宜しくお願い致します。

  • 【VBA】セルに含まれない値を追加していく

    VBA初心者です あるリストの、指定の列の重複しない値のリストを作成したいのですが 具体的には A B C 1 大阪 りんご 10 2 東京 りんご 20 3 東京 りんご 30 4 名古屋 ごりら 40 5 福岡 ごりら 50 6 大阪 らっぱ 60 指定のセル内(E1:E10)にA列の重複しないリスト (この例だと、大阪、東京、名古屋、福岡) を作成したいのです いくつか試してみたけれどうまくいきません どのようなVBAを作成すればよいでしょうか よろしくお願いいたします

  • Excel関数で大きい値を出したいのですがなかなか上手くいきません。

    エクセルの関数式で、質問です。    A列   B列   C列 1  番号   版数   結果 2 ○○○×   A     NG     3 ○×○○   A     OK 4 ○○○×   B     OK 表現が難しいので、上手く伝わるか分かりませんが、 A列に同じ番号があり重複するが、 B列の版数が違い尚且つ、最新の版数をC列に表示するようにしたいのです。 上記の場合だと、 3列目は番号と版数が他と重複するものがないので結果はOK。 2列目と4列目は番号は重複してるが版数をみれば、 4列目が新しいので、2列目の結果はNG、4列目の結果はOK。 と、言う感じです。 現在、番号と版数を一緒に入力してた為、 古い版数と新しい版数の判別が付きませんでしたので、 新しい版数のみを表示できるような関数式を教えて頂けないでしょうか? 過去の履歴も検索したのですが、該当するものが見つからなかったので、 質問させて頂きました。 Excelのバージョンは2003になります。 皆様の、知恵をお貸し頂けたら幸いです。

  • excel:塗りつぶしの色によってリスト内容を変える方法

    excel:塗りつぶしの色によってリスト内容を変える方法 質問させていただきます。 塗りつぶしの色によってリスト内容を変える方法がわかりません。 具体的には、たとえばA1が赤だった場合、A1のリスト内容をC1からC5にしてA1が青だった場合A1のリストをD1からD5の内容にするといったことです。 ユーザー定義関数で色わけ関数を作って、リストでIFと作成したユーザー関数を使うことを考えたのですがうまくいきません。 どなたかご教授願えればと思います。

  • 重複しない値の件数を取得したい(Excel2002)

    いつもお世話になっております。 Excel2002(OfficeXP)を使用しています。 A1からA100までいろいろな文字列が入っています。 そこで重複しない文字列の件数を取得したいのですが、 何か良い関数などございませんでしょうか? 具体的には以下のようなイメージです。 100 25 300 25 200 この場合に25が重複しているので、1つ除いて「4」件と取得したいのです。 何か良い方法はございませんか? A1からA100までは必ず値が入っております。 ぜひご回答よろしくお願いいたします。

  • 【Excel】重複データ抽出

    ブック内のシート別(月別)に月利用者のリストがあるのですが重複利用者を新規シートに抽出したいのです。 例えば、Aさんは4月、5月、6月利用でBさんは4月、6月利用の様に利用者別に利用頻度を確認したいのですが。 利用者リストはA列にあり、例えば10名利用があるとするとセル番地はA1~A10利用者のデータがあります。 利用者数は月によって異なります。当方、関数は少しかじった程度なので関数使用の場合は計算式をご提示頂くと助かります。 バージョンは2010です。 宜しくお願いします。

  • 初歩的な抽出方法がわかりません・・・

    今1時間くらい調べたのですが、どうしても分かりません。 どなたか教えて下さい!! 現在、A列に4000位顧客名が入っていますが、重複もしています。 B列には、使用金額が入っています。 顧客名のリストを作りたいのですが、重複させずに抽出する方法が分かりません。 オートフィルタを選択すると、下矢印がでますが、まさにそのリストが欲しいんです!! どなたか教えて下さい。

  • excel2003の入力を省力化したい

    写真のように A,C,E列に記号 B,D,F列に文字が入っています。 そこで、A~F列に何かしら入力した場合、 G列、H列には、それぞれ A-C-E、B-D-Fを ハイフンで連結した文字を、自動で表示させたいです。 ただし、A~F列の値を消した場合、G列とH列の値もクリア させたいです。 どうか、VBAの記述を教えていただけないでしょうか? できれば、早くて、負荷の少ない記述が助かります。

  • excel2007 重複する値の抽出について

    いつもお世話になっております。 またお知恵を拝借しようと思い、質問しております。 重複するデータから 3つ重複する値のみを抽出したいときの抽出方法を教えてください。 例) A B 1 重複 1 重複 2 重複 2 重複 2 重複 3  4 重複 4 重複 4 重複 5 IF(COUNTIF($A$1:$A$10,A1)>1,"重複","") で重複するものは確認できました。 ここから3つ重複している値のみを抽出したいときの抽出方法がわからなくて困っています。 簡単な方法はありますか? 2つ重複している値と1つだけの値を削除すればいいのですが、大量にデータがあります。 重複のみを抽出した後、2つ重複した値だけを削除できる方法か、3つ重複した値のみ抽出する方法はありますか? 重複するのは3つまでで、なんせ3つ重複している値のみにしたいというわけです。 excel2007使用。「重複を削除」をすると全ての重複が削除されてしまうので、困っています。 どうかお力をお貸しください。

  • エクセルで違う列の中の重複した値を検索する方法はありますか?

    エクセルで違う列の中の重複した値を検索する方法はありますか?たとえばA列の名前のリストとB列の名前のリストの中に同じものがあるかどうかを検索してC列に結果表示するようにしたいのですが・・

専門家に質問してみよう