如何在Excel中将列转换成一行

我有以下Excel工作表:

A 1 foo 2 bar 3 baz 4 bam 

(实际上,这个专栏很长,更长的时间用手转发,而不是一个选项)。 我怎样才能转换成这张表

  ABCD 1 foo bar baz bam 

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

有两个简单的,非编程的方式:

  1. 复制数据并在目标处使用select性粘贴 – > 移调
  2. 应用TRANSPOSE工作表函数:select转置大小的范围(在你的例子中是1行x4列,并input=TRANSPOSE(A1:A4)需要input数组公式,即按CtrlShiftEnter

如果由于某种原因,您需要通过代码来完成此操作,则此VBA代码将执行:

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

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

 CopyTransposed [A1:A4], [C1] 

或者更加明确

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

如果你只需要转置数据,(即没有格式)试试这个

 Sub zx() Dim rng As Range Dim dat As Variant With ActiveSheet ' can be any sheet Set rng = .[A1:A5] ' get refernce to your data, by any means dat = rng ' copy data to array rng.Clear ' clear old data ' paste transposed data .Range(rng.Cells(1, 1), Cells(rng.Row, rng.Rows.Count)) = Application.Transpose(dat) End With End Sub 

Ctrl + C使用select性粘贴进行复制和粘贴。 点击对话框上的转置。

这将粘贴它作为值虽然….