簡體   English   中英

如何根據一個條件查找范圍,然后根據另一個條件查找該范圍內的單元格

[英]How find a Range based on one criteria then a Cell within that Range based on another criteria

我需要一種方法來根據一個條件查找范圍,然后根據另一個條件查找該范圍內的單元格。

在這種情況下,我有一個工作表,您可以根據需要添加任意數量的商業房地產,然后將財務信息分散到那里。 每個房產最多可以有三年的財務狀況。 因此,在 cell("G2") 中,您將是第一個屬性名稱,然后在 range("G3:I3") 中將是每個報表點差的報表日期,而 range("G38:I38") 包含我最終需要的數據提取。 任何其他屬性都將具有相同的行號,但所有內容都將在右側 6 列。

所以基本上我需要找到屬性名稱,然后在該范圍內(比如(“G2:I60”))我需要根據所需的聲明日期在 G38、H38 或 I38 中找到那些數據。

現在我有兩個用戶表單; 1 顯示所有屬性名稱,在您選擇后,它會顯示顯示語句日期的第二個使用表單。

任何人都可以幫助解決這個問題。 讓我知道是否有任何我需要解釋的未知數,因為這對我來說很難用語言表達。

示例:

Property Name:  DEF St                                      
                12/31/2013  12/31/2014  12/31/2015
Rental Income       150         240         485
Expenses            100         200         300
Net Income          50          40          185

Property Name:  ACME St 
                12/31/2013  12/31/2014  12/31/2015
Rental Income       100         120         350         
Expenses            75          125         180         
Net Income          66          76          266         

在此示例中,當從列表框中選擇時,我需要第一個用戶表單來查找屬性 DEF St,然后查找從下一個用戶表單的列表框中選擇的任何報表數據的凈收入。

概念證明

POC

數據的布局類似於上圖所示的布局。 樣本數據在第 2 至 6 行,公式在 G10:G14 的樣本數據下方。 J、K 或 L 列是否存在並不重要。

INDEX 函數在這個例子中被大量使用來確定你的拾取點或你的范圍。 有很大的可能性可以簡化它。

G10 是選擇的屬性
G11 是選擇的日期

G12 到 G14 是一個公式,它使用以下公式從相應的屬性和日期中提取適當的值:

=INDEX(INDEX($G$2:$O$6,1,MATCH($G$10,INDEX($G$2:$O$6,1,0),0)):INDEX($G$2:$O$6,5,MATCH($G$10,INDEX($G$2:$O$6,1,0),0)+2),MATCH($F12,$F$2:$F$6,0),MATCH($G$11,INDEX($G$2:$O$6,2,MATCH($G$10,INDEX($G$2:$O$6,1,0),0)):INDEX($G$2:$O$6,2,MATCH($G$10,INDEX($G$2:$O$6,1,0),0)+2),0))

這被放置在Cell G4中並復制下來

它是如何工作的:

INDEX 返回與提供給它的信息相匹配的地址/范圍。 我通過硬編碼數值或使用 MATCH 函數來確定位置來定義適當的行。

INDEX($G$2:$O$6,1,MATCH($G$10,INDEX($G$2:$O$6,1,0),0))

式的這個部分告知Excel通過范圍外表G2:O6 ,限制了其行與到行1 1 ,然后確定在與列外表MATCH($G$10,INDEX($G$2:$O$6,1,0),0)

為了分解匹配正在做什么,它試圖在 G2:O6 的第一行范圍內的單元格 G10(屬性)中找到值。 有第一個 0 有兩個原因。 由於范圍是 2 維,因此您似乎需要在此處指定一些值,否則盡管將其標記為可選,您仍會收到錯誤消息。 第二個原因是 0 告訴索引使用所有列或行,具體取決於它是在 INDEX 公式的列部分還是行部分中使用。 第二個 0 告訴索引查找完全匹配。

因此,當成功評估此部分時,它將返回 M2 的地址。 然后重復此過程,但將匹配結果添加 2 以將我們放入 O 列並硬編碼 5 以獲取 O6 的地址。 所以這里使用一點縮寫作為例子,上面的公式:

INDEX():INDEX()

示例數據最終被評估為:

M2:O2

然后通過在我們剛剛確定的這個范圍內使用類似的 MATCH 和 INDEX 組合,我們計算出該范圍中的 3 列中哪些與日期匹配,以及 5 行中的哪些與 F12 到 F14 中左側的單詞匹配。 這可能是硬編碼的,但我選擇將其保留為變量,以防數據順序與顯示順序不同。

拼寫和日期完全匹配很重要。 尾隨空格會為循環拋出一些東西,並且可能會得到一些意想不到的結果。 您還可以使用“”或“未找到”將整個公式包含在 IFERROR() 函數中以獲取錯誤結果。 這將防止在未輸入所有信息時在單元格中顯示 excel 錯誤消息。

暫無
暫無

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

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