【发布时间】:2016-02-26 07:47:57
【问题描述】:
这是我目前所拥有的:
=if(ISBLANK(A:A), (A:A+TIME(2, 0, 0)), "")
我希望脚本在 A:A 中增加 2 小时,或者如果 A:A 中没有数据则保持空白
任何想法将不胜感激。谢谢你:)
【问题讨论】:
-
这个脚本要进入B:B,结果也需要在B:B显示。
这是我目前所拥有的:
=if(ISBLANK(A:A), (A:A+TIME(2, 0, 0)), "")
我希望脚本在 A:A 中增加 2 小时,或者如果 A:A 中没有数据则保持空白
任何想法将不胜感激。谢谢你:)
【问题讨论】:
如果你想得到一个真正的“空白”值,你可以使用表达式IFERROR(0/0)。这与使用"" 时得到的空字符串不同。带有空字符串的单元格不会使用ISBLANK() 测试为真,但IFERROR(0/0) 会。
例如:
=IF(ISBLANK(A1),IFERROR(0/0),"not blank")
这是如何工作的:IFERROR 函数有两个参数。如果第一个参数是一个值,IFERROR 返回那个值。如果第一个参数返回错误,IFERROR 返回它的第二个参数 - 但如果没有第二个参数,它返回空白。我们使用表达式0/0 故意通过除以零来强制出错,并且因为没有第二个参数IFERROR 返回空白。
【讨论】:
IF 函数如果您遗漏其中一个参数则返回一个空白值,因此您不需要 IFERROR(0/0) 技巧。例如,=IF(ISBLANK(A1),,"not blank") 也可以正常工作!
iferror 比if 有更好的文档记录,使用if 感觉不如强制出错。
首先,在if(condition,value_if_true,value_if_false) 中,value_if_true 和 value_if_false 颠倒了。所以第一个修正是
=if(ISBLANK(A:A), "", (A:A+TIME(2, 0, 0)))
其次,这只会填满一行。但是我们可以假设你想要所有的行,所以你可以用数组公式包装它:
=arrayformula( if(ISBLANK(A:A), "", (A:A+TIME(2, 0, 0))) )
第三,我们也可以假设 row1 是表头,所以你想跳过它,所以你可以把函数放在 B2 中而不是 B1 中,并且范围需要从 A:A 更改为 @987654327 @。我认为 Excel 不支持 A2:A 范围格式,但它在 Google 电子表格中非常有用。
【讨论】:
=arrayformula(if(ISBLANK(A2),"",A2+TIME(2, 0, 0)))
if 函数不包含数组参数,因此不需要arrayformula。如果if 函数包含数组参数,arrayformula 将自动填充下面的行,而无需向下复制公式。
您需要在其周围添加 arrayformula - 并交换空字符串的位置 - 基本上看不到您想要的数据:
=arrayformula(if(ISBLANK(A:A),"",A:A+TIME(2, 0, 0)))
【讨论】:
=arrayformula(if(ISBLANK(A2),"",A2+TIME(2, 0, 0)))
ISBLANK(A2:A) 将为 FALSE,ISTEXT(A2:A) 将为 TRUE。如果您真的希望它为空白,请使用=ARRAYFORMULA(IF(ISBLANK(A2:A),,A2:A+TIME(2, 0, 0)))