我的问题是如何找到特定列和行号的交叉单元格?
我的情况是这样的:通过一些计算,我找到两个单元格,让我们说 B6 和 E1 。我知道我需要第一行的一行和第二行的一行。所以我可以使用 ROW 和 COLUMN 函数来获取数字。在那之后,我需要找到一个相交的单元格。在这个例子中,这将是 E6 。
我只想使用 INDEX(A1:Z100; ROW; COLUMN),但我不知道我需要的确切区域 - 这取决于其他东西。我可以使用像 A1:XFG65000 这样的东西,但这太蹩脚了。我也可以使用 INDIRECT(ADDRESS())的组合,但是我从已关闭的工作簿中提取数据,因此 INDIRECT 将无效。
如果这有助于了解这一切是什么 - 这是一个具体的例子: 我需要找到我将使用的工作表的一部分的限制。我知道它从列 B 开始,一直向下到此列中的最后一个非空单元格。此范围以最后一列结尾,该列在第一行中具有任何值。所以要定义它 - 我需要找到最后一列和最后一行的交集,其中B列中的值。 我使用这个数组公式来查找最后一列:
INDEX(1:1; MAX((1:1·;> “中”)*(COLUMN(1:1))))
这个数组公式找到最后一行:
INDEX(B:B; MAX((B:B<> “中”)*(ROW(B:B)))
最后一列产生 E1 ,最后一行产生 B6 。现在我需要将我的范围定义为 B1:E6 ,如何将 E6 全部放入生成的公式中?我已经考虑了一段时间而不是和Excel专家 - 我无法想出任何东西。所以任何帮助都会非常感激。谢谢!
答案 0 :(得分:1)
您可以使用索引/匹配组合并使用匹配来查找相关单元格。对该行使用一个Match(),对该列使用一个Match()。
索引/匹配函数,用于查找工作表中的最后一个单元格
使用这些前提,以下内容将返回正确的结果,在Sum()中使用A1作为起始单元格,使用Index返回范围的右下角单元格:
=SUM(A1:INDEX(1:1048576,MAX(IFERROR(MATCH(99^99,B:B,1),0),IFERROR(MATCH("zzzz",B:B,1),0)),MAX(IFERROR(MATCH(99^99,1:1,1),0),IFERROR(MATCH("zzzz",1:1,1),0))))
由于您似乎位于使用分号作为列表分隔符的系统上,因此以下是带分号的公式:
=SUM(A1:INDEX(1:1048576;MAX(IFERROR(MATCH(99^99;B:B;1);0);IFERROR(MATCH("zzzz";B:B;1);0));MAX(IFERROR(MATCH(99^99;1:1;1);0);IFERROR(MATCH("zzzz";1:1;1);0))))
答案 1 :(得分:0)
Offset
似乎是要走的路
=OFFSET($A$1,ROW(CELL1)-1,COLUMN(CELL2)-1)
(需要 -1 ,因为我们在A1中已经有1列和1行)
在您的示例中,=OFFSET($A$1,ROW(B6)-1,COLUMN(E1)-1)
会给出E6中的值
如果您想要位置,还有ADDRESSS
:=ADDRESS(ROW(B6),COLUMN(E1))
给出答案 $ E $ 6