Re: [算表] 請問關於陣列公式--集中

看板Office作者 (David)時間14年前 (2010/03/24 19:58), 編輯推噓3(302)
留言5則, 1人參與, 最新討論串2/2 (看更多)
這是基本的集中公式囉 複習一下 =INDEX(A:A,SMALL(IF((LEFT($A$1:$A$1042,1)="1")*($A$1:$A$1042<200), ROW($A$1:$A$1042)),ROW(A1))) 此法會省的情況是符合條件的a欄資料不會太多 否則很多條陣列公式仍然不快 ※ 引述《b19111010 (怡君怎麼會輸的…)》之銘言: : 設有如下a1至f4資料 : 112 =LEFT(A1,1)="1" =A1<200 =AND(B1,C1) =IF(D1=TRUE,ROW(),"") =OFFSET($A$1,SMALL(E:E,ROW())-1,,,) : 833 =LEFT(A2,1)="1" =A2<200 =AND(B2,C2) =IF(D2=TRUE,ROW(),"") =OFFSET($A$1,SMALL(E:E,ROW())-1,,,) : 1341 =LEFT(A3,1)="1" =A3<200 =AND(B3,C3) =IF(D3=TRUE,ROW(),"") =OFFSET($A$1,SMALL(E:E,ROW())-1,,,) : 149 =LEFT(A4,1)="1" =A4<200 =AND(B4,C4) =IF(D4=TRUE,ROW(),"") =OFFSET($A$1,SMALL(E:E,ROW())-1,,,) : 其中a欄為原始資料欄,f欄為將要印出的結果欄(a欄中符合某條件之儲存格集中列示於f : 欄)。 : 但由於a欄資料現實情境中往往上千筆(ex:a1:a1042) : 如果依上述方法,複製e1:f1公式上千列以產生f欄結果, : 此xls檔將會變得很大,運算時間亦變得較長。 : 故來請問各位大大, : 是否有簡化上述設定以獲得同樣結果之方法? : 目前想到是否可以類似「陣列」方式簡化以上公式如下: : 112 =LEFT(A:A,1)="1" =A:A<200 =AND(B1,C1) =IF(D1=TRUE,ROW(),"") =OFFSET($A$1,SMALL(E1,ROW(e1))-1,,,) : 833 : 1341 : 149 : 上述設定中的f1是否為「等於原設定中的f1:f4」的陣列? : 如是,則如何把f1「列印出」或「顯示出」如原設定中f1:f4之樣式? : 如否,則請問修正上述構想之方法或大大另有的簡化途徑? : 感謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.47.1.214

03/24 22:59, , 1F
感謝J大賜教!!!另請問如果small裏的三個判別式分拆在三
03/24 22:59, 1F

03/24 23:02, , 2F
個或更多的儲存格,會比合起在一個儲存格更浪費運算資源
03/24 23:02, 2F

03/24 23:03, , 3F
嗎?(有這個考量是因為遇到的實際情況都是有很長的判別式
03/24 23:03, 3F

03/24 23:04, , 4F
如果合在一起我怕終於會超過儲存格的限制字數)
03/24 23:04, 4F
可能要看實例比較清楚 而且實驗了才能確定 以前經驗是多格則容量很大 少格則計算較慢 但太多格又會變慢 如果很少格則會快 要取得平衡 比較好的方法通常都是改寫條件式 不一定都是改得更精煉 有可能改得更平白 拆得更開 才計算快 如果只有幾千列 應該不會太多格 前幾欄都可留著 F欄改成集中公式即可 另應不會超過字數 因為公式字數可比顯示字數多 比較會超過的是7層巢狀 可用定義名稱解決 ※ 編輯: JieJuen 來自: 114.47.1.214 (03/24 23:43)

03/25 22:13, , 5F
再次感謝J大賜教!!
03/25 22:13, 5F
文章代碼(AID): #1BgVvVW- (Office)
文章代碼(AID): #1BgVvVW- (Office)