2015-06-03 113 views
1

我有一些字符串與相應的值。給定一組關鍵字,我想返回行字符串與給定關鍵字之一相匹配的所有值的總和。總和結果匹配數組值。

我已提供的示例工作簿這裏:由於

https://onedrive.live.com/redir?resid=73DBED9E450E4673!107&authkey=!ALLfOf0NyFxao-U&ithint=file%2cxlsx

我知道你可以使用INDEX和MATCH匹配多個值,但是我還沒有這種做法得到了很遠的我似乎試圖將一個數組與另一個數組進行比較,而INDEX MATCH方法似乎採用有限或固定範圍的關鍵字進行比較。

任何幫助或指針將不勝感激。

回答

1

我相信你可能錯過了,當你試圖將一個字符串匹配到一個單元格時,你可以使用通配符。

使用公式=SUMIF(data!A:A;"*Alaska*";data!B:B)我想我得到你想要的那個關鍵字的結果。假設您要測試的狀態位於單元格A3中,則此公式的稍微更一般的形式爲=SUMIF(Data!A:A;"*"&A3&"*";Data!B:B)

如果你想測試幾個,我只是在上面的表格中添加幾個sumifs,除非你想使用很多標準。如果是這樣的話,你將不得不使用一個數組公式,=SUM(SUMIF(data!A:A;{"*Alaska*";"*Alabama*"};data!B:B))的形式等等。在這個the answer更多一點我複製該解決方案從;)

我不認爲有任何在搜索詞中包含通配符和範圍的方法,但我當然可能會誤解。

+0

非常感謝eirikdaude,這與我所需要的更接近。我已更新示例表以顯示您的結果:b)。 這個公式的問題在於,當我引用關鍵字而不是將它們指定爲字符串時,似乎無法使其發揮作用。查看結果c) – webjames

+0

您必須輸入狀態名稱,包括通配符,用於要在花括號('{}')內檢查的狀態。或者你可以使用Tom Sharpe建議的公式,我認爲這也適用,但這可能不太容易閱讀。@webjames – eirikdaude

+1

我使用這兩個公式得到相同的答案(測試阿拉巴馬州)。可以使用= SUMIF(Data!A:A,「*」&A3&「*」,Data!B:B)使其稍微更一般化(在符號前後應該有「*」)? –

1

下面是一個數組公式版本(F1): - 使用按Ctrl輸入

=SUM(Data!B$2:B$99999*(LEFT(Data!A$2:A$99999,LEN(A3))=A3)) 

OR(F2)

=SUM(IF(ISNUMBER(Data!B:B),Data!B:B,0)*(LEFT(Data!A:A,LEN(A3))=A3)) 

必須在D3中輸入並拉低按要求。

對於單個單元格公式,這似乎做工精細(F3): -

=SUM(Data!B2:B99999*(LEFT(Data!A2:A99999,LEN(TRANSPOSE(A3:A7)))=TRANSPOSE(A3:A7))) 

OR(F4)

=SUM(IF(ISNUMBER(Data!B:B),Data!B:B)*(LEFT(Data!A:A,LEN(TRANSPOSE(A3:A7)))=TRANSPOSE(A3:A7))) 

但要注意,如果在一個空白單元格A3:A7,所有的數據將被選中並添加到個人總數。第二和第四個版本很慢。

enter image description here

+0

謝謝 - 不過,只是總結了單個關鍵字'A3'的結果,我需要它爲關鍵字A3到A7求和。 – webjames

+0

正如@erikdaude所述,您可以對個人總數進行求和,但是如果您確實想在單個公式中進行求和,您可以嘗試 = SUM(Data!B2:B99999 *(LEFT(Data!A2:A99999,LEN TRANSPOSE(A3:A7)))= TRANSPOSE(A3:A7))) 但我沒有時間在此刻進行正確測試。 –

+0

道歉 - 我錯過了我公式中的美元符號 - 編輯了我的答案。 –