首页 > 解决方案 > Q. 如何使用 VBA 转置每 n 行

问题描述

有人可以建议我如何使用 VBA 将每 n 行转置为多列。我有大约 10000 行与此类似的数据(每个转置行都需要在 '##' 之后执行)

数据集 |-| |-| |##| |文本1| |文本2| |文本3| |文本4| |##| |文本5| | 正文6 | 正文7 | ## | 正文8 | 正文9 | text10 | text11 | ## | 文本12 | 文本13 | ...

结果(使用 ' | ' 分隔 excel [ A | B | C | D...] 中的每一列)

- - - - -
## 文本1 文本2 文本3 文本4
## 文本5 文本6 文本7
## 文本8 文本9 文本10 文本11
## 文本12 文本13 ...

标签: vbatranspose

解决方案


试试这个代码

Sub Test()
    Dim a, i As Long, m As Long, k As Long, mx As Long
    a = Range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row).Value
    ReDim b(1 To UBound(a, 1), 1 To 100)
    i = 1
    Do Until a(i, 1) = "##" And i >= UBound(a, 1)
        If a(i, 1) = "##" Then m = m + 1: k = 1
        b(m, k) = a(i, 1)
        If mx < k Then mx = k
        k = k + 1
        If i = UBound(a, 1) Then Exit Do
        i = i + 1
    Loop
    Range("D1").Resize(m, mx).Value = b
End Sub

推荐阅读