第一次海报初学者/中级 vba 编码器。我过去曾使用用户表单和输入框来构建财务模型,但与我现在尝试做的完全不同。
情况:我有一个大约 25mb 的大型主数据文件,它使用 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