客户数据表上的索引匹配VBA代码 - 数据浓缩

时间:2017-03-16 21:31:57

标签: excel vba excel-vba master-data-management

第一次海报初学者/中级vba编码器。我过去曾使用过userforms和输入框来构建财务模型,但没有像我现在想做的那样。

情况: 我有一个大型主数据文件~25mb excel文件,它使用AFO从SAP BI系统中提取客户信息。 列中包含的信息包括:

Account # (Unique ID)
Account Name
Street Address
Postal Code
State
Customer Hierarchy Level (CHL) information
    1
    2
    3
    4
    5

然后在右边我手动操作依赖于其他工作表的单元格以获得正确的值。

关键栏包括:

Zone
District
Group
Sub-group
Buying Consortium
Local/ND
Buying Consortium #
Buying Consortium GROUP
Buying Consortium Sub-GROUP
NEW Buying Consortium #
Joined Buying Consortium
Left Buying Consortium

现在,此Excel工作表的目的是在客户级别进行更快速的更改以反映报告。我正在拼命寻找能够根据已经设定的标准执行所有手动操作的简洁快速的VBA代码。

我首先尝试创建一个VBA脚本,由用户窗体中的按钮启动(稍后可以想到ui),这将在列[Zone]和[District]中使用引用找到下一个空白单元格工作表或工作簿(以较快者为准)。

下一个想法对于其他列是相同的;但是,其他列可能需要多个MATCH标准,但我们先从简单的标准开始。 [区]和[区]。我从宏中获得了以下语法,但这会使工作簿变得像20mb一样慢。

Sub Zone_District()
'
' Zone_District Macro
' Index Match Zone and District Based on Postal Code
'

'
    ActiveCell.FormulaR1C1 = _
        "=IFERROR(INDEX('MD ZIP 2017'!$F:$F,MATCH(Forum!$I2,'MD ZIP 2017'!$C:$C,0)),""Not Assigned"")"
    Range("AD2").Select
    Selection.NumberFormat = "General"
    ActiveCell.FormulaR1C1 = _
        "=IFERROR(INDEX('MD ZIP 2017'!C6,MATCH(Forum!RC9,'MD ZIP 2017'!C3,0)),""Not Assigned"")"
    Range("AD2").Select
    Selection.AutoFill Destination:=Range("AD2:AE2"), Type:=xlFillDefault
    Range("AD2:AE2").Select
    Range("AE2").Select
    ActiveCell.FormulaR1C1 = _
        "=IFERROR(INDEX('MD ZIP 2017'!C7,MATCH(Forum!RC9,'MD ZIP 2017'!C3,0)),""Not Assigned"")"
    Range("AD2:AE2").Select
    Selection.AutoFill Destination:=Range("AD2:AE5"), Type:=xlFillDefault
    Range("AD2:AE5").Select
End Sub

0 个答案:

没有答案