我刚刚发现可以非常方便地使用布尔逻辑来缩短/替换此问题中的多个嵌套 If 语句(第 4 个答案):
用这个给定的示例代替多个嵌套 IF 语句:
多重嵌套 IF 语句版本:
= IF(E3 = "red", 100, IF(E3 = "blue", 200, IF(E3 = "green", 300, IF(E3 = "orange", 400, 500))))
VS
布尔逻辑版本:
= (E3 = "red") * 100 + (E3 = "blue") * 200 + (E3 = "green") * 300 + (E3 = "orange") * 400 + (E3 = "purple") * 500
当打算返回数字时,这很有效。
如果为 true,则以下返回 100 或 200。
=(REGEXMATCH(B19,F2)) * 100 + (REGEXMATCH(B19,F40)) * 200
但是在尝试返回字符串时出现
MULTIPLY
或 ADD
错误。
例如,单元格
F2
中有 2 个字符串“Time”,单元格 F40
中有“Test”:
=(REGEXMATCH(B19,F2)) * F2 + (REGEXMATCH(B19,F40)) * F40
返回此错误:
函数 MULTIPLY 参数 2 需要数值。但“Test”是文本,不能强制转换为数字。
=(REGEXMATCH(B19,F2)) & F2 + (REGEXMATCH(B19,F40)) & F40
返回此错误:
函数 ADD 参数 1 需要数值。但“Test”是文本,不能强制转换为数字。
=(REGEXMATCH(B19,F2)) & F2 & (REGEXMATCH(B19,F40)) & F40
返回:
FALSETimeTRUE测试
有没有办法将布尔逻辑与字符串一起使用?如果可以的话像数字一样简洁?
如果字符串有的话,可以用什么运算符?
非常感谢您的帮助和见解!
当
(REGEXMATCH(B19,F2)) * F2
是数字时,布尔解决方案与 F2
一起使用的原因是,公式会转换 TRUE|FALSE * F2
,并且如果检测到您要相乘/,工作表会自动将 TRUE|FALSE
分别转换为 1|0
/添加是一个数字,因为它支持。
当
F2
是字符串时,它不支持字符串和数字相乘/相加,从而导致您的问题。
您可以使用的是
IF
的更简单版本,它不需要像您正在做的那样嵌套、外观和功能。这是IFS
。
=((REGEXMATCH(B19,F2)) * F2) + ((REGEXMATCH(B19,F40)) * F40)
=IFS(REGEXMATCH(B19,F2), F2, REGEXMATCH(B19,F40), F40)
上述解决方案也可以用于数字。