[英]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.