【问题标题】:Copy comma delimited values into two new rows将逗号分隔的值复制到两个新行中
【发布时间】:2023-04-10 09:32:02
【问题描述】:

我有 2 列,其中 2 列中有几个用逗号分隔的数字,但我要做的是分隔这些数字并为每个数字插入新行。在这里稍微解释一下它的样子:

Current issue:
Code1   Code2
2510'   2512 '
0542','0740','5282','5280 '
38101'  3829 '
99812'  9981'

宏或 VB 代码运行后,我希望我的结果如下所示

Desired Results:
Code1   Code2
2510'   2512 '
0542'   5280 '
'0740'  5280 ' 
'5282'  5280 '
38101'  3829 '
99812'  9981'

这是我找到的解决方案:谢谢

Sub ExpandData()
    Const FirstRow = 2
    Dim LastRow As Long
    LastRow = Range("A" & CStr(Rows.Count)).End(xlUp).Row

    ' Get the values from the worksheet
    Dim SourceRange As Range
    Set SourceRange = Range("A" & CStr(FirstRow) & ":B" & CStr(LastRow))

    ' Get sourcerange values into an array
    Dim Vals() As Variant
    Vals = SourceRange.Value

    ' Loop through the rows in the array and split each comma-delimited list of items and put each on its own row
    Dim ArrIdx As Long
    Dim RowCount As Long
    For ArrIdx = LBound(Vals, 1) To UBound(Vals, 1)

        Dim CurrCat As String
        CurrCat = Vals(ArrIdx, 1)

        Dim CurrList As String
        CurrList = Replace(Vals(ArrIdx, 2), " ", "")

        Dim ListItems() As String
        ListItems = Split(CurrList, ",")

        Dim ListIdx As Integer
        For ListIdx = LBound(ListItems) To UBound(ListItems)

            Range("A" & CStr(FirstRow + RowCount)).Value = CurrCat
            Range("B" & CStr(FirstRow + RowCount)).Value = ListItems(ListIdx)
            RowCount = RowCount + 1

        Next ListIdx

    Next ArrIdx

End Sub

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    这是使用 SPLIT 功能的绝佳机会。这可以在 VBA 代码中使用,也可以用作工作表函数。

    正如tigeravatar 指出的那样,最好的办法就是自己动手。您可以查看this question。有关拆分功能的更多信息,请访问 MShere

    【讨论】:

      猜你喜欢
      • 2022-01-01
      • 2015-10-19
      • 1970-01-01
      • 2021-05-18
      • 1970-01-01
      • 1970-01-01
      • 2014-03-12
      • 1970-01-01
      相关资源
      最近更新 更多