Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


5089 / 76732 ←次へ | 前へ→

【77256】Re:配列 列を並び替える
発言  β  - 15/6/26(金) 17:06 -

引用なし
パスワード
   ▼[名前なし] さん:

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

272 hits

【77251】配列 列を並び替える Mari 15/6/26(金) 14:06 質問[未読]
【77252】Re:配列 列を並び替える β 15/6/26(金) 15:08 発言[未読]
【77253】Re:配列 列を並び替える [名前なし] 15/6/26(金) 15:32 回答[未読]
【77254】Re:配列 列を並び替える ウッシ 15/6/26(金) 15:35 回答[未読]
【77255】Re:配列 列を並び替える ウッシ 15/6/26(金) 15:46 回答[未読]
【77256】Re:配列 列を並び替える β 15/6/26(金) 17:06 発言[未読]

5089 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free