我正在使用的论坛是
=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
答案 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