[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『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 >
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
教えていただいたものを修正してできました!
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.