2015-05-12 66 views
1

表1如何在excel中使用與IF匹配的索引?

A   B   C   D 
1 Seq  Item  Re-Order Qty On-hand Qty 
2 1   X   10   15 
3 2   Y   10   5 
4 3   Z   10   10 

其他工作表: 表2

預期輸出:

A   B   C 
1 Seq  Item  Re-Order Qty 
2 1   N/A   N/A 
3 2   Y   10 
4 3   N/A   N/A 

表2中我需要把第2列公式是這樣的:

Index(Table1[Item],Match(table2[Seq],tabel1[Seq],0) WHERE table1[reorder qty] > table1[On-hand Qty] 

我我不確定這樣的要求如何被管理?

+0

您能否用這個函數的預期輸出來填寫'Table2'?另外,你的'Table1'是否有'Seq'的多個條目?如果是這樣,你可以添加一個副本到你的輸入,並顯示在這種情況下輸出應該是什麼?看起來你只是想根據'reorder

+0

@Byron:我在'table2'中添加了預期結果。 其實你是對的我需要篩選'table1',其中onhand小於重新排序(我糾正了這一點,因爲大於號不正確)。 我知道我可以簡單地過濾,但我需要它在一個單獨的表,所以這可以通過vlookup或索引匹配管理?我的意思是,一般來說,如果某個公式被實現爲真,從數組中選擇數據? –

回答

1

這可以完成。它需要使用Table2中的數組公式。

通常使用INDEX,您只需使用一系列單元格作爲array(公式的第一個參數)。在這種情況下,我們將根據有條件的結果(您的WHERE條款)給它一個新的array返回。

我將從結果圖片開始,然後給出公式。對我而言,Table1位於左側,Table2位於右側。

picture of tables

的公式很相似,主要區別是在其產生arrayINDEXIF部分返回哪些列。所有列的IF的條件部分都是相同的。請注意,在這裏使用表格確實有助於複製公式,因爲範圍不能在我們的下面更改。

這些都是數組公式,需要用CTRL + SHIFT + ENTER輸入。

Table2[Item]

=INDEX(IF(Table1[Re-Order Qty]>Table1[On-hand Qty],Table1[Item],"N/A"), MATCH([@Seq],Table1[Seq],0)) 

Table2[Re-Order Qty]

=INDEX(IF(Table1[Re-Order Qty]>Table1[On-hand Qty],Table1[Re-Order Qty],"N/A"), MATCH([@Seq],Table1[Seq],0)) 

Table2[On-hand Qty]

=INDEX(IF(Table1[Re-Order Qty]>Table1[On-hand Qty],Table1[On-hand Qty],"N/A"), MATCH([@Seq],Table1[Seq],0)) 

這些公式背後的主要思想是:

  • 根據條件返回一個新數組。這個新數組將返回所需列(Item,Re-order,...),如果條件爲FALSE,它將返回N/A。這需要數組公式,因爲它在IF中逐行進行。
  • MATCH獲取行號的公式的一部分是「標準」。我們只需要尋找Table1中的Seq號碼。這決定了要返回的新的array的哪一行。