|
▼[名前なし] さん:
後者、行指定で配列を取り出すのは、シート関数の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以降に転記しています。
|
|