4

次のExcelワークシートがあります。

   A
1 foo
2 bar
3 baz
4 bam

(実際には、列ははるかに長く、手作業での転送はオプションではありません)。このシートを次のように変換するにはどうすればよいですか

   A   B   C   D
1 foo bar baz bam

ピボットテーブル関数を試しましたが、必要な出力を取得できません。(php)スクリプトを記述して、Excelを読み取って変換することもできますが、これがExcelでは簡単に実行できないことだとは想像できません。しかし、私はこの問題の答えを見つけることができませんでした。手伝ってくれますか?

4

3 に答える 3

8

プログラムを使用しない簡単な方法が 2 つあります。

  1. データをコピーし、ターゲットで[形式を選択して貼り付け] -> [転置]を使用します
  2. ワークシート関数を適用します: 転置されたサイズの範囲を選択します(TRANSPOSEこの例では 1 行 x 4 列で、 と入力します。=TRANSPOSE(A1:A4)これを配列数式として入力する必要があります。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")
于 2013-02-27T19:04:19.277 に答える
3

データを転置するだけでよい場合(つまり、フォーマットなし)は、これを試してください

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
于 2013-02-27T18:32:18.173 に答える
0

Ctrl + Cを押して、[形式を選択して貼り付け]を使用してコピーして貼り付けます。ダイアログボックスで[転置]をクリックします。

ただし、これにより値として貼り付けられます。

于 2013-02-27T20:20:13.870 に答える