【发布时间】:2021-07-31 03:35:33
【问题描述】:
我对 VBA 比较陌生。
我有 2 个文件:(1) 主文件 (2) 月度统计文件。我正在尝试遍历主文件中的一列,以查看它是否与月度文件相对应。如果匹配,则从主文件中提取名称。但是,该列中有很多 N/A 输入,我只想遍历以字符串“A”开头的行。因为我已经有一个嵌套循环,所以我不能输入另一个 Next A。这是我的代码:
Sub SummaryData()
Dim CustCode As String
Dim CustName As String
Dim wkb As Workbook
Dim Count As Integer
Workbooks.Open Filename:=Sh_Source.Range("HKS").Value
Set wkb = Workbooks("DataHK.xlsx")
For A = 2 To Sh_Main.Range("E" & Rows.Count).End(xlUp).Row
If Left(Range("E" & A).Value, 1) = "A" Then
CustCode = Sh_Main.Range("E" & A).Value
Else
'Not sure what to put'
Count = 0
CustName = ""
For b = 2 To wkb.Sheets("Data").Range("B" & Rows.Count).End(xlUp).Row
X = wkb.Sheets("Data").Range("C" & b).Value
If CustCode = X Then
CustName = Sh_Main.Range("F" & A).Value
Count = Count + 1
Else
End If
Next b
Sh_Body.Range("A" & A).Value = CustCode
Sh_Body.Range("B" & A).Value = CustName
Sh_Body.Range("C" & A).Value = Count
Next A
wkb.Close savechanges:=False
End Sub
非常感谢任何帮助,因为我是新手,谢谢!
【问题讨论】:
-
嗨布鲁斯!感谢你的回复。对于 wkb 工作表,每一行都以 A 开头。只有 Master 工作表 Sh_Main 包含具有 NA 的行
-
当使用多个工作簿时,您必须确保完全限定您处理的每个工作表,以了解它所在的工作簿。您的代码指的是
Sh_Source和Sh_Main,但没有一个是合格的.因此,假定它们都在未声明的ActiveWorkbook中。从使用Dim语句为两张表声明变量开始。然后将工作表分配给声明的变量,并通过声明的名称引用它们。 -
从您的代码中不可能知道哪个工作簿包含该代码,Master 或 Monthly。根据语法,
Sh_Source是选项卡的CodeName或以前分配给此名称的工作表。它必须在 ActiveWorkbook 中,它可能不是包含代码的工作簿。因此不可能知道它在哪里。我还怀疑您是否打算使用CodeNames 并且代号为 Sh_Source 的工作表可能不存在于任何地方。如果是这样,在您可以从中检索范围值之前,应该有代码将指定工作簿中的特定工作表分配给该名称。