修改
可行文件:https://docs.google.com/spreadsheets/d/1IhxKqnj62vssttZA73hF-S_TvynQNPdtSyb7wWq3Kpo/edit?usp=sharing
屏幕截图:http://i.imgur.com/d25R8lc.png
目的
我目前正在为CUSTOMERS创建定价模型,他们订购特定的产品和所述产品的配置。最终结果是SUM SALES和LOOKUP表将客户置于一个类别中。
APPROACH
问题(S): 行的处理时间为30-60分钟。我试图从VLOOKUP中删除SUMIFS语句来独立计算它们,但没有取得可测量的成功。我也尝试向服务器(使用DSUM)进行SQL查询以减少本地工作负载,但这也没有对处理时间产生积极影响。
问题
答案 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]);
这应该(希望)做到这一点。让我知道!