釣り方を人に教えたら... これは答えではありませんが、自分で問題を解決する方法は次のとおりです。
下の行にカーソルを置き、F9 キーを押して、コードにブレークポイントを追加します。
Sheets(2).Cells(i, 1) = Sheets(1).Cells(i, 2)
正しく実行すると、VBE で次のように表示されます。

F5 キーを押してコードを実行します。
VBE は、ラインにヒットした場合に、このラインを黄色で強調表示します。これにより、本質的にコードの実行が一時停止されるため、何が起こっているかを調べて追跡できます。Debug.Print
これは、ステートメントを入力できる場合(またはMsgBox
、上記の私の例と SOrceri の例に従って) 、または [イミディエイト]ウィンドウまたは [ローカル]ウィンドウを使用して変数とその値を調べることができる場合です (これはより高度です)。
「何も起こらない」場合 (つまり、行が黄色で強調表示されない場合)、考えられることは 2 つだけです。
Sheets(1).Cells(i,2)
空である、または
- ブール式の条件が満たされることはありません。
ブレークポイントを使用すると、それら (または私が考えていなかった他の潜在的な条件) のどれが明らかな「エラー」に寄与している可能性があるかをデバッグして把握することができます。
更新残念ながら、問題は本当にあなたの論理だと思います。できるだけ明確な例を提供しようとします。
Sub Test()
Dim i As Integer
Dim sht1Cell As Range
Dim sht2Cell As Range
For i = 1 To 10
Set sht1Cell = Sheets(1).Cells(i, 1)
Set sht2Cell = Sheets(2).Cells(i, 1)
'Now, test whether "blah" is found in sht1Cell:
If InStr(1, sht1Cell.Value, "blah") > 0 Then
'If it contains "blah", then put this value in sheet 2.
'Note: you were previously putting values from Column B.
' but this is taking the exact cell value from
' column A, so I KNOW this value cannot be a blank value.
sht2Cell.Value = sht1Cell.Value
Else:
'Does not contain "blah", so make sheet 2 have a blank
'This blanks out any value that might have previously been
'present in sh2Cell.
sht2Cell.Value = ""
End If
Next
End Sub
これで目的の結果が得られない場合は、ロジックに問題があると 100% 確信しています。これは、達成したい条件と結果を適切に説明していません。どこが違うのかは、あなたが何をしようとしているのかをより完全に説明できない限り、誰の推測でもあります。