如何将单元格与上面的上一个可见单元格进行比较



我正在尝试对其他组的可见细胞进行着色。

我的数据的每一行都包含关于给定订单的信息,每个订单可能有多行,例如,订单1可能有3行,而订单2可能有1行,等等。数据按订单号排序,因此给定订单的所有行都是连续的。

我已经将每组与包含以下公式的辅助列(AS)进行了着色:=IF(ROW()=2,TRUE,IF(A2=A1,AS1,NOT(AS1)))这导致每隔一个Order组为TRUE或False。然后我使用条件格式对每个";TRUE";一行

这一直有效,直到我开始过滤我的数据,然后我可以得到两个相邻的着色或非着色组。

我想我要找的是一个VBA函数,它将把一个单元格与以前的VISIBLE单元格进行比较,如果匹配与否,它将返回TRUE或FALSE。

任何帮助都将不胜感激。

您可以使用此代码对每隔一行进行着色

Sub ShadeThem()
Dim okShade As Boolean

Dim r As Range
For Each r In Range("A1", Cells(Rows.Count, "A").End(xlUp)).SpecialCells(xlCellTypeVisible)
If okShade Then
r.EntireRow.Interior.Color = vbRed
okShade = False
Else
okShade = True
End If
Next

End Sub

我假设您过滤的数据会影响从第1行向下的列A他们没有,只是更改了"A1"Cells(Rows.Count, "A")以影响所需的列

为了让它在每次新的过滤中运行,你可以:

  • 添加一个辅助单元格,用于统计可见行数=小计(103;A1:A1000)这将在每个过滤处触发Worksheet_Calculate事件

  • 在相关工作表代码窗格中添加Worksheet_Calculate事件处理程序

    Private Sub Worksheet_Calculate()
    ShadeThem
    End Sub
    

正如我在评论中所说,几乎可以肯定,有一种更好的方法可以用你的电子表格(一个表格!)来完成你正在尝试的工作。但是,如果你真的想用VBA自定义公式来测试单元格是否隐藏,你可以使用这个。。。

Function isHiddenRow(aRange As Range) As Boolean
isHiddenRow = aRange.EntireRow.Hidden
End Function

这个公式假设了一些可能性:

  • 只有一个单元格
  • 筛选重新计算的影响

相关内容

最新更新