【发布时间】:2017-08-29 00:02:49
【问题描述】:
基本上,我正在寻找一种在矩阵中查找给定文本/数值的方法,并返回单元格(行和列)的坐标,以便我可以用来计算矩阵中给定单元格之间的“距离”。有任何想法吗?我一直在研究并发现有关 INDEX/MATCH 组合的信息,但 MATCH 仅适用于一维数组。
【问题讨论】:
-
听起来像一些示例数据,预期结果可能会有所帮助
标签: excel
基本上,我正在寻找一种在矩阵中查找给定文本/数值的方法,并返回单元格(行和列)的坐标,以便我可以用来计算矩阵中给定单元格之间的“距离”。有任何想法吗?我一直在研究并发现有关 INDEX/MATCH 组合的信息,但 MATCH 仅适用于一维数组。
【问题讨论】:
标签: excel
我找到了一个解决方案,前提是矩阵不包含重复条目。 (否则,这些公式将不起作用。)可能仍然可以使用重复的条目来完成,但公式会更复杂。现在我假设没有重复的条目。也就是说,这就是我发现的:
求行号的公式:
= SUMPRODUCT(MMULT(TRANSPOSE(ROW(<matrix>)),(<matrix>=<input value>)+0))
计算列号的公式:
= SUMPRODUCT(MMULT((<matrix>=<input value>)+0,TRANSPOSE(COLUMN(<matrix>))))
注意:对于这两种情况,您必须在公式框中输入公式后按Ctrl+Shift+Enter,否则公式会报错。
【讨论】:
这是另一种方式。假设 A2:E10 包含表,而 G2 包含感兴趣的值。
返回原生行号:
H2, confirmed with CONTROL+SHIFT+ENTER
=SMALL(IF(A2:E10=G2,ROW(A2:E10)),1)
返回原生列号:
I2, confirmed with CONTROL+SHIFT+ENTER
=SMALL(IF(INDEX(A:E,H2,0)=G2,COLUMN(A2:E10)),1)
请注意,如果感兴趣的值出现不止一次,则返回第一个(最左上角)的行号和列号。
【讨论】: