Excel 函数确定单元格是否可见

Excel 函数确定单元格是否可见

在条件格式中,我想检测当前单元格上方的行是隐藏还是可见。如何检测单元格是否可见?

我能想到的唯一办法是:

  1. 创建一个包含所有1值的列。
  2. 使用类似的公式subtotal(109,c2:c2)=1(即仅在我想要检查的单元格上)来确定它是可见的还是隐藏的。

有没有办法做到这一点,而不需要显示行时必须保持临时列可见?


为了避免XY问题,我想要做的是有一列作为该行的类别。具有特定类别的第一个可见行应该具有不同的样式;具有相同类别的后续行略有不同。在 ASCII 中:

cat.   item
+AAA+  aaaa
(AAA)  bbbb
(AAA)  cccc
+BBB+  dddd
(BBB)  eeee
(BBB)  ffff

如果我的过滤器隐藏了行,dddd那么我希望行eeee具有+BBB+样式。

答案1

counta您可以使用 subtotal来查看(已知非空白)单元格是否隐藏,而不是使用另一列上的总数进行 subtotal 。例如,如果列A通常是可见的(除非行被隐藏)

= IF( SUBTOTAL(103,A2)=1, "VISIBLE", "HIDDEN (or blank)" )

您可以将此公式放在可能隐藏的列中,它仍然有效。

在条件格式中,您只需使用:= SUBTOTAL(103,$A2)=1来确定该行是否可见。

答案2

作为 Phrogz 答案的补充,如果您需要检查柱子处于隐藏状态,请尝试以下任一操作,

条件格式

=CELL("width",TargetCell)=0

一旦列被隐藏,它就会自动更新。

配方检查

=IF(CELL("width",TargetCell)=0, "Cell is hidden.", "Cell is visible.")

此公式不会自动更新,您必须通过选择菜单选项或按“F9”将 Excel 引导至“立即计算”。

答案3

这与 Gary 学生的方法类似。定义以下 VBA 函数:

Function MyRowHidden(ref As Range)
    MyRowHidden = Rows(ref.Row).Hidden
End Function

如何在 MS Office 中添加 VBA? 如果你需要帮助。现在你可以使用它 来检查包含MyRowHidden(cell)cell被隐藏。

我设计的解决问题的方法是使用辅助列,但您可以隐藏它。假设您的数据从 Row 开始2,类别在 Column 中A,请输入

=OR($A1<>$A2, AND(H1,MyRowHidden(H1)))

到单元格H2,然后向下拖动。如果

  • 此行中的类别 ( A2) 与前一行中的类别不同 ( A1);即,这是新类别的第一行,或者
  • 前一行应该突出显示,但却被隐藏了。

然后只需使用条件格式来突出显示单元格A2(如果=H2为真)。

例如:原始数据:

        完整数据集

是的,我是一个传统主义者;我仍然将冥王星视为行星。这里再次隐藏了素数行(2、3、5、7、11 和 13):

        过滤数据

当然,您必须在工作簿中启用宏。

答案4

这个线程有点旧了,但万一对任何人都有帮助,这里有一种无需使用 VBA 即可在过滤表上有条件地格式化重复项的方法。

  1. 创建一个由 1 填充的列

  2. 创建另一列并在其中输入如下公式

    =IF(SUBTOTAL(103, [@ColumnWithOnlyOnesInIt])=1, [@ColumnYouWantToCheckForDuplicates], "")

  3. 在您想要检查的列上输入正常的重复条件格式。

步骤 2 中的公式将从您要检查的列中复制值,但仅当行可见时才会复制。这样,在检查重复项时,您只会获得适用于已筛选表的值。我认为这可能不适用于零(或“”或您在 if 语句中选择作为“else”值的任何值)。因此,可能可以在列表中获得突出显示为重复项的行零值。除此之外,我对这种方法很满意。

相关内容