繁体   English   中英

Excel-如果公式返回“”,则删除行

[英]Excel - Delete rows if formula returns “”

我正在使用的论坛是

=IF(E7<30,E7,"")

编辑:更具体地说:

 =IF(E7<30,CONCATENATE(A7,B7,C7,"-",TEXT(D7,"hh:mm:ss"),"-",E7),"")

这给我留下了288000个空白行。 我希望能够一起查看所有具有返回值的单元格。 而不是必须浏览所有这些内容。 我尝试使用查找和替换方法,但是单元格当然仍然包含公式,而不是它显示的实际返回值。

样品。

15  Mar 2015    00:23:00    100.024         
15  Mar 2015    00:24:00    90.033          
15  Mar 2015    00:25:00    80.142          
15  Mar 2015    00:26:00    70.577          
15  Mar 2015    00:27:00    61.508          
15  Mar 2015    00:28:00    53.056          
15  Mar 2015    00:29:00    45.312          
15  Mar 2015    00:30:00    38.368          
15  Mar 2015    00:31:00    32.347          
15  Mar 2015    00:32:00    27.443          15Mar2015-00:32:00-27.443
15  Mar 2015    00:33:00    23.934          15Mar2015-00:33:00-23.934   
15  Mar 2015    00:34:00    22.117          15Mar2015-00:34:00-22.117
15  Mar 2015    00:35:00    22.111          15Mar2015-00:35:00-22.111
15  Mar 2015    00:36:00    23.695          15Mar2015-00:36:00-23.695
15  Mar 2015    00:37:00    26.43           15Mar2015-00:37:00-26.43
15  Mar 2015    00:38:00    29.895          15Mar2015-00:38:00-29.895

对于VBA来说,这是更好的工作-如果要获取列表并进行压缩,则必须使用数组函数-这非常繁重。此函数将以压缩的方式返回行-但也会破坏工作簿288,000行-

CTRL SHIFT ENTER->

   =SMALL(IFERROR(1/($E$5:$E$20<30)*ROW($E$5:$E$20),""), ROWS($F$4:F4))

那只会为您提供行号-因此,您可以在其旁边编写一个引用结果的函数,如下所示:

=CONCATENATE(INDIRECT("A"&F5),INDIRECT("B"&F5),INDIRECT("C"&F5),"-",TEXT(D5,"hh:mm:ss"),"-",INDIRECT("E"&5))

索引功能也可以工作。VBA确实是解决此问题的方法。

如果您倾向于使用公式来执行此操作,则可以像下面这样在数据集旁边创建if语句:(公式假定位于F列中)

 if(E5<30, max(f$4:f$4)+1, "")

然后像这样做一个指数公式

 index(A$5:A$10000, match(rows(l$5:l5), $F$5:$F$10000, 0))

然后把那个公式

然后在那上面运行concat ...

不建议这样做。 让我知道您是否想要VBA答案。

我们可以为运行此例程做一个捷径(假设您的数据从A2 btw开始)。 让我知道。

Sub Under30()
row1 = 2 ''starting row number
row2 = row1
Do While Cells(row1, 1) <> ""
        If Cells(row1, 5) < 30 Then
            'if e column is less than 30
            myTime = Application.WorksheetFunction.Text(Cells(row1, 4),"hh:mm:ss")
            Cells(row2, 6) = Cells(row1, 1) & Cells(row2, 2) & Cells(row1, 3) & "-" & myTime & "-" & Cells(row1, 5)
            row2 = row2 + 1
        End If
            row1 = row1 + 1
Loop
End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM