Sub Sample9_Transpose()
Dim vList As Variant
vList = Range("B4").CurrentRegion
Dim c As Long
'インデックスは1から!
'第一引数が行番号!
'表ではタイトルも含まれてしまうのでので注意!
For c = LBound(vList, 1) To UBound(vList, 1)
Debug.Print vList(c, 1), vList(c, 2), vList(c, 7)
Next
Debug.Print vbNewLine
Dim v2List As Variant
'二次元配列の縦横を入れ替え
'インデックスは1から!
'第一引数が行番号から列番号に変更される!
v2List = Application.WorksheetFunction.Transpose(vList)
For c = LBound(v2List, 2) To UBound(v2List, 2)
Debug.Print v2List(1, c), v2List(2, c), v2List(7, c)
Next
End Sub
Sub Sample9_Transpose()
Dim vList As Variant
vList = Range("B4").CurrentRegion
Dim c As Long
'インデックスは1から!
'第一引数が行番号!
'表ではタイトルも含まれてしまうのでので注意!
For c = LBound(vList, 1) To UBound(vList, 1)
Debug.Print vList(c, 1), vList(c, 2), vList(c, 7)
Next
Debug.Print vbNewLine
Dim v2List As Variant
'二次元配列の縦横を入れ替え
'インデックスは1から!
'第一引数が行番号から列番号に変更される!
v2List = Application.WorksheetFunction.Transpose(vList)
For c = LBound(v2List, 2) To UBound(v2List, 2)
Debug.Print v2List(1, c), v2List(2, c), v2List(7, c)
Next
End Sub
田中 宏明さんの投稿
(投稿ID: 4480)
Excel自体のTranspose関数を呼び出すことで実現。Debug.Printで結果が同じになるので、うまくいっているようです。
実務で活用できそうな事例が思い当たりませんが、第一引数の行番号をRedim Preserveできない場合、縦横入替で 第二引数の行番号をRedim Preserveできることくらいでしょうか。
小川慶一さんのコメント
(コメントID: 6186)
> 実務で活用できそうな事例が思い当たりませんが、
だよな...と思いつつお返事を考えていたら、タイミングを逃してしまいました。
> 第一引数の行番号をRedim Preserveできない場合、縦横入替で 第二引数の行番号をRedim Preserveできることくらいでしょうか。
そういう形で困ったこと、ないですね。
もしも第一引数の要素数で困ることがあるなら、そもそも、元データの形とかに問題ありそうに思います。
DPRから見直したいですね。(Pが大変なら、たいてい、Dがおかしいか、Rで色気を出しすぎ)
> 配列を研究し、「二次元配列の縦横入替」を知りました。
> Excel自体のTranspose関数を呼び出すことで実現。Debug.Printで結果が同じになるので、うまくいっているようです。
>
> 実務で活用できそうな事例が思い当たりませんが、第一引数の行番号をRedim Preserveできない場合、縦横入替で 第二引数の行番号をRedim Preserveできることくらいでしょうか。