是否有一个函数,当inputref是空的时候会返回“”,如果不是,那么它的内容呢?

国际海事组织的Excel有奇怪的待遇空细胞。

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

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

我想得到这样的工作:

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

这种forms的公式返回一个#ARG错误,正如在为什么这个数组公式中没有解释过的那样。 。

但是当我用N前缀OFFSET时,它将任何空单元格转换为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 ,因为据我所知,我需要取消引用= test的数组引用)。

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

我会接受任何解决scheme,无论每个input数组的大小,使用恒定的单元数。


编辑:

作为一个方面的评论,我想知道什么是错误的OFFSET返回的数组呢? 这个简单的例子是完美的:

在这里输入图像说明

…而OFFSET返回的数组莫名其妙地希望在公式中独处。

可能还有其他的select,但目前我看不到它…..

你可以通过使用像这样的IF来过滤掉零

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

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

编辑

这个版本应该工作

=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))))

在这里也许不完全相关,但问题是find可以处理由OFFSET返回的“引用数组”的函数,这种types的设置 – NT工作方式如下所示,还有COUNTBLANK 。 其他可用于OFFSET输出的function是SUBTOTALCOUNTIF 。 请注意, COUNTBLANK (与SUBTOTALCOUNTIF )可以在范围上工作,而TN只能使用单个值 – 如果后面的函数应用于范围,他们只需查看范围中的第一个值 – 因为我能使用不带“高度”参数的OFFSET ,但你需要用COUNTBLANK (这是一个很好的习惯,所以OFFSET应该有这里的最后一个

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

考虑在B1:

= IF(ISBLANK(A1),“nothing there”,A1)

所以如果A1包含公式:

= “”

那么B1也会显示null。

另一种可能性

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

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