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的结果放在另一个位置。