对于下一个循环与一个如果然后里面不能正常工作

这是我的工作表的参考图像,以便每个人都可以看到格式。

View post on imgur.com

这样做的目的是对匹配到列的数据进行sorting。 我正在寻找的标准是在右侧,我正在查看的数据库数据在左侧。 这是我的循环代码。

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成为一个整体。 它应该按照这个顺序排列第一列中的所有行>第二列中的所有行> …>下一个表格。 如果有什么不清楚的,请告诉我。

编辑:所以我的Counteri很久了,所以我做了一些调整。 他们应该是正确的,但我的代码仍然是不正确执行。 它没有看到它应该的比赛。 我的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 .Rows(1).Cells.Find("QQQ").Offset(0, -1).Value - 1 For i = 0 To .Range("A" & .Rows.Count).End(xlUp).Row - 2 If .Cells(2 + i, 5).Value = .Rows(Counter + 2).Cells.Find("QQQ").Offset(0, 1) And _ .Cells(2 + i, 2).Value = .Rows(Counter + 2).Cells.Find("QQQ").Offset(0, 3) And _ .Cells(2 + i, 1).Value = .Rows(Counter + 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 

好吧,现在就行了 我认为这是一个非常困难的时间搞清楚什么表来拉动声明。 注意.Cells(.....这段时间使单元格定义到ActiveSheet ,我也改变了.Rows(i+2)....Rows(Counter+2)标准单元格的位置将会向下移动新的, i不可能有一个匹配。截图中的一个恰巧巧合,谢谢,希望这将有助于未来的人。