[算表] 特定條件尋找最小值

看板Office作者時間12年前 (2011/12/05 21:24), 編輯推噓4(4010)
留言14則, 3人參與, 最新討論串1/1
軟體:MS Excel 版本:2010 表格有一連串無依大小排序數值,想由最後出現0以後的陣列中找出最小值, (即最後一項零值後,出現的最小非零值。) 用格式化規則將最小項目上色。 舉例來說: 表格的內容為 A 1 1 2 0 3 3 4 5 5 0 ﹎ 6 4 ↑ 7 7 8 1 9 3 10 1 ↓ ﹊ 我希望找出最後出現零值(A5)後,於A6~A10之間找出最小值, 則此例的結果:A8與A10為true (A1為false) 請問有無適合的函式可寫出判斷式可用於格式化規則? 不確定能否使用迴圈或者需要用巨集來撰寫? 謝謝解答! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 125.228.241.30

12/05 21:34, , 1F
=MIN(OFFSET($A$1,MAX(IF(A1:A10=0,ROW(A1:A10),0)),0
12/05 21:34, 1F

12/05 21:35, , 2F
,COUNTA(A1:A10)-MAX(IF(A1:A10=0,ROW(A1:A10),0)),1))
12/05 21:35, 2F

12/05 21:35, , 3F
Ctrl+Shift+Enter輸入公式
12/05 21:35, 3F

12/05 21:45, , 4F
感謝!小弟研究一下
12/05 21:45, 4F

12/05 21:55, , 5F
=MIN(INDIRECT("A"&MAX(ROW(A1:A10)*(--(A1:A10)=0))+1&"
12/05 21:55, 5F

12/05 21:56, , 6F
:A10")) 一樣 Ctrl + Shift + Enter
12/05 21:56, 6F

12/05 22:32, , 7F
兩位的解答都很受用 不過抱歉我原文可能沒有寫清楚
12/05 22:32, 7F

12/05 22:34, , 8F
因為是要把符合該條件的值標色(設定格式化的條件)
12/05 22:34, 8F

12/05 22:34, , 9F
所以需要輸出結果為True/False的判斷式
12/05 22:34, 9F
=AND(MAX(ROW($A1:$A10)*(--($A1:$A10)=0))<=ROW(),MIN(INDIRECT("A"&MAX(ROW($A1:$A10)*(--($A1:$A10)=0))+1&":A10"))=A1) 改寫f大提供的公式似乎可行,但公式裡MAX()與MIN()兩者函式的結果不變, 在格式化規則應該會變成相同內容的重複計算,不曉得有無更佳的寫法? 有int或變數格式可以暫存值嗎? 例如 int lastzero_r = MAX(ROW($A1:$A10)*(--($A1:$A10)=0)) int n = MIN(INDIRECT("A"&MAX(ROW($A1:$A10)*(--($A1:$A10)=0))+1&":A10")) 簡化原公式為 = AND(lastzero_r<=ROW() , n=A1) ※ 編輯: xvid 來自: 125.228.241.30 (12/05 23:24)

12/05 23:40, , 10F
換個方式 =AND(COUNTIF(A1:$A$10,0)=0,MIN(A1:$A$10)=A1)
12/05 23:40, 10F

12/05 23:41, , 11F
唔...出錯了 不要用 XD
12/05 23:41, 11F

12/06 08:09, , 12F
我發現你寫對了 但是你$下錯位置了
12/06 08:09, 12F

12/06 08:09, , 13F
把$A1改成A$1 $A10改A$10 這樣就可用了
12/06 08:09, 13F

12/06 14:20, , 14F
了解 謝謝f大
12/06 14:20, 14F
文章代碼(AID): #1EtCOAo8 (Office)