Excel:另一个公式内的数组公式

Excel:另一个公式内的数组公式

在此处输入图片描述

B列从列复制值A,如果它不是给定范围内的最小值,则添加 1,否则保持原样:=IF(NOT($A2=MIN($A$2:$A$7)),$A2+1,$A2)

C2在范围(带有A2:A7)中查找具有最小非零值的单元格。=MIN(IF(A2:A7>0,A2:A7))CTRLSHIFTENTER

是否可以将此数组公式用作另一个公式中的子表达式?假设我想在值A2:A7不是最小非零值时添加 1?

因此,在上面的例子中,不会向 中添加任何内容A6D2:D7值将是:

6    
5    
4    
3    
1    
1

答案1

不确定是否可以将该特定数组公式用作另一个公式的子表达式。

不过,有一个解决方法。你只需要一个-计算最小非零值的数组公式。

可以使用以下函数创建此类公式SMALL()

=SMALL($A$2:$A$7,COUNTIF($A$2:$A$7,0)+1)


找到可行的解决方案

工作表截图

其中的公式 D2只是将中的B2函数MIN()替换为以下SMALL()函数:

=IF(NOT($A2=SMALL($A$2:$A$7,COUNTIF($A$2:$A$7,0)+1)),$A2+1,$A2)

注意这个公式是不是已進入阵列!


我更喜欢重构这些类型的公式,以便它们不使用NOT()并且引用在之外IF()

=$A2+IF($A2=SMALL($A$2:$A$7,COUNTIF($A$2:$A$7,0)+1),0,1)

不过,我最喜欢的分解是这样的:

=$A2+($A2<>SMALL($A$2:$A$7,COUNTIF($A$2:$A$7,0)+1))

不幸的是,很多人发现它很老套并且难以阅读,所以我倾向于不使用它。

答案2

目前似乎存在这样的功能,以防有人遇到与我相同的问题。

利用溢出范围功能,您只需将“#”字符附加到您想要用作某些功能一部分的溢出范围的第一个单元格的地址,例如“A1#”。

答案3

@RobinCTS 发表的回答启发我对你的两个令人兴奋的公式进行了有用的修正。

在此处输入图片描述

您的第一个公式应像下面单元格 C2 中所示那样编写,以找到最小非零值。

{=MIN(IF(A2:A7>0,A2:A7,A2+1))}

在单元格 D2 中将此数组公式写入如果不是最小非零值,则加 1并填写。

{=IF(A2<>MIN(IF(A2:A7>0,A2:A7,A2+1)),A2+1,A2)}

注意: 上面写的两个公式都是数组公式,因此使用 Ctrl+Shift+Enter 完成。

相关内容