此查询有两处。任何帮助都会非常感激,不幸的是,这背后有很多细节,所以对大量文本表示歉意。
我正在努力更新一个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的替代品,我将不胜感激。