我有一张大桌子,只显示一种类型的信息:某个研究地点是否有一种植物。我在第一列中列出了500多种,在列名中列出了30个站点。该表填充了一个简单的" Y"或" N"显示存在。例如:
Scientific Name Old Wives Beach Dadi Orote N Airstrip
Abelmoschus moschatus N N N
Abrus precatorius Y N Y
Abutilon indicum N N N
但是,物种列表包含一些物种,这些物种不会出现在任何地点,使得一行充满了" N" s,就像上面例子中的第1行和第3行一样。我需要删除这些行,以使表更易于管理。
如果没有长的IF AND声明,有没有办法实现这个目标?
答案 0 :(得分:1)
受到pnuts评论的启发,在新专栏中,使用a COUNTIF()
公式。例如,=COUNTIF(B2:AE2,"Y")
,假设行/列标题位于第1行和第A列,数据位于B2:AE501 +中。
如果然后选择整个范围,包括标题和新公式列并添加过滤器,那么您只能选择Y的计数为0的行。一旦只有0显示,您可以选择整行并删除它们(使用右键单击,删除)而不影响非零行。
此时,如果您不再需要计数列,可以关闭过滤器并删除列,但如果您发现计数因其他原因而派上用场,我不会感到惊讶。
或者,您可以使用过滤器来隐藏0行而不是删除它们,这样就不会完全删除数据,但它不再适合您。
答案 1 :(得分:0)
下面的代码是一种方法,假设数据中没有间隙。动画gif逐步演示如何工作。一旦理解了,就应该删除.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
答案 2 :(得分:0)