- ベストアンサー
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 のみにする
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
こういうことでしょうか? おっかないので削除ではなく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
その他の回答 (2)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 その#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)
こんにちは。 直感的に、ご質問の内容では、何かぼんやりとしてですが、条件として不足しているように感じられます。 少なくとも、1列目で、オプション検索で、「ab で始まる」を探せばよいはずですが、それでは条件として不足しているようです。 (1)>C列が同じデータ (2)>A列に特定のワードが入っているデータだけを残す の(1) と(2)だけでは、どうしてもしっくりきません。 >数百件のデータ ということですが、 C列のBBBBBB群 C列のWWWWWW群 から、A列にキーワードのある語を、一群から、それぞれ選び出す(複数あるか、ひとつだけか)ということでしょうか? このC列の群は、二つだけでなく、数十群もあるということでしょうか?
お礼
御礼が遅くなりました。 大変ありがとうございます。 ばっちり私の行いたいことができました。