2013-08-23 50 views
0

我的問題是如何找到特定列和行號的相交單元格?Excel:查找行和列的交集

我的情況是這樣的:通過一些計算我找到了兩個單元,可以說B6E1。我知道我需要一排第一個和第二個一列。所以我可以使用ROWCOLUMN函數來獲取數字。之後,我需要找到一個相交的單元格。在這個例子中,這將是E6

我只是使用索引(A1:Z100;行;列)但我不知道我需要的確切區域 - 它取決於其他的東西。我可以使用類似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專家 - 我無法想出任何東西。所以任何幫助真的會被讚賞。謝謝!

回答

1

您可以使用索引/匹配組合並使用匹配查找相關單元格。對該行使用一個Match(),對該列使用一個Match()。

索引/匹配功能找到的最後一個單元在一個片材,其中

  • B列是最左邊的表列
  • 行1是最頂層錶行中列B和在
  • 數據行1可以是文字和數字的混合
  • 可以存在在B列和行空單元1
  • B列中的最後一個填充細胞標記表中的最後一行
  • 行的最後一個人口稠密的小區1標誌着表

有了這些前提的最後一列,下面將返回正確的結果,在總和()的A1用作起始細胞和索引返回該範圍內的右下單元格:

=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)))) 
+0

我已經更新了闕舉一個具體的例子。我只是想盡可能抽象,因爲這項任務 - 找到一行和一列的交集可能會有助於其他人將谷歌此頁面。 – pokrishka

+0

目前還不清楚你想達到什麼目的。您是否想要返回一個範圍以用於其他公式,例如B1:E6,還是隻想返回E6?如果是後者,你想要返回E6的地址還是值?你知道桌子的開始位置嗎?還是你需要找到起始單元? – teylyn

+1

無視最後一句話。看起來這張桌子是從B1開始的。行1中的值是文本還是數字?列B中的值是文本還是數字?如果值的類型相同,則可能不需要數組公式。整行或整列中的數組公式會非常耗費資源,並且會降低工作簿的速度。如果您可以爲第1行和第B列定義數據類型,則Match()可以比數組公式更快。 – teylyn

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

+0

這將是一個解決方案,但我在我的問題中提到我正在閱讀已關閉的工作簿,並且在這種情況下OFFSET或ADDRESS都不起作用。 – pokrishka