VBA:通过数组和字典快速填充数字

前言:最近有一项新工作,需要填充如下的表格
在这里插入图片描述
上面只是一个代理商而已,而同样的代理商有十几家。传统的做法就是做好数据处理后,通过vlookup匹配填充。稍微方便一点的是调整好格式后直接复制黏贴,但是因为不是每个代理商每个月都有这么多佣金类型的,所以可能会出错。当然用power query固定化模板后也是可以操作的,但是我想试试VBA,所以写了以下的代码,通过数组和字典快速填充数字。

9月16日更新:之前的数组太复杂了,学到了简单的,更新一下,如果字典也能像python那样简单就好了

Sub 数据快速填充()

'首先构建1个代理商表

agent_array = Array("共志", "千秋", "汉启", "易贝", "外金", "共联", "宁皙", "君弘", "鹏德", "仲诚", "公惠", "电信实业", "茗神", "迪信", "欧珀", "步步高")

'构建字典,key是原始列(需要复制的),value是目标列(需要黏贴的)
Dim dict As Object
Set dict = CreateObject("scripting.dictionary")
dict.Add "201903", "C"
dict.Add "201904", "D"
dict.Add "201905", "E"
dict.Add "201906", "F"
dict.Add "201907", "G"

'然后通过循环,把相关数据匹配到表格内

For Each i In agent_array
'    MsgBox i
    For Each j In dict:
        v = dict.Item(j)
        '先调好相关参数
        Sheets("总数据").Select
        ActiveSheet.PivotTables("数据透视表4").PivotFields("代理商简称").ClearAllFilters
        ActiveSheet.PivotTables("数据透视表4").PivotFields("代理商简称").CurrentPage = i
        ActiveSheet.PivotTables("数据透视表4").PivotFields("结算账期").ClearAllFilters
        ActiveSheet.PivotTables("数据透视表4").PivotFields("结算账期").CurrentPage = j
        '然后把相关内容vlookup到相关单元格
        Sheets(i).Select
        Range(v & "2").Select
        ActiveCell.FormulaR1C1 = "=VLOOKUP(RC2,总数据!C8:C9,2,0)"
        Selection.AutoFill Destination:=Range(v & "2:" & v & "14"), Type:=xlFillDefault
        Range(v & "2:" & v & "14").Select
        Selection.Copy
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Selection.Replace What:="#N/A", Replacement:="0", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
    Next
Next

End Sub

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值