For Next循环里面有If Then不能正常工作



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

https://i.stack.imgur.com/9d4CY.jpg

这样做的目的是将匹配的数据排序成列。我要找的标准在右边我要找的数据库数据在左边。这是我的循环代码。

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: 0,编号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(.....,该周期使cell定义为ActiveSheet。我还将.Rows(i+2)...更改为.Rows(Counter+2),标准单元格位置将随着每个新的i而向下移动,从而不可能有匹配。截图中的那个只是巧合。谢谢,希望这对将来的人有所帮助。

最新更新