这是我到目前为止所拥有的:
=if(ISBLANK(A:A), (A:A+TIME(2, 0, 0)), "")
我希望脚本可以在A:A的时间基础上加2个小时,如果A:A中没有数据,则保持空白。
如果您有任何想法,将不胜感激。谢谢 :)
这是我到目前为止所拥有的:
=if(ISBLANK(A:A), (A:A+TIME(2, 0, 0)), "")
我希望脚本可以在A:A的时间基础上加2个小时,如果A:A中没有数据,则保持空白。
如果您有任何想法,将不胜感激。谢谢 :)
IFERROR(0/0)
。这与使用""
获得的空字符串不同。具有空字符串的单元格将无法使用ISBLANK()
测试为true,但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")
同样可以正常工作! - Ian Vineyiferror
比if
有更好的文档记录,但使用if
感觉比强制出错更不像是hacky。 - crantok首先,在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
更改为A2:A
。我不认为Excel支持A2:A
范围格式,但它在Google电子表格中非常有用。
=arrayformula(if(ISBLANK(A2),"",A2+TIME(2, 0, 0)))
- Chips147if
函数没有包含数组参数,因此不需要使用 arrayformula
。如果 if
函数包含数组参数,则 arrayformula
会自动填充下面的行,无需复制公式。 - daniel=arrayformula(if(ISBLANK(A:A),"",A:A+TIME(2, 0, 0)))
=arrayformula(if(ISBLANK(A2),"",A2+TIME(2, 0, 0)))
- Chips147ISBLANK(A2:A)
将为FALSE,而ISTEXT(A2:A)
将为TRUE。如果您真的想让它为空,请使用=ARRAYFORMULA(IF(ISBLANK(A2:A),,A2:A+TIME(2,0,0)))
- Fauxcuss我最终找到的解决方案实际上是对上述方法的轻微修改。当我所定位的单元格为空时,我希望源单元格返回一个空单元格,否则我希望它返回目标单元格的值(这是一个布尔值):
=IFERROR(IF(ISBLANK('1578'!$B14:C14), , '1578'!$B14:C14), "")
/** Breakdown
*
* // In my use case the target had three potential values: empty (undefined), TRUE, or FALSE
* '1578'!$B14:C14
*
* // Returns true if target cell is blank
* ISBLANK('1578'!$B14:C14)
*
* // If target cell is blank, return nothing, else return value from target cell
* IF(ISBLANK('1578'!$B14:C14), , '1578'!$B14:C14)
*
* // Return first value if no error (accounts for undefined target cell value) else return blank cell
* IFERROR(IF(ISBLANK('1578'!$B14:C14), , '1578'!$B14:C14), "")
*/