- ベストアンサー
エクセルマクロで文字列の検索と抽出
- エクセル2010を使用しています。【Sheet3】のA列~CQ列には、空白・エラー・数値・文字が含まれています。L列には各地域の名前が入っており、L列に特定の検索対象文字列が含まれていた場合に、その行を【Sheet1】に抽出して行きたいです。また、検索対象文字列が増えた場合にも対応できるようにしたいです。
- エクセル2010を使用しています。【Sheet3】のA列~CQ列には、空白・エラー・数値・文字が含まれています。L列には各地域の名前が入っていますが、L列に特定の検索対象文字列が含まれていた場合に、その行を【Sheet1】に抽出して行きたいです。また、検索対象文字列が増えた場合にも対応できるようにしたいです。
- エクセル2010を使用しています。【Sheet3】のA~CQ列には、空白・エラー・数値・文字が含まれています。L列には各地域の名前が入っており、L列に特定の検索対象文字列が含まれていた場合に、その行を【Sheet1】に抽出して行きたいです。検索対象文字列は複数ある場合もあります。また、検索対象文字列が増えた場合にも対応できるようにしたいです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは! >検索対象文字が複数、例えば 福岡 か 大阪 が入っていたら・・・ とは必ず8行の中すべてに「福岡」か「大阪」が入っていたら!というコトでしょうか? すなわち1行でも参照文字がない場合、その8行の範囲は無視する!という解釈での一例です。 標準モジュールです。 Sub Sample1() Dim i As Long, k As Long, myCnt As Long, myMax As Long, wS As Worksheet, myAry Set wS = Worksheets("Sheet1") myAry = Array("福岡", "大阪") '←ココに増えたデータを追加する★ With Worksheets("Sheet3") For i = 1 To .Cells(Rows.Count, "L").End(xlUp).Row Step 8 myMax = 0 For k = 0 To UBound(myAry) myMax = WorksheetFunction.Max(myMax, WorksheetFunction.CountIf(.Cells(i, "L").Resize(8), "*" & myAry(k) & "*")) Next k If myMax = 8 Then Range(.Cells(i, "A"), .Cells(i, "CQ")).Resize(8).Copy wS.Cells(Rows.Count, "A").End(xlUp).Offset(1) End If Next i If WorksheetFunction.CountA(wS.Rows(1)) = 0 Then wS.Rows(1).Delete End If End With End Sub こんなんではどうでしょうか?m(_ _)m
お礼
回答ありがとうございます!! 滅茶苦茶良いです。 助かりました、ありがとうございます。