簡體   English   中英

Excel,要根據其值查找一個單元格,然后從先前找到的單元格位置開始查找另一個單元格

[英]Excel, To find a cell based on its value then find another cell starting the search from the previously found cell position

我有一個巨大的Excel工作表,我需要從中提取一些數據...

為了簡化我到底想做什么,我將提供一個簡單的示例...

Excel工作表范例

現在讓我解釋一下這是什么以及我要實現的目標...

在圖像中,左側第一個表格包含以下內容:

B1 / B2 / B3分別代表1號樓,2號樓和3號樓。每個建築物包含3層,F1 / F2 / F3每個層都有3個正在進行的不同任務,T1 / T2 / T3每個任務的前面都有兩個值V1 / V2,分別是任務的計划進度和實際進度。

在右表中,我想從左表中提取所有建築物和所有樓層的任務1(T1)的所有值...

首先想到的是通過將右表上的每個單元格與其左表上的核心單元鏈接來進行手動提取,但是,對於數百個建築物,20層或30層以及第10項任務,這種手動提取似乎需要一個月的工作。 。

另一種方法是通過找到每個任務並將其數據提取到新表中來自動執行此操作,但是這里存在很大的問題...

每個相似的任務都被命名為相同的任務,因此在我們的示例中有9個T1和9個T2和9個T3。 地板也一樣,每個地板有三個...

唯一與眾不同的是B1 / B2 / B3樓

所以我的問題是,(解釋我的想法):

有沒有一種方法可以讓我們在示例B2(位於2號樓)中進行搜索,一旦找到,它就會從該位置(A14)開始另一個搜索,然后向下尋找F2的“第一次出現”位於2樓)(因此它也沒有找到3號樓的F2),一旦找到它,便從此B2 / F2位置(A19)開始新搜索,然后向下查找T1的“首次出現”是任務1),然后找到它,提取它前面的數字(說一個在第二個值V2下的數字),並將其放在右邊的表中,該表是B2中V2下的任務1表(T1)。 F2的前面。

如何實現這一目標?在我們的示例中,公式是什么,或者在M5中應該是什么才能完成這項工作? 如果甚至可以通過其他方式實現!

最好的問候,謝謝您的幫助。

M5的公式將是(使用ctrl + shift + enter輸入為數組公式):

=INDEX($B:$C,MATCH($I$1,IF(ROW($A:$A)>MATCH($I5,IF(ROW($A:$A)>MATCH(IF(M$2="",L$2,M$2),$A:$A,0),$A:$A),0),$A:$A),0),MATCH(M$3,$B$1:$C$1,0))

可以將其復制以填寫表格的其余部分。

編輯您可以通過將其限制在特定范圍而不是整個列中來使其更快:

=INDEX($B$1:$C$39,MATCH($I$1,IF(ROW($A$1:$A$39)>MATCH($I5,IF(ROW($A$1:$A$39)>MATCH(IF(M$2="",L$2,M$2),$A$1:$A$39,0),$A$1:$A$39),0),$A$1:$A$39),0),MATCH(M$3,$B$1:$C$1,0))

EDIT2:關於嵌套MATCH公式的快速解釋:從第三個MATCHMATCH(IF(M$2="",L$2,M$2),$A:$A,0) 這將在A列中找到包含“ B2”(14)的行,因此公式變為。

=INDEX($B:$C,MATCH($I$1,IF(ROW($A:$A)>MATCH($I5,IF(ROW($A:$A)>14,$A:$A),0),$A:$A),0),MATCH(M$3,$B$1:$C$1,0))

在比較第二個IF使用“ 14”,它將把A列中的所有值作為一個數組返回,但前14行除外(在數組中為FALSE 然后,第二個MATCH可以在該數組中找到“ F2”的第一個實例(19)。 現在的公式是:

=INDEX($B:$C,MATCH($I$1,IF(ROW($A:$A)>19,$A:$A),0),MATCH(M$3,$B$1:$C$1,0))

重復與之前相同的過程,以在第19行之后獲取“ T1”的第一個實例的行。這是饋入INDEX的行。 最后一個MATCH給出INDEX的列。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM