【发布时间】:2019-04-01 10:07:44
【问题描述】:
我有一个 Excel 表,其中包含名为 ProductName 和 CountryCode 的两列。我想根据“ProductName”列中的相应值连接所有由 / 分隔的 CountryCode,并且我的输出将在一个名为“”的单独列中获得最终结果”。请注意,我使用删除重复函数从 A 列获取 C 列中的唯一值。
我在 stackoverflow 的帮助下尝试了下面的 VBA 代码并得到了结果。
Sub ProductCountry()
Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheet2")
Dim FoundCell As Range, SearchRange As Range, Names As Range, SearchCell As Range
Dim MyString As String, i As Long
Set SearchRange = ws.Range("A2:A" & ws.Range("A" & ws.Rows.Count).End(xlUp).Row)
SearchRange.AdvancedFilter Action:=xlFilterCopy, CopyToRange:=ws.Range("C2"), Unique:=True
ws.Range("C2").Delete Shift:=xlShiftUp
Set Names = ws.Range("C2:C" & ws.Range("C" & ws.Rows.Count).End(xlUp).Row)
For Each SearchCell In Names
Set FoundCell = SearchRange.Find(SearchCell)
For i = 1 To Application.WorksheetFunction.CountIf(SearchRange, SearchCell)
MyString = MyString & FoundCell.Offset(, 1) & "/"
Set FoundCell = SearchRange.FindNext(FoundCell)
Next i
SearchCell.Offset(, 1) = Left(MyString, Len(MyString) - 1)
MyString = ""
Next SearchCell
End Sub
除了第一个产品 PRO1 之外,它似乎工作正常。你可以看到它并没有按顺序连接代码,而是跳过了国家代码 US,取而代之的是国家代码 SG 两次。
任何人都可以帮助解决这个脚本中出了什么问题,如果我对大数据使用相同的代码,有时我也会遇到范围错误。
【问题讨论】: