【问题标题】:split CSV seperated data into multiple rows将 CSV 分隔的数据拆分为多行
【发布时间】:2020-07-24 08:35:44
【问题描述】:

我在 excel 中有这样的数据,列动物编号和临床体征有以逗号分隔的文本数据。

输入

我想得到这样的输出,我不想使用 power pivot,因为结果将被粘贴为查询表。我希望 vba 代码做同样的事情并将其粘贴到同一张表中

【问题讨论】:

  • 你有什么代码? Stack Overflow 不是免费的代码编写服务。您应该将其拆分为多个步骤 - 获取最后一行,循环数据,在两个 CSV 数据集上使用 Split,然后循环生成的数组以获取可以输出到工作表的数据。
  • 顺便说一句,Power Query 可以将结果放在同一张表中。
  • braX 感谢您的回复,我正在为我的日常 Excel 工作表学习 vba 编码。我是初学者,我的代码在示例中仅拆分一列,例如 Animal No。但我想将它用于两列。请帮助
  • Storax,电源查询将单元格粘贴为表格,我无法创建字符串连接的数据透视表。我希望在没有任何电源查询的情况下正常排列数据。我也将在 Userform 中使用它
  • 是的,没错,你会得到一张桌子。那有什么问题?我认为这是一个优势。

标签: excel vba csv


【解决方案1】:

试试,

Sub test()
    Dim Ws As Worksheet
    Dim vDB As Variant
    Dim vR() As Variant
    Dim a As Variant, b As Variant
    Dim i As Long, n As Long, r As Long
    Dim j As Integer, k As Integer
    
    Set Ws = Sheets(1)
    
    vDB = Ws.Range("a1").CurrentRegion
    
    r = UBound(vDB, 1)
    For i = 2 To r
        a = Split(vDB(i, 2), ",")
        b = Split(vDB(i, 4), ",")
        For j = 0 To UBound(a)
            For k = 0 To UBound(b)
                n = n + 1
                ReDim Preserve vR(1 To 5, 1 To n)
                vR(1, n) = vDB(i, 1)
                vR(2, n) = Trim(a(j))
                vR(3, n) = vDB(i, 3)
                vR(4, n) = Trim(b(k))
                vR(5, n) = vDB(i, 5)
            Next k
        Next j
    Next i
    With Ws
        .Range("a2").Resize(n, 5) = WorksheetFunction.Transpose(vR)
    End With
        
End Sub

【讨论】:

  • @MarrisaiSudheer,如果它适合你。请接受答案。
猜你喜欢
  • 2018-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-02
相关资源
最近更新 更多