0

d7:o7 からとしましょう。これらの値を同じブック内の別の場所に移動したいと思います (この質問の範囲外のロジックに基づいて)。これを行う最善の方法は何ですか?

私の最初の(失敗した)アプローチは、次のようになりました。

バリアントを作成する

Dim myArray As Variant

配列に値を割り当てる

myArray = Range("d7:o7")

新しい範囲の整数の出力配列

Range("d10:o10") = myArray

前もって感謝します!

4

3 に答える 3

3
Range("D10:O10").Value = Range("d7:O7").Value

お役に立てれば

于 2013-01-14T19:51:06.400 に答える
0

同じシートにとどまっていると仮定すると、これはコピーされます(元の値は削除されません)が、列は数値として表されます(例: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
于 2013-01-14T19:50:25.537 に答える
0

最良の答えは上にあると思います:)あなたが受け入れたところ。

だから私はあなたが始めたことにいくつかの視点を投げかけるために、これを投稿しています. 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 配列を作成しないようにしました。したがって、次のようになります。

ここに画像の説明を入力

于 2013-01-14T23:03:49.297 に答える