| 
    
     |  | もとあし さん、こんばんわ。 
 >ところが、表1と表2ではいくつかあるKeywordの数と内容が少し異なります。
 >例えば表1のKeywordが「不要」「必要」「賞味期限」と3つあった場合、
 >表2のKeywordは「不要」「必要」のみの2つであったとします。
 ダミーコードのようなので、実際はいくつの分岐があるのかはしりませんが、判断の部分を関数として分離してみました。
 
 sub なんとか()
 >For i = 7 To n '7行目からCells.End(xlUp).Rowで得た最終行まで
 With Application.ActiveSheet
 If tp1(.Cells(i, 12).Value, 3) = True Then
 >   'B列〜L列までのセルを転記
 .Range(.Cells(i, 2), .Cells(i, 12)).Copy _
 Destination:=Workbooks("wb").Sheets("sheet1").Cells(x, 2)
 > End If
 End With
 >Next i
 ・・・・
 End Sub
 '判定する関数
 関数tp1 arg1:判定基準の文字列, NN:チェックするキーワードの数(上限)
 Function tp1(arg1 As String, NN As Integer) As Boolean
 Dim flg As Boolean, s1 As Variant, II As Integer, Imax As Integer
 s1 = Array("不要", "必要", "賞味期限") 'チェックするキーワードのリスト
 '念のため配列の上限をチェック
 If NN > UBound(s1) + 1 Then Imax = UBound(s1) Else Imax = NN - 1
 For II = 0 To Imax
 flg = flg Or Left(arg1, Len(s1(II))) = s1(II)
 Next
 tp1 = flg
 End Function
 
 こんな感じです。
 orなので関係ないワードもチェックしても特に問題はなさそうな(出ないなら問題はない)気はしますが。
 
 |  |