/ / Excelマクロ、行内の他の2つの列の値に基づいて値を書き込む-excel、vba、excel-vba

行の2つの他の列の値に基づいて値を書き込むExcelマクロ - Excel、VBA、Excel-VBA

漬物を手に入れたいと思っていました。先日、このロジックに従ってマクロをまとめました:

列Bのセルに特定のテキスト「brand1」があり、その行の値が列yの値「y」である場合、その行の列Wにテキスト文字列「sample1」を入力します。

先日は動作していましたが、何らかの理由で今日は動作しません。アイデアや考えはありますか?とにかくこのマクロを廃棄し、別のマクロを使用するという考えに完全に開かれています。

Sub PromoID()

Application.ScreenUpdating = False
Dim lastRow As Long
Dim cell As Range
lastRow = Range("B" & Rows.Count).End(xlUp).Row

For Each cell In Range("B2:B" & lastRow)
If InStr(1, cell.Value, "Brand1") <> 0 Then
InStr(1, cell.Offset(, 21).Value, "y") <> 0 Then
cell.Offset(, 23).Value = "sample1"
End If
End If
Next

Application.ScreenUpdating = True
End Sub

回答:

回答№1は0

あなたは答えからそれほど遠くなかった。軽微なエラーのために目を離さないでください。

Sub PromoID()

Application.ScreenUpdating = False
Dim lastRow As Long
Dim cell As Range
lastRow = Range("B" & Rows.Count).End(xlUp).Row + 1

For Each cell In Range("B2:B" & lastRow)
If InStr(1, cell.Value, "Brand1") <> 0 Then
If InStr(1, cell.Offset(0, 19).Value, "y") <> 0 Then
cell.Offset(0, 21).Value = "sample1"
End If
End If
Next

Application.ScreenUpdating = True
End Sub

出力:

ここに画像の説明を入力


回答№2の場合は0

すべて大文字にするようにしてください。 Ucase()を使用

If ucase(InStr(1, cell.Value, "Brand1") ) <> 0 Then ucase(InStr(1, cell.Offset(, 21).Value, "y") ) <> 0 Then cell.Offset(, 23).Value = "sample1"