【发布时间】:2020-01-18 15:20:52
【问题描述】:
我有一个经过过滤的电子表格,我需要比较两列的值,如果它们在可见的过滤单元格中都相同,则执行宏 a,如果其中任何一个不同,则执行宏 b。
我已经尝试将范围定义为:
Set rng1 = Range("X:X").Cells.SpecialCells(xlCellTypeVisible)
Set rng2 = Range("AU:AU").Cells.SpecialCells(xlCellTypeVisible)
并定义第一个可见范围的值
valE = ActiveSheet.Range("X:X").Cells.SpecialCells(xlCellTypeVisible).Value
valX = ActiveSheet.Range("AU:AU").Cells.SpecialCells(xlCellTypeVisible).Value
我不知道如何编写一个循环遍历指定范围比较下一个可见行。我应该参考什么?
【问题讨论】:
-
首先,我会将
Range限制为小于整列... -
是的,但是宏的目的是用于多页,所以每次都可以有不同数量的记录,我无法预先定义。我对 vba 很陌生,如果我问愚蠢的问题,我很抱歉:P
-
那你可以find the last cell.
-
FWIW 无参数
Range.Cells在 99% 的情况下是完全冗余的。 -
另外 - 一个不连续的范围(假设当你过滤不连续的行是可见的) - 如果我理解你想要做什么,就不能读入这样的数组.