繁体   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