Re: [算表] 請問關於陣列公式--集中
這是基本的集中公式囉
複習一下
=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
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
03/25 22:13, 5F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):