[[20050905205544]] 『VBA:ある配列を横1列の配列に変換する』(masabou5) ページの最後に飛ぶ

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

 

『VBA:ある配列を横1列の配列に変換する』(masabou5)

 	A	B	C     D     E    F   G   H   I   J   K   L   M
1	2	5	6           2    5   6   3   4   8   9   1   7
2	3	4	8
3	9	1	7

 上記のようにA1〜C3の配列を、E1〜M1の配列に変換するVBAを教えて下さい。よろしくお願いします。

 オーソドックスに(自分ではそう思ってる(^^;)
エラー処理とか難しいことはなしで、、
とりあえずこんな感じでどうでしょうか?
Option Explicit
Sub てすと()
Dim MyA As Variant
Dim MyAry() As Variant
Dim i As Long
Dim j As Long
Dim k As Long
MyA = Range("A1:C3").Value
ReDim MyAry(1 To UBound(MyA, 1) * UBound(MyA, 2))
For i = 1 To UBound(MyA, 1)
    For j = 1 To UBound(MyA, 2)
        k = k + 1
        MyAry(k) = MyA(i, j)
    Next
Next
Range("E1").Resize(, UBound(MyAry)).Value = MyAry
Erase MyA, MyAry
End Sub
(SoulMan)

 この事例では、このように書くのが、判りやすいように思いますが。。。          (LOOKUP)

 Sub Macro1()
     Range("E1:G1").Value = Range("A1:C1").Value
     Range("H1:J1").Value = Range("A2:C2").Value
     Range("K1:M1").Value = Range("A3:C3").Value
 End Sub

 おぉぉぉ、、ということは、、
こういうことですね(^^;
Option Explicit
Sub てすと()
Dim MyA As Variant
Dim i As Long
Dim k As Long
MyA = Range("A1:C3").Value
For i = 1 To UBound(MyA, 1)
    Range("E1").Offset(, k).Resize(, UBound(MyA, 2)).Value = Application.Index(MyA, i, 0)
    k = k + UBound(MyA, 2)
Next
Erase MyA
End Sub
(SoulMan)

 っちゅうことはこんなんもありか?
 '------------------
 Sub test()
    Dim i As Integer
        For i = 1 To 3
            Cells(1, 2 + i * 3).Resize(, 3) = Cells(i, 1).Resize(, 3).Value
        Next i
 End Sub
        (弥太郎)


 うへ。弥太郎さんと衝突するとは(爆)。

 SoulManさんへ。 LOOKUPさんがいってるのは、そういう意味じゃないと
 思いますよ。
 UBoundとかResizeとがいろいろ使ってるから、私的にはパッと見、
 難しそうなプログラムに感じます。
 ただ、範囲の拡大等によるコード修正を考えたときに
 どのレベルまでにするかが人それぞれですから。
 本来なら入力と処理と出力をきっちり分けて、サブルーチンとして
 作っておいたほうがよいものだと思います。
 私なら↓ぐらいでしょうか。出力順を変えられると痛いですが(汗)。
 (ramrun)

 Option Explicit
 Sub test()
 Dim before As Range
 Dim after As Range
 Dim c As Variant
 Dim n As Long

 Set before = Range("A1:C3")
 Set after = Range("E1:M1")
 n = 1
 For Each c In before
     after(n) = c
     n = n + 1
 Next c
 End Sub

 ふむふむ、な〜るほど(笑
 そもそも弥太郎流横着マクロはramrun流が基盤になっとりますんで、出来が悪かったら
 基盤が悪いっちゅうことになりますデス、はい。
      (弥太郎)

 >LOOKUPさんがいってるのは、そういう意味じゃないと 思いますよ。
 了解v(=∩_∩=)v
 うぅ〜〜ん、、素晴らしい!!!
 四角を長方形って感じです。それも、直ですね。
 しかし、発想が柔らかいですねぇ(^^;
 >オーソドックスに(自分ではそう思ってる(^^;)
 ↑ちょっと煮詰まってるかな?と思っておりました。
 精進!精進!!ですね。ありがとうございました。
(SoulMan)

 SoulManさん、Lookupさん、弥太郎さん、ramrumさん、いつもありがとうございます。
 すべての議論についていけないところもありますが、いろいろなやり方があり、
 とても参考になりました。
 今後ともよろしくお願いします。ありがとうございました。(masabou5)

コメント返信:

[ 一覧(最新更新順) ]


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