首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >特殊格式的转置

特殊格式的转置
EN

Stack Overflow用户
提问于 2019-04-25 07:03:20
回答 2查看 212关注 0票数 3

今天我完成了by VBA课程的循环部分,并做了一些练习,但我遇到了一个我似乎无法解决的问题。

我想将数据从工作表1转到工作表2。

图1

代码语言:javascript
运行
复制
a   1   2   3
b   1   2   3   4   5   6
c   1   2   3   4

我正在尝试编写一个宏来将数据转置到工作表2中,如下所示:

代码语言:javascript
运行
复制
a   1
a   2
a   3
b   1
b   2
b   3
b   4
b   5
b   6
c   1
c   2
c   3
c   4

我试图编写一些VBA代码,但我不知道如何解决这个特定的问题。我尝试使用Do Until循环,但我遇到的问题是如何将表1,列1中的字母与表2中相应的数字粘贴在一起。

我的一个朋友做了一些代码给我分析,但它让我更困惑。它适用于这个数据集,但对于更大的数据集(字母向上到‘z’的数据集),它无法做到这一点。

下面是他的代码:

代码语言:javascript
运行
复制
Sub transpose()
    Sheets(1).Select

    lrow1 = Cells(Rows.Count, 1).End(xlUp).Row

    For i = 1 To lrow1
        nums = 2

        Cells(i, nums).Select

        Do Until IsEmpty(ActiveCell)
            nums = nums + 1
            Cells(i, nums).Select
        Loop

        Range(Cells(i, 2), Cells(i, nums)).Copy
        Sheets(2).Select

        lrow2 = Cells(Rows.Count, 2).End(xlUp).Row

        Cells(lrow2 + 1, 2).Select

        Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
            False, transpose:=True

        Sheets(1).Select

        Cells(i, 1).Copy

        Sheets(2).Select

        Cells(lrow2 + 1, 1).Select

        Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
            False, transpose:=False

        lrow3 = Cells(Rows.Count, 2).End(xlUp).Row

        Cells(lrow2 + 1, 1).Select

        Selection.AutoFill Destination:=Range(Cells(lrow2 + 1, 1), Cells(lrow3, 1)), Type:=xlFillDefault

        Sheets(1).Select
    Next i

    Sheets(2).Select

    Rows("1:1").Select

    Selection.Delete Shift:=xlUp
End Sub

https://pastebin.com/J45fmYKj

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55839687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档