ここには誰もがフォーマットを見ることができるように私のワークシートの参考画像があります。次のループの場合If then内部が正しく動作しない
この目的は、列に一致するデータをソートすることです。私が探している基準は右側にあり、私が探しているデータベースのデータは左側にあります。ここに私のループのコードがあります。
Dim i As Long
Dim Counter As Long
Dim WS_Count As Long
Dim k As Long
WS_Count = Worksheets.Count
For k = 4 To WS_Count
With Worksheets(k)
For Counter = 0 To ActiveSheet.Rows(1).Cells.Find("QQQ").Offset(0, -1) - 1
For i = 0 To ActiveSheet.Range("A" & ActiveSheet.Rows.Count).End(xlUp).Row - 2
If Cells(2 + i, 5).Value = Rows(i + 2).Cells.Find("QQQ").Offset(0, 1) And _
Cells(2 + i, 2).Value = Rows(i + 2).Cells.Find("QQQ").Offset(0, 3) And _
Cells(2 + i, 1).Value = Rows(i + 2).Cells.Find("QQQ").Offset(0, 2) Then
Cells(2 + i, Counter + 7).Value = Cells(2 + i, 4).Value
End If
Next i
Next Counter
End With
Next k
右の基準に関連付けられた列に列Dの値を取得する必要があります。列G:Oは1-9の番号を付けられ、列Tの番号1-9に一致します。
私の人生にとって、なぜ4列目には0が終わったのか分かりません。この順序で、最初の列のすべての行> 2番目の列のすべての行> ...>次のシートに移動する必要があります。何か不明な点がある場合は、私に知らせてください。
編集:だから私のCounter
とi
ロングは少しずれていたので、少し調整しました。彼らは正しいはずですが、私のコードはまだ正しく実行されていません。それは合致を見ていない。私のIf Then
はいくつかの方法を台無しにする必要があります。
あなたは 'With ActiveSheet'を持っているので、なぜそれを使用しないのですか? (1).Cells.Find( "QQQ")。Offset(0、-1) 'は、Counter = 0の場合に。.Rows(1).Cells.Find(" QQQ ").Offset(0、-1)'など...セル(2 + i、5).Value =行(i + 2).Cells.Find( "QQQ")。オフセット、1) '.Cells(2 + i、5).Value = .Rows(i + 2).Cells.Find(" QQQ ")。Offset(0、1)'などでなければなりません。代わりに 'With Worksheets(k) 'を使用して' Worksheets(k).Activate'を実行します –
コードをステップ実行します。 0を出力しているときに実行中の行をハイライト表示します。次に、中間ウィンドウを使用して、どの値が間違っているかを調べることができます。 – Vegard
それは少し良いはずです。主に怠惰。私はそれを加えたときにそれを変更するのを忘れてしまった。 – Keizzerweiss