2016-10-11 63 views
0

我需要你的幫助來扭轉代碼。下面你可以找到我的工作表的一個例子。
我需要添加來自子集的總計值,並且結果需要在主塊中的小計旁邊的單元格中出現。但是這裏有一個問題,潛艇的數量並不總是相同的。這也意味着細胞是可變的。低於這個主要是他的子類別的另一個主要。 這些潛艇被添加了另一個代碼。在這個例子中,只有2個潛艇,但實際上真實的潛艇可以接近20個潛艇。作出可變單元格的總和

我希望你們明白我想問什麼。 GRTS

enter image description here

+0

爲什麼不只是使用公式? K2 =「= sum(」K4:K1000000「)應該這樣做(儘管當然如果1000會這樣做,你不需要使用1000000) – Hrothgar

+0

我不能這樣做,因爲除了和數之外還要加上數值(例如main 1 total = sub1.1 + sub1.2 main 2 total = sub 2.2 + sub 2.3 + sub2.4 etc.) – Steelbox

+0

Ah,現在我明白了,主要行中沒有數字,所以我沒有意識到會有。 – Hrothgar

回答

0

我假設你的第一主模塊是在第3行;如果不是,請根據情況進行修改:
=SUM(OFFSET($K4,0,0,MATCH("Main",$B4:$B1000,-1),1))

該公式將總和特定範圍內的所有值; OFFSET函數構建範圍。它從一個已定義的引用單元格開始 - 在本例中爲K4 - 然後通過向下移動指定數量的行創建一個範圍,然後向右指定數量的列 - 0行,0列,並返回指定範圍高度和1列寬。

我們從MATCH函數獲得高度。這個函數查找在接下來的1,000行任何地方以單詞「Main」開頭的第一個單元格。這裏的1,000或多或少是任意的,它可以是你肯定會找到下一個「主」頭的任何值。

該公式的缺點是,如果沒有找到匹配項 - 比如說如果在最後一個「Main」塊中使用了這個匹配項,並且它下面沒有Main頭 - 它將返回一個錯誤。我們可以通過添加IFERROR函數來控制:
=SUM(OFFSET($K4,0,0,IFERROR(MATCH("Main",$B$4:$B$1000,-1),50),1)),如果找不到匹配,它將假定50個單元格的範圍。

+0

感謝它的工作原理 – Steelbox

相關問題