【问题标题】:In Google sheets, how does one either return a blank cell or perform a function based on another cells lack of content?在 Google 表格中,如何返回空白单元格或基于另一个单元格缺少内容来执行功能?
【发布时间】: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显示。

标签: google-sheets spreadsheet


【解决方案1】:

如果你想得到一个真正的“空白”值,你可以使用表达式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") 也可以正常工作!
  • Google 在 IFERROR 上的 support documentation 说:“如果第一个参数不是错误值,则返回,否则返回第二个参数,如果第二个参数不存在,则返回空白。” IF 上的 documentation 不是很明确,但它确实说“value_if_false - [可选 - 默认为空白]”。
  • IFS 上的documentation 没有提到它,但是如果你省略一个值参数,它确实会返回一个空白值。
  • 非常有帮助的评论!需要注意的是,这不是 Excel 默认使用的行为。
  • 即使iferrorif 有更好的文档记录,使用if 感觉不如强制出错。
【解决方案2】:

首先,在if(condition,value_if_true,value_if_false) 中,value_if_truevalue_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 将自动填充下面的行,而无需向下复制公式。
  • A2:Google 表格肯定支持范围格式,尽管发布时可能不支持。
【解决方案3】:

您需要在其周围添加 arrayformula - 并交换空字符串的位置 - 基本上看不到您想要的数据:

=arrayformula(if(ISBLANK(A:A),"",A:A+TIME(2, 0, 0)))

【讨论】:

  • 结束了,然后把公式往下拉:) =arrayformula(if(ISBLANK(A2),"",A2+TIME(2, 0, 0)))
  • 之所以使用数组公式,是为了不用往下拖,也可以放在B1,稍微改一下:=arrayformula(if(ISBLANK(A2:A) ,"",A2:A+TIME(2, 0, 0)))
  • 这确实使单元格为空白,它将一个空字符串放入单元格中,因此如果您在其他地方的单元格上进行测试,ISBLANK(A2:A) 将为 FALSE,ISTEXT(A2:A) 将为 TRUE。如果您真的希望它为空白,请使用=ARRAYFORMULA(IF(ISBLANK(A2:A),,A2:A+TIME(2, 0, 0)))
  • @Monkey47 是正确的,这不应该是“正确”的答案,即使它帮助 OP 解决了问题(或者如果它以前是正确的但不再是正确的)。就获得空白单元的解决方案而言,伊恩·维尼 (Ian Viney) 的答案是“正确的”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-03
  • 2021-09-25
相关资源
最近更新 更多