如何在Excel中将列转换成一行
我有以下Excel工作表:
A 1 foo 2 bar 3 baz 4 bam
(实际上,这个专栏很长,更长的时间用手转发,而不是一个选项)。 我怎样才能转换成这张表
ABCD 1 foo bar baz bam
我试过数据透视表function,但无法得到我想要的输出。 我也可以写一个(PHP)脚本来读取和转换Excel,但我无法想象这是在Excel中不容易完成的事情。 但是,我一直无法find这个问题的答案。 你能帮我吗?
有两个简单的,非编程的方式:
- 复制数据并在目标处使用select性粘贴 – > 移调
- 应用
TRANSPOSE
工作表函数:select转置大小的范围(在你的例子中是1行x4列,并input=TRANSPOSE(A1:A4)
需要input数组公式,即按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
你可以简单地这样调用它:
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性粘贴进行复制和粘贴。 点击对话框上的转置。
这将粘贴它作为值虽然….