2012-07-04 77 views
0

我努力做到以下幾點:推理時考慮列:不知道如何訪問「這個」值

  • 的每一行
  • 如果小區A包含文本「ABC」,然後得到上塔B值和
  • 如果上的列B值是>大於0時03分00秒返回0.9
  • 否則如果在列B值是0時03分00秒<和> 00:01:00返回0.6
  • 否則返回0.3
  • 將返回的值與所有其他值相加。

結果應該是這樣的:

=IF(ISNUMBER(FIND("abc",INDIRECT(""&$A16&""&"!$D$2:$D"))),IF(INDIRECT(""&$A16&""&"!$D$2:$D")>"00:0300,???,???),?etc??) 

???是缺少的部分。還可以刪除INDIRECT()以進行測試,但問題在於?部分。我不知道如何獲得IF語句的結果以及如何處理它。我想我不明白如何使用列。

+1

?如果A是一個數字return.03?並將返回的值與其他值相加? – datatoo

回答

2

你可能在Excel

=SUM(IF(ISNUMBER(FIND("abc",A2:A100)),LOOKUP(B2:B100,{0,1,3}/1440,{3,6,9}/10)))

使用 「陣列式」 與LOOKUP像這樣與CTRL + SHIFT確認+ Enter

或此版本的IF [編輯]

=SUM(IF(ISNUMBER(FIND("abc",A2:A100)),IF(B2:B100>="0:03"+0,0.9,IF(B2:B100>"0:01"+0,0.6,0.3))))

在Google電子表格中使用此版本

=arrayformula(SUM(IF(ISNUMBER(FIND(ʺabcʺ,A2:A100)),IF(B2:B100>=ʺ0:03ʺ+0,0.9,IF(B2:B100>ʺ0:01ʺ+0,0.6,0.3)))))

這將添加0.3總量爲其中「ABC」在列A和列B中的文本中找到的每個行是> = 0但< 0點01分,0.6。其中B> = 0:01和< 0:03和0:09如果B> = 0:09

使用LOOKUP可以更容易地避免多個IF,但我不確定它是否爲您提供了正確的值在邊界上,用第二個版本更容易調整。您可以調整範圍長度並在需要時添加INDIRECT。

注意:對於第一個條件使用FIND意味着公式將在文本中的任何位置查找「abc」(區分大小寫),如果您只想檢查確切的「abc」而沒有其他文本可用只是範圍=「ABC」 [不區分大小寫]或EXACT(範圍「ABC」) [區分大小寫]如果A不包含「ABC」你想回到什麼

+0

儘管我完全同意你的說法,但我必須說IF版本不適用於Google Spreasheet,或者至少它不適用於我。你測試過了嗎?根據我的數據,我只得到了0.3,就好像它丟棄了所有結果,但最後一個結果。隨着一些測試數據,我獲得0 – maugch

+0

你是正確的mobinoob,我錯過了第二個公式中的重要部分 - 我現在編輯它在Excel中工作。在googledocs中,你可以使用相同的公式,但包裹在arrayformula中,以使其正確工作 - 我補充說... –

+0

只有兩個+0?有用!你能否詳細說明爲什麼?(關於Arrayformula,我很抱歉,我讀過它但不確定) – maugch