通常,AVERAGE() 在其计算中包含非数字文字。但是,我不确定为什么将值作为参数传入会导致 AVERAGE() 忽略 FALSE 值。将参数作为数组传递给 AVERAGE() 有什么特别之处吗?我知道 AVERAGE() 会忽略通过单元格引用传入的非数字值,但我不确定数组,尤其是因为 FALSE 值在技术上是文字。
答案1
字符串作为参数
在 AVERAGE 函数中,Excel 将尝试将作为参数输入的任何字符串强制转换为数字。
因此,如果您输入FALSE
该参数,Excel 会将其强制为零。
例如,
FALSE
到0
TRUE
到1
;"1"
到1
;"6/4/2023"
到45081
数组或范围内的字符串
如果字符串是数组或范围的一部分,AVERAGE 将不会尝试将字符串强制转换为数字。
# In Argument
=AVERAGE(FALSE,10)
=5
# In Range
=AVERAGE(A1,10) // A1=FALSE
=10
# In Array
=AVERAGE({FALSE,10})
=10
如果你“确实”想要尝试将数组和范围中的字符串强制转换为数字,你可以自己触发该操作,例如,将数组或范围乘以一
# In Range
=AVERAGE(A1:A2*1) // A1=FALSE,
=5 // A2=10
# In Array
=AVERAGE({FALSE,10}*1)
=5
自动强制包含字符串的参数很可能是 Excel 试图“提供帮助”的情况,因为对该参数的任何其他解释都会假定该参数是明确添加的而没有任何实际目的。
还有其他函数示例,Excel 会尝试将包含字符串的参数强制转换为数字。通常,这些参数中的字符串作为参数也没有什么意义。例如,=SUM("4")=4
这可以反向工作,其中参数应该是两个字符串TRUE
或之一FALSE
,但仍将接受数字1
或0
作为等效项。