[[20150129150557]] 『1行のデータの行列を入れ替えるマクロについて』(あゆか) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『1行のデータの行列を入れ替えるマクロについて』(あゆか)

いつもお世話になっております。

1行目のB列から任意の列まで文字列が入っているデータを、
A列の1行目を開始セルとした縦1行のデータに変換したいです。
このデータは別のファイルのテキストからB1に貼り付け後に、
区切り位置(,)で展開したものです。
また、A列に移したあと、B列には他のデータをコピーします。

このため、数列ではなくマクロで処理をしたいと考えて、
下のようなマクロを作成したところ、
2行目以降もA1と同じ文字列になってしまい、思うような動きをしません。
もしかして、1列での行列入れ替えはできないのでしょうか?
どのように直したら入れ替えができるか、ご教授ください。

以上、よろしくお願いいたします。

変更前:
    A    B     C   ・・・
1  XXX1  XXX2  XXX3  ・・・

変更後:
   A
1  XXX1
2  XXX2
3  XXX3
   ・
   ・
   ・

Sub 配列入れ替え()

    Dim MaxCol As Long
    Dim vData As Variant
    Dim vData2 As Variant

    MaxCol = Cells(1, Columns.Count).End(xlToLeft).Column    
    vData = Range(Cells(1, 2), Cells(MaxCol, 2))
    vData2 = Application.WorksheetFunction.Transpose(vData)
    Range("A1").Resize(UBound(vData2), UBound(vData2, 1)) = vData2

End Sub

< 使用 Excel:Excel2010、使用 OS:Windows7 >


ん〜、こうしたいのかな。(A1:n1をコピーですよね? あと、行指定と列指定がごちゃ混ぜ?)

 Sub 配列入れ替え()
    Dim MaxCol As Long
    Dim vData As Variant
    Dim vData2 As Variant

    MaxCol = Cells(1, Columns.Count).End(xlToLeft).Column
    vData = Range(Cells(1, 1), Cells(1, MaxCol))
    vData2 = Application.WorksheetFunction.Transpose(vData)
    Range("A1").Resize(MaxCol, 1) = vData2
 End Sub

これだとコピー元消えませんが。
(???) 2015/01/29(木) 15:55


あ、絵がずれていました。
B1:n1をコピー、が正しいです。。。

教えていただいたものを修正してできました!

    MaxCol = Cells(1, Columns.Count).End(xlToLeft).Column
    vData = Range(Cells(1, 2), Cells(1, MaxCol))
    vData2 = Application.WorksheetFunction.Transpose(vData)
    Range("A1").Resize(MaxCol - 1, 1) = vData2

コピー元は削除するマクロを追加します。

早々にありがとうございました。
たいへん助かりました。

(あゆか) 2015/01/29(木) 16:19


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.