• ベストアンサー

EXCLEのマクロ データの絞り込み

EXCELのマクロについてご教授願います。 数百件のデータで、C列は同じデータは複数あるが、A列に関して別のデータが入っている。B列もほぼ同じデータ ここで条件として C列が同じデータで、A列に特定のワードが入っているデータだけを残し、他のデータを削除するというマクロを組むことは可能でしょうか。 例えば下記のようなデータで、「abcd」だけ残し 他のデータは削除する    A         B        C 1  abcd      AAAAAA      BBBBBB 2  EFGA      AAAAAA      BBBBBB 3  hijk      AAAAAA      BBBBBB 4  lnms      AAAAAA      BBBBBB 5  abGG      PPPPPP      WWWWWW 6  EFTT      PPPPPP      WWWWWW 7  POII      PPPPPP      WWWWWW 2行目から4行目と6行目委から7行目を削除し以下のような データにする。常にA列のデータに ab というキーワードが 入っていて、Cが同じデータは、abが入っているデータのみ 残し他を削除する    A         B        C 1  abcd      AAAAAA      BBBBBB 5  abGG      PPPPPP      WWWWWW のみにする

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

  • ベストアンサー
noname#130090
noname#130090
回答No.1

こういうことでしょうか? おっかないので削除ではなくE~G列に書き出してますが。 Public Sub A_search()   Dim Slet As String, LetBox As Variant   Dim i As Long, j As Long   Slet = InputBox("A列で検索したい文字は?")   For i = 0 To Cells(65536, 1).End(xlUp).Row - 1     If Cells(1, 1).Offset(i) Like "*" & Slet & "*" Then       LetBox = Range("A1:C1").Offset(i)       Range("E1:G1").Offset(j) = LetBox       j = j + 1     End If   Next i End Sub

tomo0117
質問者

お礼

御礼が遅くなりました。 大変ありがとうございます。 ばっちり私の行いたいことができました。

その他の回答 (2)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんばんは。 その#2の書いた内容には無視なのか反応を示さないようですから、コードを置いて置きます。単に、検索するなら、AutoFilter を使ってコピーすればよいのです。 でも、最初の質問の内容とは、何か違うような気がします。 それで良いならよいのですが、こんな初歩的な内容なら、記録マクロでも取れます。    A         B        C 1  製品名1    製品名2      製品名3 ←タイトル行 2  abcd      AAAAAA      BBBBBB タイトル行を必ず入れた状態で、このようにすればよいです。 '------------------------------------------- Sub Test1()   Const sFIND As String = "*ab*" '検索語   ActiveSheet.AutoFilterMode = False   With Range("A1").CurrentRegion     .Range("A1").AutoFilter Field:=1, Criteria1:=sFIND     ActiveSheet.Range(.Cells(2, 1), _     .Cells(.Cells.Count)).Copy Range("E1")   End With   ActiveSheet.AutoFilterMode = False End Sub '------------------------------------------- なお、Like演算子を使う場合は、比較モードは、Compare Text にしたほうがよいです。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 直感的に、ご質問の内容では、何かぼんやりとしてですが、条件として不足しているように感じられます。 少なくとも、1列目で、オプション検索で、「ab で始まる」を探せばよいはずですが、それでは条件として不足しているようです。 (1)>C列が同じデータ  (2)>A列に特定のワードが入っているデータだけを残す の(1) と(2)だけでは、どうしてもしっくりきません。 >数百件のデータ ということですが、 C列のBBBBBB群 C列のWWWWWW群 から、A列にキーワードのある語を、一群から、それぞれ選び出す(複数あるか、ひとつだけか)ということでしょうか? このC列の群は、二つだけでなく、数十群もあるということでしょうか?

