使用ADDRESS()返回从另一个公式(Excel)中找到的单元格

使用ADDRESS()返回从另一个公式(Excel)中找到的单元格,excel,Excel,我用一列城市名和一行相同的城市名做对照,单元格之间有一定的距离。因此,你可以想象一个由零组成的对角线,其中每个城市都会通过零距离到达自己,对角线两侧的两个三角形是彼此的镜像,它们保存着数据 现在我要做的是找到离另一个城市最近的城市。 因此,目前我可以通过以下方法成功地找到从一个城市到下一个城市的最小距离: {=MIN(如果(B2:B19>0,B2:B19))} 这使我得到了最小的零距离,但我也想要城市名称,它出现在最左边的列中 我试过使用这个: {=偏移量(间接(地址(行(),列()),0,X)

我用一列城市名和一行相同的城市名做对照,单元格之间有一定的距离。因此,你可以想象一个由零组成的对角线,其中每个城市都会通过零距离到达自己,对角线两侧的两个三角形是彼此的镜像,它们保存着数据

现在我要做的是找到离另一个城市最近的城市。 因此,目前我可以通过以下方法成功地找到从一个城市到下一个城市的最小距离: {=MIN(如果(B2:B19>0,B2:B19))}

这使我得到了最小的零距离,但我也想要城市名称,它出现在最左边的列中

我试过使用这个: {=偏移量(间接(地址(行(),列()),0,X)}

其中X=到达左侧城市名称列表所需的列偏移量。 我试着在ROW()和COLUMN()函数的开头添加MIN函数,但这会导致错误,并且不起作用

基本上,对于我发现的距离,我想获得与该距离相关的最左边一栏的城市名称。如果有人能看到我下一步应该看的地方或我出错的地方,我将不胜感激


关于

您可以尝试改用
索引
公式(如前所述,以数组形式输入):

这与上面的
MIN
公式具有相同的警告-它将匹配找到的第一个值。(注意:@barryhoudini下面的公式(
=INDEX(
)将实际保存数组条目,并且更干净)

如果要使用
间接
,可以使用(也作为数组输入):


它使用第一行作为
参数,匹配
最小值
值,并在匹配值处返回第一行单元格的
地址
。地址类似于
$D$1
,而
间接
将返回该值。

+1我喜欢索引版本但是,假设每行只有1个零,您可以使用SMALL并避免使用
=索引($B$1:$D$1,MATCH(SMALL(B2:D2,2),B2:D2,0))
@barryhoudini Great point-我将添加它(适当引用:))。
=INDEX($B$1:$D$1,1,MATCH(MIN(IF(B2:D2>0,B2:D2)),B2:D2,0))
=INDIRECT(ADDRESS(ROW($1:$1),MATCH(MIN(IF(B2:D2>0,B2:D2)),A2:D2,0)))