这是我的工作表的参考图像,以便每个人都可以看到格式。
这样做的目的是对匹配到列中的数据进行排序。我正在寻找的标准位于右侧,而我正在查看的数据库数据位于左侧。这是我的循环代码。
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。它应按此顺序排列第一列中的所有行>第二列中的所有行> ...>下一张。如果有任何不清楚的地方,请告诉我。
编辑:所以我的Counter
和i
多头略有偏离,所以我做了一些调整。他们应该是正确的,但我的代码仍然没有正确执行。它没有看到它应该的匹配。我的If Then
必须弄乱一些方法。
答案 0 :(得分:1)
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
向下移动,从而无法进行匹配。屏幕截图中的那个恰巧是巧合。谢谢,希望这能帮助将来的某个人。