|
もとあし さん、こんばんわ。
>ところが、表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なので関係ないワードもチェックしても特に問題はなさそうな(出ないなら問題はない)気はしますが。
|
|