在 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' 中)例如,a1
、b5
和 f15
包含值 -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
)以包含更多单元格。例如,如果我想添加 Z20
和 AA4
,我可以使用 CHOOSE({1,2,3,4,5},A1,B5,F15,Z20,AA4)
。每个单元格都需要单独列出。所以你不能 CHOOSE({1,2},A1,B5:B20)
我在 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' 中)例如,a1
、b5
和 f15
包含值 -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
)以包含更多单元格。例如,如果我想添加 Z20
和 AA4
,我可以使用 CHOOSE({1,2,3,4,5},A1,B5,F15,Z20,AA4)
。每个单元格都需要单独列出。所以你不能 CHOOSE({1,2},A1,B5:B20)