You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

请求开发共享Excel文件中跨工作表转置粘贴的VBA宏

VBA宏解决方案:转置粘贴数据到指定工作表

我帮你写了这个针对性的VBA宏,完全匹配你的需求——把Input表J5:J9的纵向数据转置成横向行,粘贴到Reports表的最后可用行。直接复制到你的Excel VBA编辑器里就能用:

Sub TransposeAndPasteData()
    Dim wsInput As Worksheet
    Dim wsReports As Worksheet
    Dim lastRow As Long
    
    ' 定义目标工作表对象
    Set wsInput = ThisWorkbook.Worksheets("Input")
    Set wsReports = ThisWorkbook.Worksheets("Reports")
    
    ' 定位Reports工作表的最后一行(以A列为例,可根据实际数据列调整)
    lastRow = wsReports.Cells(wsReports.Rows.Count, "A").End(xlUp).Row + 1
    
    ' 转置复制粘贴:把Input的纵向区域转成横向,粘贴到Reports的新行开头
    wsInput.Range("J5:J9").Copy
    wsReports.Cells(lastRow, "A").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
    
    ' 清除剪贴板,避免后续误操作
    Application.CutCopyMode = False
    
    MsgBox "数据已成功转置粘贴!", vbInformation
End Sub

细节调整说明:

  • 代码里用了xlPasteValues只粘贴纯数值,如果你需要保留原单元格的格式,把这个参数改成xlPasteAll就行
  • 定位最后一行是基于A列判断的,如果你的Reports表数据起始列不是A,把代码里的"A"改成对应的列字母(比如数据从C列开始就写"C"
  • 末尾的提示弹窗是为了确认操作完成,不需要的话直接删掉MsgBox那一行

快速使用步骤:

  1. 打开你的Excel文件,按下Alt + F11打开VBA编辑器
  2. 右键点击左侧的工作簿名称,选择「插入」→「模块」
  3. 把上面的代码粘贴到空白模块里
  4. 按下F5运行宏,或者回到Excel界面给宏添加一个自定义按钮,方便日常一键执行

内容的提问来源于stack exchange,提问作者ks_1029

火山引擎 最新活动