Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 选择所有单元格彼此相等的所有行_Excel_Select_Conditional - Fatal编程技术网

Excel 选择所有单元格彼此相等的所有行

Excel 选择所有单元格彼此相等的所有行,excel,select,conditional,Excel,Select,Conditional,我有一个大表格,只显示了一种信息:某个研究地点是否存在某种植物。我有500多个物种列在第一栏,30个网站作为列名。表格中填充了一个简单的“Y”或“N”以显示状态。例如: Scientific Name Old Wives Beach Dadi Orote N Airstrip Abelmoschus moschatus N N N Abrus precatorius Y

我有一个大表格,只显示了一种信息:某个研究地点是否存在某种植物。我有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”,就像上面示例中的第一行和第三行一样。我需要删除这些行以使表更易于管理


没有长时间的IF和声明,有没有办法实现这一点

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

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

此时,如果您不再需要count列,您可以关闭过滤器并删除该列,但是如果您发现由于其他原因计数很方便,我也不会感到惊讶


或者,您可以使用筛选器隐藏0行,而不是删除它们,这样就不会完全删除数据,但不再妨碍您的工作。

下面的代码是一种方法,假设数据中没有间隙。动画gif逐步演示其工作原理。理解.select语句后,应将其删除

Sub-deleteIfAllN()
Dim PLANT作为范围,单元格作为范围,allN作为布尔值
设置plantR=范围(“A2”)
而花盆“
植物选择
设置r=种植机偏移(0,1)
allN=真
做
r、 挑选
如果r“N”,那么
allN=False
退出Do
如果结束
设置r=r.Offset(0,1)
循环直到r=“”
设置种植园=种植园偏移(1,0)
行(plantR.row-1)。选择
如果为allN,则为行(plantR.row-1)。删除
温德
端接头

您可以使用
高级过滤器

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

对于您发布的示例,公式为:

=COUNTIF($B8:$D8,"N")<>3
=COUNTIF($B8:$D8,“N”)3
对于30列,只需修改范围和计数

之前

之后

我选择就地过滤

请注意,还有一个选项可以
复制到另一个位置
,这将把筛选结果放在另一个位置

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