| 
    
     |  | ▼[名前なし] さん: 
 後者、行指定で配列を取り出すのは、シート関数のINDEXを使えば割合と楽です。
 取り出した結果を A40から下に転記しています。
 
 Sub Test1()
 Dim v As Variant
 Dim w As Variant
 
 v = Range("A1:Z10").Value
 v = WorksheetFunction.Transpose(v)
 w = Application.Index(v, Evaluate("row(1:" & UBound(v, 1) & ")"), Array(1, 3, 10))
 w = WorksheetFunction.Transpose(w)
 
 Range("A40").Resize(UBound(w, 1), UBound(w, 2)).Value = w
 
 End Sub
 
 列指定の取り出し、以下のような方法も。
 
 まず、
 
 Function makeArray(r As Range, ParamArray cols())
 Dim w As Variant
 Dim col As Variant
 Dim x As Long
 Dim c As Range
 Dim i As Long
 
 ReDim w(1 To r.Rows.Count, 1 To UBound(cols) + 1)
 
 For Each col In cols
 i = 0
 x = x + 1
 For Each c In Cells(r.Row, col).Resize(r.Rows.Count)
 i = i + 1
 w(i, x) = c.Value
 Next
 Next
 
 makeArray = w
 
 End Function
 
 こんなコードを準備しておいて、使う場合は
 
 Sub Test2()
 Dim v As Variant
 
 v = makeArray(Range("A1:Z10"), "B", "D", "A", "N", "Z", "F")
 
 Range("A20").Resize(UBound(v, 1), UBound(v, 2)).Value = v
 
 End Sub
 
 取り出したい列記号を、その順番で、いくつでも記述。
 結果を A20以降に転記しています。
 
 
 |  |