select所有单元格彼此相等的所有行

我有一张只显示单一types信息的大型表格:某一特定研究地点是否存在一种植物。 我在第一栏列出了500多个物种,并且列出了30个站点。 该表填充了一个简单的“Y”或“N”来显示存在。 例:

Scientific Name Old Wives Beach Dadi Orote N Airstrip Abelmoschus moschatus NNN Abrus precatorius YNY Abutilon indicum NNN 

然而,物种清单包含一些在任何地点都不存在的物种,呈现出一排充满“N”的行,就像上面例子中的第一行和第三行。 我需要删除这些行以使表更易于pipe理。

有没有什么办法可以实现这个没有很长的IF和声明?

受到pnuts评论的启发,在新的专栏中,使用COUNTIF()公式。 例如, =COUNTIF(B2:AE2,"Y") ,假设行/列标题在行1和列A中,数据在范围B2:AE501 +中。

如果select整个范围,包括标题和新公式列,并添加filter,则只能selectY的计数为0的行。一旦只显示0,就可以select整个行,删除它们(使用右键单击,删除)而不影响非零行。

此时,如果您不再需要计数列,则可以closures筛选器并删除列,但是如果您发现计数因其他原因而派上用场,我不会感到惊讶。

或者,你可以使用filter隐藏0行,而不是删除它们,这样就不会完全删除数据,但它不再是你的方式。

下面的代码是这样做的一种方法,假设数据中没有空白。 animationGIF步骤来演示它如何工作。 一旦你理解了,你应该删除.select语句。

在这里输入图像说明

 Sub deleteIfAllN() Dim plantR As Range, cell As Range, allN As Boolean Set plantR = Range("A2") While plantR <> "" plantR.Select Set r = plantR.Offset(0, 1) allN = True Do r.Select If r <> "N" Then allN = False Exit Do End If Set r = r.Offset(0, 1) Loop Until r = "" Set plantR = plantR.Offset(1, 0) Rows(plantR.row - 1).Select If allN Then Rows(plantR.row - 1).Delete Wend End Sub 

您可以使用Advanced Filter

设置您的数据和标准区域如下

对于你发布的例子,公式是:

 =COUNTIF($B8:$D8,"N")<>3 

对于30列,只需修改范围和计数。

之前

在这里输入图像说明

在这里输入图像说明

我select了过滤

请注意,还有一个选项可以Copy to another location ,将filter的结果放在另一个位置。