如何将列转换为Excel中的行

Pr0*_*0no 3 excel vba excel-vba

我有以下Excel工作表:

   A
1 foo
2 bar
3 baz
4 bam
Run Code Online (Sandbox Code Playgroud)

(实际上,这个专栏更长,更长时间用手工转发而不是一个选项).如何将此工作表转换为

   A   B   C   D
1 foo bar baz bam
Run Code Online (Sandbox Code Playgroud)

我已经尝试过数据透视表功能,但无法获得我想要的输出.我也可以写一个(php)脚本来读取和转换Excel,但我无法想象这是在Excel中不容易完成的事情.但是,我一直无法找到这个问题的答案.你能帮我吗?

Pet*_*ert 7

有两种简单,非编程方式:

  1. 复制数据并在目标上,使用选择性粘贴 - > 移调
  2. 应用TRANSPOSE工作表函数:选择转置大小的范围(在您的示例中为1行x 4列并输入=TRANSPOSE(A1:A4).您需要将其作为数组公式输入,即按Ctrl- Shift-Enter

如果出于某种原因需要通过代码执行此操作,则此VBA代码将执行以下操作:

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

您可以这样简单地调用它:

CopyTransposed [A1:A4], [C1] 
Run Code Online (Sandbox Code Playgroud)

或者更明确

CopyTransposed Sheets("SourceSheet").Range("A1:A4"),Sheets("TargetSheet").Range("C1")
Run Code Online (Sandbox Code Playgroud)