関連するQ&A

  • EXCLEのマクロ データの絞り込み

    下記のようなことは可能でしょうか。 ご教授いただけますと幸いです。 A列 B列 C列 あああ いいい 1234 あああ ううう 1235 あああ えええ 1236 のデータを A列 D列 あああ 1234,1235,1236 の用にしたいのです。 A列が同じデータでB列が違う行をまとめて 1行にする。しかし、B列とC列は不要だが、D列に C列にあった数値データを ,でセル内に合体させたい

  • エクセル/行選択の仕方を教えてください。

    はじめまして。 エクセルで、3行ごとに選択し、選んだ情報を列に移す作業をしたいのですが 1800行あり手で選択するのが大変です。 行いたい作業は以下の通りです。 A列 AAAAAA BBBBBB CCCCCC AAAAAA BBBBBB CCCCCC AAAAAA BBBBBB CCCCCC AAAAAA ↓ A列 B列 C列 AAAAAA BBBBBB CCCCCC AAAAAA BBBBBB CCCCCC AAAAAA BBBBBB CCCCCC 一行一行選択して列に移すのではなく選択できる方法がありましたら 是非ご教授ください。 よろしくお願いいたします。

  • 複数行にわたる処理

    こんばんは。perl初心者です。 どうしてもわからないので、どうかアドバイスよろしくお願いします。 一つのファイルに、以下のような3行で一組の塊がある場合、 <line_a>: aaaaaa <line_b>: BBBBBB <line_c>: cccccc <line_a>: aaaaaa <line_b>: bbbbbb <line_c>: cccccc ... <line_b>の行に文字列"BBBBBB"が含まれていたら、<line_a>の内容を"aaaaaa"から"AAAAAA"に置換してファイルを上書きしたいのですが、 どうやったらいいのでしょうか・・・。

    • ベストアンサー
    • Perl
  • エクセルのデータを一部抽出する方法をお教えください

    こんにちは。宜しくお願い致します。 エクセルのA列に以下の番号が入っています。  A  ――――――― 1|AAAAAA-01 2|AAAAAA-02 3|AAAAAA-03 4|BBBBBB-01 5|BBBBBB-02 6|BBBBBB-03 7|CCCCCC-01 8|CCCCCC-02 9|CCCCCC-03 10|・ 11|・ 12|・ 同じ番号にそれぞれ「-01」「-02」「-03」がついてしまっています。 この情報で、「-01」のみの行を抽出したいのですが、難しく考えてしまったせいか、上手く行きません。 エクセルにお詳しい方、方法を教えて下さい。 宜しくお願い致します。

  • 【マクロ】オートフィルター内の全データが削除される

    こんにちは、質問させていただきます。宜しくお願いします。 [エクセル] 2007 [内容] オートフィルタをかけ任意のデータのみ消したいのですが 全てのデータが消えてしまいます。 [詳細] A1~C5までデータが入っているのもだと仮定します。 (実際には項目があってフィルタがきちんとかかるものとします。)    A   B   C ----------------------- 1  ○   2個  \10 2  △   1個  \5 3  ×   3個  \15 4  ○   1個  \20 5  ○   4個  \5 オートフィルタをかけA列を基準として「○」を選択します。 そして選択した「○」を含む行(1行・4行・5行)を削除し 2行・3行目が残るようにしたいです。 その一連をマクロにして処理したいのですが… 1行から5行のすべての行データが削除されてしまいます。 <マクロ作成> マクロを記憶する。 ↓ 手動でオートフィルタをかけ、「○」を選択して行を削除 ↓ マクロの記憶を終了。 ↓ マクロ文の削除する行範囲をA1からC5に書き換え ↓ マクロ実行 <マクロ作成文>  Selection.AutoFilter Selection.AutoFilter Field:=1, Criteria1:="○" ActiveSheet.Range("A1:C5").Select Selection.Delete Shift:=xlUp ※エクセル2007のバージョンによっては選択した「○」のみ 削除されるPCもありましたので、何か設定があるのかな?と 思いましたが…解決しませんでした。 何か良い案があれば教えていただきたいです。 宜しくお願い致します。

  • エクセルの質問

    例えばメモ帳に、 aaaaaa,,111111,,222222 bbbbbb,,333333,,444444 あるとして、これを2行まとめてコピーしてエクセルに貼り付けると、 A1にaaaaaa,,111111,,222222 A2にbbbbbb,,333333,,444444 と入ってしまいます。 これを、 A1にaaaaaaB1に,,C1に111111D1に,,E1に222222 A2にbbbbbbB2に,,C2に333333D2に,,E2に444444 と貼り付けられる何か良い方法はありませんでしょうか? なぜ行はA1、A2とセルを分けて入るのに列は分かれてくれないのでしょうか? 分かる方是非教えてください。

  • 列のデータに変化があるとマクロを実行

    A列 - B列 - C列 - D列 1 - 123 - 234 - 678 2 - 456 - 567 - 890 3 - 333 - 444 - 555 4 - 765 - 876 - 321 5 - ? - ? - ? 6 - ? - ? - ? の様なデータがあり行のデータ日々増すとき C列最終行のデータD1に出したいのですが? C列のデータに変化があるとマクロを実行して 常にC列最終行のデータD1に出したいのです どなたか良きアドバイスをお願い致します。

  • SQLでの複数列が重複してる行の削除(SQLite)

    こんにちは。 複数の列で重複した列がある場合の行削除のクエリが思い付きません。 A表 A    B   C   D   ==== === === ==== 1 ああああ 100 200 ABCD 2 いいいい 200  90 ASKB 3 うううう 300 800 ALTE 4 ええええ 400 200 ABCD B表   ==== === === ==== 1 ああああ 100 200 ABCD 2 ああああ 400 100 ABCD このとき、A表とB表を比較し、B,C,D列で重複したデータをB表から削除した行を表示したいのです。 ほしいデータは B表   ==== === === ==== 2 ああああ 400 100 ABCD です。よろしくお願いします。

  • エクセル 複数シートのデータを1シートにまとめるマクロ

    エクセルの複数シートにデータがあります。同じ条件の人のデータだけをひとつのシートにまとめたいのですが、マクロを教えていただけますでしょうか。それとも、マクロ以外に良い方法がありますか? エクセル初心者なので、あたりまえのことも知らないかもしれません。。。  【データ】 ●シート1からシート20まで、同じ配列でデータがあります。 ●1行目は見出しです。2行目から1人づつのデータです。(多くても65行までと思っています。) ●A列に到達度、B列に出欠をいれました。 ●C列からM列が氏名、課題、その他のデータです。 ●リストはシート21にあります。  【こんな作業でしょうか?】 ●シート1から20で A列が「C」または「D」ならば その行のA列からM列をコピーして シート21のA列からM列に形式を値にして張り付ける ●シート1から20で B列が「欠」ならば その行のA列からM列をコピーしてシート21のA列からM列に形式を値にして張り付ける (っというのが私の乏しい知識で考えた方法なのですが、これでは不具合がでますか? もちろん、この方法じゃなくもっといいのがあれば、それをやってみたいです。)

  • COUNTBLANKのような役割を持つマクロ

    COUNTBLANKとはちょっと違うのですが、 行 ↓ A B C D ←列 1  AB AC AD AA 2 BB 3 C CC 4 DD 上記のようなデータがあります。 2,4行目みたいにA列とB列とC列が空白だったら、E2、E4セルに ○っていのを表示させるようなマクロってできないでしょうか。 また、Dのセルに値がある限り、その行数分上記の処理を繰り返す 方法があったら教えてください

専門家に質問してみよう