是否有一个函数,当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的设置 – N
和T
工作方式如下所示,还有COUNTBLANK
。 其他可用于OFFSET输出的function是SUBTOTAL
和COUNTIF
。 请注意, COUNTBLANK
(与SUBTOTAL
和COUNTIF
)可以在范围上工作,而T
和N
只能使用单个值 – 如果后面的函数应用于范围,他们只需查看范围中的第一个值 – 因为我能使用不带“高度”参数的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(...))
部分是用于执行数组评估的技巧。