在Excel 2010中,我建立了一个二维表,该表中填充了百分比错误。这些百分比是根据用户输入来计算的,因此值会根据用户要求的值而变化。
我想做的是能够找到表中最接近零的单元格的位置,并返回该数据点的行和列以进行进一步的计算。有没有办法不用宏就可以做到这一点?
在此先感谢您的帮助。
编辑:百分比错误是非负的,并且可能在表中出现多次。
对于绝对值相同的最接近0(例如-1和1)的单元格来说,这太不可靠了。
此数组公式将获得最接近0的绝对值:
{ = MIN( ABS( Table1 ) ) }
Table1
表或范围的名称在哪里。如果表的值分别为-1和1,则它将返回1。
然后使用这些数组公式来获取最接近0的值的最大行和最大列
{ = MAX( ROW(Table1) * (ABS(Table1) = MIN(ABS(Table1))) ) }
{ = MAX( COLUMN(Table1) * (ABS(Table1) = MIN(ABS(Table1))) ) }
更新
此数组公式应适用于您的镜像数据:
{ = ADDRESS( MIN( IF( ABS(Table1) = MIN(ABS(Table1)), ROW(Table1) ) ),
MAX( IF( ABS(Table1) = MIN(ABS(Table1)), COLUMN(Table1) ) ) ) }
ABS
如果没有负值,则可以删除零件:
{ = ADDRESS( MIN( IF(Table1 = MIN(Table1), ROW(Table1) ) ),
MAX( IF(Table1 = MIN(Table1), COLUMN(Table1) ) ) ) }
诀窍是,Min
和Max
忽略逻辑值,所以省略的第三个参数If
更新2
这个数组公式是@JohnBustos答案的简化版本(我仍然不确定他为什么使用SMALL
代替MIN
):
{ = MIN( IF(Table1=MIN(Table1), ROW(Table1)*1000 +COLUMN(Table1)) ) }
这将返回数字,例如3005
3是行,5是列,因此地址为:
{ = ADDRESS( MIN( IF(Table1=MIN(Table1), ROW(Table1)) ),
MOD(MIN( IF(Table1=MIN(Table1), ROW(Table1)*10^5 +COLUMN(Table1)) ), 10^5) ) }
由于以下Range.Find
方法,VBA版本将更加简单:
Function findMin(r As Range) As Range
Set findMin = r.Find(WorksheetFunction.Min(r))
End Function
带有示例用途:
=CELL("address", findMin(Table1))
=ROW(findMin(Table1))
=COLUMN(findMin(Table1))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句