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

时间:2015-03-16 22:08:46

标签: excel formula

我正在使用的论坛是

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

编辑:更具体地说:

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

这让我留下了288000个空行。我希望能够看到所有具有返回值的单元格。而不是必须滚动所有这些。我尝试过使用find和replace方法,但当然单元格仍然包含公式,而不是它显示的实际返回值。

样品。

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

2 个答案:

答案 0 :(得分:0)

这对VBA来说是一个更好的工作 - 如果你想要一个列表并压缩它,你将不得不使用一个非常重的数组函数..这个函数将以一种浓缩的方式返回你的行 - 但也会打破你的工作簿288,000行 -

CTRL SHIFT ENTER - &gt;

   =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答案,请告诉我。

答案 1 :(得分:0)

我们可以做一个快捷方式来运行这个例程(假设你的数据从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