是否有一个函数,当输入ref为空时返回“”,如果不是则返回其内容?

时间:2013-11-07 16:15:08

标签: excel excel-formula

IMO Excel对空细胞进行了奇怪的处理。

我正在构建一个复杂的数组公式。其中一个引用范围包含可能或可能不为空的单元格,如果不为空,则它们可以包含数值和字符串。

如果单元格不为空,我可以使用什么函数来获取单元格的值,如果单元格为空,可以使用“”(或其他任何非数字的,例如#N/A

我想得到这样的工作:

=MIN(OFFSET(<column vector that contains text, numbers and empty cells>;<row vector of indices>-1;0))

此形式的公式会返回#ARG错误,如Why this array formula doesn't work?的答案中所述。

但当我在OFFSET前加N时,会将任何空单元格转换为0,因此最终结果为0(除非在=MIN(L(OFFSET(<column vector>;<row vector of indices>-1;0))) 中有负数列矢量)。

OFFSET

是否有任何公式,只取消引用=MIN(IF(OFFSET(<column vector>;<row vector of indices>-1;0)="",L(OFFSET(<column vector>;<row vector of indices>-1;0)),"")) 返回的引用,保留空单元格的“空白”?或者也许有另一种解决问题的方法,比如

#ARG

(此示例也失败了=,因为据我所知,我还需要取消引用OFFSET测试的数组引用。

如果可能的话,我更喜欢使用Excel 2007内置函数。而且没有VBA。

我会接受任何解决方案,使用恒定数量的单元格而不管每个输入数组的大小。


编辑:

作为旁注,我想知道OFFSET返回的数组有什么问题?这个简单的例子非常有效:

enter image description here

...虽然{{1}}返回的数组不知何故想在公式中单独存在。

3 个答案:

答案 0 :(得分:3)

可能还有另一种选择,但目前我还没有看到它......

您可以使用像这样的IF

来过滤掉零

=MIN(IF(N(OFFSET(INDIRECT($A$2),$C4:$G4-1,0))<>0,N(OFFSET(INDIRECT($A$2),$C4:$G4-1,0))))

但是这不会区分范围内的任何实际零和N函数遇到空白或文本时产生的零

修改

此版本应该可以使用

=MIN(IF(COUNTBLANK(OFFSET(INDIRECT($A$2),$C4:$G4-1,0,1))+LEN(T(OFFSET(INDIRECT($A$2),$C4:$G4-1,0,1))),"",N(OFFSET(INDIRECT($A$2),$C4:$G4-1,0,1))))

这里可能并不完全相关,但问题是找到可以处理OFFSET返回的“引用数组”的函数,这种类型的设置 - NT工作如此处所示COUNTBLANK。可以在OFFSET输出上使用的其他函数是SUBTOTALCOUNTIF。请注意,COUNTBLANK(以及SUBTOTALCOUNTIF)可以在范围内工作,而TN仅适用于单个值 - 如果后者的功能是应用于范围,他们只是查看范围中的第一个值 - 因为我能够使用OFFSET而没有“高度”参数,但你需要使用COUNTBLANK(这是一个好习惯进入所以OFFSET应该有最后的1在这里

= OFFSET(INDIRECT($ A $ 2),$ C4:$ G4-1,0,1)

答案 1 :(得分:0)

在B1中考虑:

= IF(ISBLANK(A1),“没有”,A1)

因此,如果A1包含公式:

= “”

然后B1也会显示空值。

答案 2 :(得分:0)

另一种可能性:

=MIN(CELL("contents",OFFSET(INDIRECT($A$2),N(INDEX($C4:$G4-1,)),0)))

注意N(INDEX(...))部分是用于强制执行数组评估的技巧。