首页 > 解决方案 > 用于数据转换的 Excel 帮助

问题描述

需要 Excel 帮助:我的 excel 表包含以下格式的数据。

From/to | C1  | C2  | C3  |
---------------------------
R1      | 30  | 31  | 32  |
R2      | 40  | 41  | 42  |

我想使用 micros/VBA 脚本或 excel 中的任何其他功能以以下格式重新排列它们。

S.no   | From| TO  |Rate|
-------------------------
1      | R1  | C1  | 30 |
2      | R1  | C2  | 31 |
3      | R1  | C3  | 32 |
4      | R2  | C1  | 40 |
5      | R2  | C2  | 41 |
6      | R2  | C3  | 42 |

感谢您在无需手动操作的情况下重新排列 excel 的任何帮助

标签: vbaexcel

解决方案


测试如下。

Sub transData()
    Dim vDB, vR()
    Dim i As Long, r As Long, j As Integer
    Dim n As Long
    vDB = Range("a1").CurrentRegion
    r = UBound(vDB, 1)

    For i = 2 To r
        For j = 2 To 4
            n = n + 1
            ReDim Preserve vR(1 To 4, 1 To n)
            vR(1, n) = n
            vR(2, n) = vDB(i, 1)
            vR(3, n) = vDB(1, j)
            vR(4, n) = vDB(i, j)
        Next j
    Next i
    Sheets.Add
    Range("a1").Resize(1, 4) = Array("S.no", "From", "TO", "Rate")
    Range("a2").Resize(n, 4) = WorksheetFunction.Transpose(vR)
End Sub

推荐阅读