首页 > 解决方案 > 选择行并复制到列

问题描述

我想复制一个特定的行,例如我想在这张图片中选择 jake 的分数

图片

现在我想把它们复制成这样

这是所需的输出

我问了社区,他们帮了我很多,我想出了这段代码:

Sub main()    
    Dim rangeSrc As Range, range1 As Range

    Set rangeSrc = Application.InputBox("Select src Range", "select src range", Type:=8) 'type 8 = range
    Set range1 = Application.InputBox("select des range", "select des range", Type:=8)

    If Not rangeSrc Is Nothing And Not range1 Is Nothing Then
        rangeSrc.Copy range1      
    End If     
End Sub

标签: excelvba

解决方案


你快到了:

  1. 您需要.PasteSpecial Transpose:=True转置您的数据。
  2. 我插入了一个错误处理,以便用户能够按下取消按钮。
  3. 我重命名了你的变量,因为range1它不是一个好的变量名。使用有意义的名称可以更轻松地阅读和维护您的代码。

所以你最终得到......</p>

Option Explicit

Public Sub main()
    On Error Resume Next 'don't error on cancel button
    Dim rngSource As Range
    Set rngSource = Application.InputBox("Select src Range", "select src range", Type:=8) 'type 8 = range

    Dim rngDest As Range
    Set rngDest = Application.InputBox("select des range", "select des range", Type:=8)
    On Error GoTo 0 're-activate error reporting

    If Not rngSource Is Nothing And Not rngDest Is Nothing Then
        rngSource.Copy
        rngDest.PasteSpecial Transpose:=True
    End If
End Sub

如果您只想粘贴值而不进行格式化,请使用...</p>

rngDest.PasteSpecial Paste:=xlPasteValues, Transpose:=True

有关详细信息,请参阅Range.PasteSpecial 方法xlPasteType 枚举


推荐阅读