在 Excel 的值范围内找到最接近 0 的值(非数字字段)

Find closest value to 0 in range of values in Excel (with non-numeric fields)

我在 Excel 中有一系列单元格,其中包含各种正数和负数。单元格的值是由一个IF公式决定的,区域中的一些单元格没有值(“”)。

我需要找到最接近 0 的单元格的绝对值。所以如果我有一个 -10、-5、-1、3、6 和“”的列表:我需要得到一个结果1.

我尝试了多种方法,但我有非数字单元格这一事实似乎是一个导致错误的问题。

我尝试过的:

{=Min(ABS(A1:D10))},我在其中按 Ctrl-Shift-Enter(returns 由于非数字而出错)

{=IF(MAX(D3:D22)<=0,-1,IF(MIN(ABS(D3:D22))=MIN(ABS(IF(D3:D22>0,D3:D22,MAX(D3:D22)))),1,-1))*MIN(ABS(D3:D22))},我按 Ctrl-Shift-Enter(returns 由于非数字而出错)

{=IF(OR((D3:D22)>0),MIN(ABS(D3:D22)),-MIN(ABS(D3:D22)))},我在其中按 Ctrl-Shift-Enter(returns 由于非数字而出错)

=MIN(ABS(IF(ISNUMBER(D3:D22),D3:D22,9999)))

This is an array formula and must be confirmed with Ctrl+Shift+Enter

应该可以解决问题

或更好地使用:

=INDEX(D3:D22,MATCH(MIN(IF(ISNUMBER(D3:D22),ABS(D3:D22))),ABS(D3:D22),0))

This is an array formula and must be confirmed with Ctrl+Shift+Enter

不关心文本或空单元格,但数字为 0 也算...负数也将为负数(如果您总是想要正数,则需要 ABS 整个公式...

如果你有一个上限,比如 10^9,你可以做的是:

{=MIN(ABS(IF(ISNUMBER(D3:D22),D3:D22,10^9)))}

如果您发现对最小值做出任何假设有问题,请注意它肯定小于 1 + 最大数的绝对值,因此您可以使用:

{=MIN(ABS(IF(ISNUMBER(D3:D22),D3:D22,1+ABS(MAX(D3:D22)))))}

我发布这个只是因为它在其他用户提出他们的答案之前对我有用。我仍然会接受他们的答案之一而不是这个。

=MIN(IF(D3:D22>0,D3:D22,ABS(D3:D22)))

And of course I had to press Ctrl+Shift+Enter to get this to work.

这是当值不在连续单元格中时如何找到最接近零的数字? (即,不在 'range' 中)例如,a1b5f15 包含值 -3、4 和 -5。公式应 return 值 -3.

Tom Ogilvy 在 https://www.atlaspm.com/toms-tutorials-for-excel/ 回答了问题:

对于您提出的具体问题,这将 return -3

=INDEX(CHOOSE({1,2,3},A1,B5,F15),MATCH(MIN(ABS(CHOOSE({1,2,3},A1,B5,F15))),ABS(CHOOSE({1,2,3},A1,B5,F15)),0))

使用 Ctrl+Shift+Enter 输入。您可以调整 CHOOSE({1,2,3},A1,B5,F15)(替换原始公式中的 C7:C20)以包含更多单元格。例如,如果我想添加 Z20AA4,我可以使用 CHOOSE({1,2,3,4,5},A1,B5,F15,Z20,AA4)。每个单元格都需要单独列出。所以你不能 CHOOSE({1,2},A1,B5:B20)