= VLOOKUP(SUMIFS)语句需要很长的处理时间

时间:2016-05-27 14:57:51

标签: excel vba vlookup sumifs

修改

可行文件:https://docs.google.com/spreadsheets/d/1IhxKqnj62vssttZA73hF-S_TvynQNPdtSyb7wWq3Kpo/edit?usp=sharing

屏幕截图:http://i.imgur.com/d25R8lc.png

目的

我目前正在为CUSTOMERS创建定价模型,他们订购特定的产品和所述产品的配置。最终结果是SUM SALES和LOOKUP表将客户置于一个类别中。

APPROACH

  • 500,000+行数据
  • SUMIF:Sum Range = SALES;标准=(客户 ID,PRODUCT ID,CONFIGURATION)
  • VLOOKUP:取SUMIF值和 部分匹配PRICING TIER表,返回定价等级(例如 “Silver Tier”,“Gold Tier”,“Platinum Tier”)
  • 定义定价层后,创建一个数据透视表以便于过滤

问题(S): 行的处理时间为30-60分钟。我试图从VLOOKUP中删除SUMIFS语句来独立计算它们,但没有取得可测量的成功。我也尝试向服务器(使用DSUM)进行SQL查询以减少本地工作负载,但这也没有对处理时间产生积极影响。

问题

  1. 如何根据SALES,PRODUCT ID和CONFIGURATION标准有效处理大量信息并对客户进行适当分类?
  2. 我一直在考虑在VBA中这样做,但我不确定VBA是否实际上比单元格公式更有效。
  3. 插件实用程序是否会提供任何解决方案(例如电源枢轴或电源查询)?

1 个答案:

答案 0 :(得分:2)

有50万行我会考虑使用Access或其他数据库应用程序。它只是VLOOKUP和SUMIF的大量数据,如果你进行大量的比较,甚至Excel VBA也会变慢。

SUMIF和VLOOKUP很容易在查询中复制,并且速度会快得多。

如果使用ACCESS,请尝试使用此SQL查询:

SELECT [Customer ID],[Product ID],[Configuration],[Pricing Tier] 
FROM 

    (SELECT [Data Table].[Customer ID], [Data Table].[Product ID], 
    [Data Table].[Configuration], Sum([Data Table].Sales) AS [Sales Sum]
    FROM [Data Table]
    GROUP BY [Data Table].[Customer ID], [Data Table].[Product ID], 
    [Data Table].[Configuration])

AS T,
[Pricing Table] P
WHERE [Annual Sales] = (SELECT Max([Annual Sales]) 
                       FROM [Pricing Table] 
                       WHERE [Annual Sales] <= [Sales Sum]);

这应该(希望)做到这一点。让我知道!