2009-12-19 32 views

回答

1

根據關於this page的D函數的說法,我認爲您需要將標準放在單獨的單元格中。

編輯:如果在公式中包含標準的目標是爲了使其更具可讀性,您可以改用named ranges

編輯2:迴應您的意見
由於DSUM()函數的工作原理,無法做到您想要的(包括公式中的條件)。看看在documentation for DSUM並與VLOOKUP比較:

的DSUM函數的語法是:

DSum(range, field, criteria) 

範圍是要應用的條件對單元格的範圍。

字段是對值進行求和的列。您可以指定列表中列的數字位置或雙引號中的列標籤。

標準範圍的單元格包含您的標準。

注意區別:

爲VLOOKUP函數的語法是:

VLookup(value, table_array, index_number, not_exact_match) 

是在table_array第一列到搜索的值。

table_array是兩個或多個列數據按升序排序。

index_number是table_array的列號從必須被返回的匹配值。第一列是1

由於DSUM正在尋找單元格區域包含標準的,沒有什麼可以做,以避免將它只是 - 一個單元格區域。

我認爲你可以做的最好的是將你的不同標準定義爲命名範圍,這將使得根據你想要在公式中做什麼來引用不同的標準變得更容易。不幸的是,如果常規SUM功能對您來說速度不夠快,那麼您可以做的其他事情就不多了 - 您需要必須在單元格中指定要使用DSUM的條件。

+0

你確定嗎?爲什麼它甚至在VLOOKUP公式中也能正常工作? = VLOOKUP(「x」,{1,「a」; 2,「b」;「x」,「c」},2,0)返回「c」 – jbochi 2009-12-19 11:53:24

+0

謝謝,但目標不是讓它變成更具可讀性。我需要在公式中定義標準,因爲我需要以多種方式彙總數據,而且我不想爲所有內容創建單獨的單元格。 – jbochi 2009-12-19 11:55:01

0

從DSUM文檔

標準是單元格區域的是 包含您 指定的條件。只要 至少包含一個列標籤並且至少包含一個低於列 標籤的單元格,您可以在其中爲該列指定條件 ,您可以使用 標準參數的任何範圍。

VLOOKUP使用一組值。

table_array必需。包含數據的單元格的範圍爲 。您可以使用 對範圍的引用(對於 示例,A2:D8)或範圍名稱。

+1

謝謝,但我不想按數量過濾。我只想在公式中定義標準,而不是在範圍內。 – jbochi 2009-12-19 11:49:12

+0

我可以使用{= SUM(IF(A5:A8> 10567,B5:B8))},但它太慢了。 – jbochi 2009-12-19 11:50:44

+0

好的,但有沒有辦法像數組一樣動態地定義一個範圍? – jbochi 2009-12-19 12:08:02

0

DSUM太爛了,試試這個: = SUMPRODUCT((A5:A8> 10569)*(B5:B8))

一般來說,我勸你不要硬編碼這樣的東西,它的 「壞習慣」 ,但只要你喜歡。

0

您可以使用SUMIF(A5:A8;> 10567; D5:D8)。一個非常有用和使用不足的功能。

第二個參數可能是帶有條件的另一個單元的REF。