簡體   English   中英

有效的Excel公式,可從大量行中返回多個匹配項

[英]Efficient Excel formula for returning multiple matches from a large number of rows

我被一個重大問題困擾。 我有一個大約16000行的數據集(將來可能會更多)。 該清單基本上是包含產品及其相應安裝費用的價目表。 現在,產品按以下層次進行分類:城市->類別->等級/類型。 在我使用命名范圍通過將城市與類別和等級(_XYZ_SPC_9.5)串聯來引用每個集合之前。 這導致大約1500個命名范圍擴大了Excel文件的大小。 因此,我決定使用來自用戶的輸入來即時計算產品。 我已經嘗試過數組公式和簡單公式,但是它們要花一些時間來計算(16000行!),這從可用性角度來看是不可接受的。 我們的銷售人員非常清楚他們需要花多少時間在工具上。

我已經在以下位置上傳了示例文件: 價目表示例

到目前為止,我使用的公式是:

=IFERROR(INDEX($H$6:$H$15000, SMALL(INDEX(($AE$9=$R$6:$R$15000)*(MATCH(ROW($R$6:$R$15000), ROW($R$6:$R$15000)))+($AE$9<>$R$6:$R$15000)*15000, 0, 0), AC3)),"Not Available")

{=IFERROR(INDEX(ref_PRICE_LIST!$H$6:$H$16074,MATCH(INDEX(ref_PRICE_LIST!$H$6:$H$16074,(SMALL(IF(IF(RIGHT($AE$3,3)="All",ref_PRICE_LIST!$Z$6:$Z$16074,ref_PRICE_LIST!$R$6:$R$16074)=$AE$3,ROW(ref_PRICE_LIST!$H$6:$H$16074)-ROW(ref_PRICE_LIST!$H$6)+1),$AC3))),ref_PRICE_LIST!$H$6:$H$16074,0),1),"Not Available")}

如果有人可以幫助我,我將不勝感激。

非常感謝!

我認為加快此速度的最佳方法是將公式分為輔助列K和結果列L

助手列(向下復制所有16,000數據行)

=IF($D:$D=$O$2,ROW(),"")

結果列(從L2開始,根據需要向下復制)

=IFERROR(INDEX($F:$F,SMALL($K:$K,ROW()-1)),"Not available")

我已經測試了大約150,000行,它的更新時間不到1秒

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM