大数据集宏查询&替代Vlookup请求

时间:2017-03-28 15:44:15

标签: excel vba excel-vba dictionary

此查询有两处。任何帮助都会非常感激,不幸的是,这背后有很多细节,所以对大量文本表示歉意。

我正在努力更新一个12个月的趋势报告,该报告使用基于多个标准(项目,唯一项目ID,订单,年月等)的一系列复杂的vlookup从一张表中提取数据。是的,使用数据透视表可能会更容易,但不幸的是,由于使用此文档的方式,有权访问它的人希望它保持原样,从格式和功能的角度来看,但希望文档加速(大约需要5个)几分钟来计算什么时候发生变化。)

数据集是36列乘50000行,其中7列包含用于在趋势表上提取特定数据的标识符

由于当前每月都会增加新数据(约6000行)的附加数据。

我已在文档中添加了两个宏以尝试减少用户错误

我目前正在使用以下代码获取订单号删除重复项,然后应用索引/匹配来引入相关项目,然后使用countif将唯一键应用于项目结尾(使用连接)

Sub ProjTrending1()

Dim s1 As Worksheet, s2 As Worksheet

'Defines S1 as a Worksheet
Set s1 = Sheets("All Data")

'Defines S2 as WorkSheet
Set s2 = Sheets("Workings")

'Defines LastR1
Dim LastR1 As Long, DataRange1 As Range

'Finds last row cell working sheet
LastR1 = s2.Range("A1").CurrentRegion.Rows.Count

'Takes Data from Order Column of defined data Sheet and copy & pastes it to Working Sheet Column B
s1.Range("J1:J" & LastR2).Copy s2.Range("A1")

'Removes Duplicates from Column B Working sheet
s2.Range("A2:A" & LastR1).RemoveDuplicates Columns:=2, Header:=xlNo

'Copies the formula from B2 and applies it to all cells in column B where column A has values
s2.Range("B2").Copy s2.Range("B2:B" & LastR1)

'Copies the formula from C2 and applies it to all cells in column C where column A has values
s2.Range("C2").Copy s2.Range("C2:C" & LastR1)

End Sub

公式是B栏如下

=INDEX('All Data'!E:E,MATCH(Workings!A2,'All Data'!J:J,0))

C栏中的公式如下

=B2&COUNTIFS($B$2:B2,B2)

工作表所有数据中设置的数据长约50k行,并将继续增长。我没遇到的问题是这个宏开始花费大量时间来运行,因为C列中的信息被用作趋势报告中的唯一标识符。

这是因为我在趋势选项卡上有大量的Vlookup(大约20k)基于此拉取数据,或者我创建的宏是否存在创建唯一标识符的问题?

我一直在寻找可以将数据绘制到趋势标签(字典等)的其他方法,但到目前为止还没有运气。如果有人能提供20k vlookups的替代品,我将不胜感激。

0 个答案:

没有答案