1

IMO Excel 对空单元格进行了奇怪的处理。

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

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

我想得到这样的工作:

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

这种形式的公式会返回一个#ARG错误,正如对为什么这个数组公式不起作用的答案中所解释的那样?.

但是当我加上前缀OFFSETN,它会将任何空单元格转换为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,因为据我所知,我还需要取消引用=测试的数组引用)。

如果可能的话,我更愿意保留 Excel 2007 的内置函数集。而且没有VBA。

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


编辑:

作为旁白,我想知道OFFSET无论如何返回的数组有什么问题?这个简单的例子完美地工作:

在此处输入图像描述

...而返回的数组以OFFSET某种方式希望在公式中独处。

4

3 回答 3

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 返回的“引用数组”的函数 -N并按T此处和COUNTBLANK. 可以在 OFFSET 输出上使用的其他功能是SUBTOTALCOUNTIF。请注意,COUNTBLANK(与SUBTOTALand一起COUNTIF)可以在范围上工作,而T并且N仅适用于单个值 - 如果后一个函数应用于范围,它们只会查看范围中的第一个值 - 因为我能够在OFFSET没有 "的情况下使用高度”参数,但你需要它COUNTBLANK(这是一个好习惯,所以OFFSET应该有最后的 1 就像这里

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

于 2013-11-07T16:48:40.810 回答
0

另一种可能:

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

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

于 2014-11-08T10:38:44.630 回答
0

在 B1 中考虑:

=IF(ISBLANK(A1),"什么都没有",A1)

因此,如果 A1 包含公式:

=""

然后 B1 也会显示空值。

于 2013-11-07T16:21:22.283 回答