复制一列并粘贴并转置为一行

时间:2019-07-23 13:58:53

标签: excel vba

我正在尝试获取一列并将其转置为一行。我知道这可以通过数据透视表和/或常规复制和粘贴来完成,但是我需要将其合并到宏中。

值也可以按时间顺序排序吗?

之前Before

目标: Goal

1 个答案:

答案 0 :(得分:2)

您手动执行此操作,将使用选择性粘贴->转置。因此,尝试:

Sub Macro1()
    Range("F4:F15"). Select
    Selection.Copy
    Range("A3").Select
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=True
    Application.CutCopyMode = False
End Sub

要按时间顺序对其进行排序,请尝试以下操作:Order1:=xlAscending

避免选择:

Sub CopyTransposed(rngSource As Range, rngTargetCell As Range)
    rngTargetCell.Resize(rngSource.Columns.Count, rngSource.Rows.Count).Value = _
        Application.WorksheetFunction.Transpose(rngSource)
End Sub

Sub test()

CopyTransposed [A1:A100], [C1]
'or

'CopyTransposed Sheets("SourceSheet").Range("A1:A4"), Sheets("TargetSheet").Range("C1")

End Sub

您注意到您可以通过两种方式呼叫CopyTransposed

  1. CopyTransposed [A1:A100], [C1]
  2. CopyTransposed Sheets("SourceSheet").Range("A1:A4"), Sheets("TargetSheet").Range("C1")