d7:o7 からとしましょう。これらの値を同じブック内の別の場所に移動したいと思います (この質問の範囲外のロジックに基づいて)。これを行う最善の方法は何ですか?
私の最初の(失敗した)アプローチは、次のようになりました。
バリアントを作成する
Dim myArray As Variant
配列に値を割り当てる
myArray = Range("d7:o7")
新しい範囲の整数の出力配列
Range("d10:o10") = myArray
前もって感謝します!
Range("D10:O10").Value = Range("d7:O7").Value
お役に立てれば
同じシートにとどまっていると仮定すると、これはコピーされます(元の値は削除されません)が、列は数値として表されます(例:A = 1、B = 2など)。この例は 2 行 2 列の配列ですが、開始と終了の行番号と列番号は簡単に変更できます。
Sub CopyCells()
Dim SrcBeginRowNum As Integer
Dim SrcBeginColNum As Integer
Dim SrcEndRowNum As Integer
Dim SrcEndColNum As Integer
Dim DstBeginRowNum As Integer
Dim DstBeginColNum As Integer
Dim ri As Integer
Dim ci As Integer
Dim dest_ri As Integer
SrcBeginRowNum = 1
SrcBeginColNum = 1
SrcEndRowNum = 2
SrcEndColNum = 2
DstBeginRowNum = 34
DstBeginColNum = 5
dest_ri = DstBeginRowNum
dest_ci = DstBeginColNum
For ri = SrcBeginRowNum To SrcEndRowNum
dest_ci = DstBeginColNum
For ci = SrcBeginColNum To SrcEndColNum
Cells(dest_ri, dest_ci).Value = Cells(ri, ci).Value
dest_ci = dest_ci + 1
Next
dest_ri = dest_ri + 1
Next
End Sub
最良の答えは上にあると思います:)あなたが受け入れたところ。
だから私はあなたが始めたことにいくつかの視点を投げかけるために、これを投稿しています. Transposing範囲から配列へのデータ、およびその逆のデータに対してこれを行うことができます。ただし、出力するときは、多次元配列を使用しているか、単次元配列を使用しているかによって異なります。Sheet1サンプルコードを取り上げます。
Dim myArray As Variant
'--to array
myArray = WorksheetFunction.Transpose(WorksheetFunction_
.Transpose(Sheets(2).Range("D7:O7").Value))
'--to sheet
Sheets(1).Range("D10").Resize(1, _
UBound(Application.Transpose(myarray))) = myarray
二重転置を使用して、複数列が 2D 配列を作成しないようにしました。したがって、次のようになります。
