2012-10-10 109 views
0

我已經爲此搜索了一段時間的答案,但一直沒有任何運氣。說出來有點難,所以如果有什麼不清楚的話請告訴我。Excel公式從條件語句爲真的範圍返回一個值

我想要的是一種在兩列上執行條件語句的方法。當兩個條件都成立時,我想返回與滿足這些條件的行相同行中的第三列的值。所以如果條件在D5和C5中是真的,我想從Q5返回到公式單元格中。條件語句很簡單,但我還沒有想出最後一步。

如果我使用下面的公式,我在公式單元格中得到1,這是正確的。

=IF(AND('Stata Output'!D2:D6='Backcheck schedule and results'!C2, 'Stata Output'!C2:C6=1),1,0) 

然而,我想從拉動值的單元格區域公式中更換1給了我零每一次,我知道錯了。對於後者的公式我使用:

=IF(AND('Stata Output'!D2:D6='Backcheck schedule and results'!C2, 'Stata Output'!C2:C6=1),'Stata Output'!Q2:Q5,0) 

在哪裏我搞亂任何想法? 謝謝!

+0

編輯爲錯誤。 –

回答

0

試試下面的公式:

=LOOKUP(2,1/('Stata Output'!D2:D6='Backcheck schedule and results'!C2)/('Stata Output'!C2:C6=1),'Stata Output'!Q2:Q5) 

如果有超過一排,其中兩個條件都滿足,這個公式將返回從這些的最後山坳Q值。

1

給這個一杆 - 我敢肯定有一個更簡單的方法,但它似乎完成工作(請務必與Control+Shift+Enter數組公式輸入):

=INDEX('Stata Output'!$D$2:$Q$6,MATCH(1,(--('Stata Output'!$C$2:$C$6=1)*--('Stata Output'!$D$2:$D$6="Backcheck schedule and results")),0),14) 

這樣做是什麼將整個表格作爲範圍(第一個參數爲INDEX,然後使用MATCH查找滿足兩個條件的行(在這種情況下,列C必須爲1,而欄D中的相應值必須爲Backcheck schedule and results)。然後搜索結果數組1(表示匹配)並返回列14(它代表我們表格中的列Q)。根據需要,您可以繼續在MATCH()函數內添加濾鏡。

請注意,這隻會匹配第一個'命中'。

0

貌似AND沒有在數組公式正常工作,所以我會用這樣的:

=IF(('Stata Output'!D2:D6='Backcheck schedule and results'!C2)*('Stata Output'!C2:C6=1)=1,'Stata Output'!Q2:Q5,0) 

這會給你一個新的結果列,將從Q2:Q6欄填寫爲每個匹配的行。

要使用它,您應該選擇所有結果列,輸入公式,然後使用CTRL+SHIFT+ENTER

只要確保使用相同尺寸的使用範圍。

+0

是的,你對AND是正確的,AND的結果是一個單一的結果而不是一個數組.........但是你修改後的版本的問題是它產生一個「數組」,例如,如果第3行匹配,但其他行不匹配,則會得到{0; text; 0; 0; 0},其中text是Q3中的值.....所以需要其他函數從數組(請參閱我的答案和RocketDonkey的) - 如果輸入單個單元格中,通常只會看到該數組中的第一個值(0),但可以根據輸入公式的位置更改! –

+0

@barryhoudini,是的,它給出了一個結果數組,這個公式應該適用於一系列單元格。我想我以不同的方式理解了這個問題,他希望得到所有匹配行的結果,而不僅僅是其中的一個。 – Michael