2012-12-10 259 views
1

我試圖找出基於TRUE虛假陳述的範圍的子集的範圍的子集。下面的圖表就是一個例子。確定使用正確的陳述

FALSE FALSE 1.21147 
TRUE FALSE 1.20984 
FALSE FALSE 1.21083 
FALSE FALSE 1.210315 
FALSE TRUE 1.21151 
FALSE FALSE 1.21335 
FALSE FALSE 1.213515 
FALSE FALSE 1.212435 
TRUE FALSE 1.212125 
FALSE FALSE 1.21226 

在這種情況下,我想根據交替的TRUE語句來識別子集。在左側列中,第一個TRUE語句將觸發子集的開始,第二列中的TRUE語句將觸發子集的結束。然後我想用一個簡單的最大函數來標識第三列中的MAX。我將使用IF語句來確定第一個TRUE語句是否正確,但是,我無法弄清楚如何根據第二列中的TRUE語句來識別範圍的子集。我也想知道,如果聲明可能有可能從底層到頂端,這是否會從頂層到底層發揮作用。非常感激任何的幫助。

回答

1

第1部分可以使用MATCHOFFSETMAX

組合在這個例子中,我假定你的數據位於起始細胞A2完成。

爲了清楚起見,我使用在細胞E1:E4一些中間結果。如果你喜歡一個單個式,簡單地合併中間體式成最終式

細胞E2 =的第一TRUE位置在列A

=MATCH(TRUE,A2:A11,0) 

細胞E3 =的第一TRUE位置在列B

=MATCH(TRUE,B2:B11,0) 

結果公式,在列最大值的行之間在C發現E2E3(含)

=MAX(OFFSET($C$1,E2,0,E3-E2+1,1)) 

第2部分更棘手:我不認爲你可以搜索一個範圍值。然而,看着你的數據可能是確定向下搜索的TRUE?如果這是行則:

細胞E4 =在塔A

=MATCH(TRUE,OFFSET(A2:A11,E2,0),0) 

的第二TRUE位置或此,輸入作爲數組式(由Barry Insipred),其獲得在最後TRUE

=MATCH(2, 1/(A2:A11=TRUE),1) 

結果式,在E3和0123中發現的行之間在C列最大值(含)

=MAX(OFFSET($C$1,E3,0,E4+E2-E3+1,1)) 
+1

爲了找到最後TRUE TRY = MATCH的位置(2,1 /(A2:A11 = TRUE)),陣列進入 –

+0

http://stackoverflow.com/users/445425/chris -neilsen這工作完全謝謝你的幫助。 –

0

你對從下往上遍歷表部分搞糊塗了,而且不知道你能不能有一個以上的子集,因爲你是倒數第二排似乎是一個新的子集的開放,是不是關閉。無論如何,希望這有助於。我假設你不想使用宏,在這種情況下,它是微不足道的。你可以做的是墊中的數據與包含FALSE,FALSE,0,0一排設置的頂部,這個公式添加到第四欄開始使用自己設置的第一行:

=IF(AND(NOT(A2),NOT(B2),OR(D1=0,AND(NOT(A1),B1))),0,C1) 

這假設您的第一行是第2行,第1行用於填充。 A,B和C是你例子中的三列,如果它在子集內,D將打印第三列的值;如果不是,則D將打印第三列的值,以便你可以很容易地計算max()或任何你想要的做。我是這樣的:

enter image description here