我需要检查多个单元格,如果所有单元格中的值都是数字,则返回 TRUE。例:
A2,A4, A5,A8,A12,A16 <p>
目前我正在编写如下公式:
=IF(AND(ISNUMBER(A2),ISNUMBER(A4),ISNUMBER(A5),ISNUMBER(A8),ISNUMBER(A12),ISNUMBER(A16)),"All Numbers","Some not numbers")
有没有办法编写只有一个ISNUMBER
函数的公式,该函数将单元格数组传递给该函数?
如果数字永远不是零和正数:
=IF(INDEX(FREQUENCY((A2,A4,A5,A8,A12,A16),0),2)=COUNTA(A2,A4,A5,A8,A12,A16),"All Numbers","Some not numbers")
否则:
=IF(SUM(COUNTIF(INDIRECT({"A2","A4","A5","A8","A12","A16"}),{">=0";"<0"}))=COUNTA(INDIRECT({"A2","A4","A5","A8","A12","A16"})),"All Numbers","Some not numbers")
如果您执行此检查的单元格范围是固定的,而不是动态的,那么我们可以将其缩短为:
=IF(INDEX(FREQUENCY((A2,A4,A5,A8,A12,A16),0),2)=6,"All Numbers","Some not numbers")
或:
=IF(SUM(COUNTIF(INDIRECT({"A2","A4","A5","A8","A12","A16"}),{">=0";"<0"}))=6,"All Numbers","Some not numbers")
问候
检查的单元格位于连续数组中,则可以将数组公式与isnumber
函数一起使用:
=ISNUMBER(A2:A5)
,然后按ctrl+shift+enter
,而不仅仅是enter
。然后查看单元格时,公式应用大括号括起来,例如{=ISNUMBER(A2:A5)}
但是,如果单元格不在连续数组中,这将不起作用
坦率地说,既然您希望它们在这些单元格上输入数字,为什么不直接使用数据验证呢?(可在"数据验证">"数据"选项卡上找到(。选择十进制,您甚至可以设置最小值到最大值的范围。我个人认为这是针对您的情况的更合理的解决方案,因为用户将无法输入数字以外的值。
COUNT
函数仅计算数字(不计算文本或错误值或逻辑值或空白(,因此此公式将给出与具有多个ISNUMBER
函数的当前公式相同的结果
=IF(COUNT(A2,A4,A5,A8,A12,A16)=6,"All Numbers","Some not numbers")