首页 > 解决方案 > 双循环,在工作簿中找到范围的底部和顶部,然后在工作簿中找到满足条件的下一部分的范围

问题描述

Dim top As Integer
Dim bot As Integer
Dim n As Integer
Dim Copyrange As String

For i = 2 To LastRow
    If wbkCurBook.Sheets("August FMR").Cells(i, "B").Value = "CASE TOTAL" Then
        wbkCurBook.Sheets("August FMR").Cells(i + 1, "F").Value = "OPEN LINE ITEMS"
        wbkCurBook.Sheets("August FMR").Cells(i + 1, "G").Select
        For t = 1 To i
            If wbkCurBook.Sheets("August FMR").Cells(t, "B").Value = "CSE" And IsEmpty(wbkCurBook.Sheets("August FMR").Cells(i + 1, "G").Value) Then
                    top = t + 1
                    bot = i - 1
                    Let Copyrange = "J" & top & ":" & "K" & bot
                    n = Application.WorksheetFunction.CountIf(wbkCurBook.Sheets("August FMR").Range(Copyrange), ">" & 0)
                    wbkCurBook.Sheets("August FMR").Cells(i + 1, "G").Value = n
            End If
        Next t
    End If
Next i

这段代码在一张有 4000 行的表格中循环,中间有一些空白标记不同的部分。我想要代码做的是遍历每个不同的部分,并通过查找每个部分的顶行和底行来找到每个部分的非零单元格。目前代码没有中断,但它没有输出正确数量的非零单元格。由于某种原因,变量 top 保持在“2”,这会输出错误的数字。我需要 top 来找到范围的顶部,但它目前只找到第一部分并保存该范围。

标签: excelvba

解决方案


推荐阅读