将值范围从一张纸移动到另一张纸

时间:2013-01-14 19:37:30

标签: excel excel-vba vba

我有一系列不同的整数值,比如d7:o7。我想将这些值移动到同一工作簿中的另一个位置(基于此问题范围之外的逻辑)。这样做的最佳方式是什么?

我的初始(失败)方法有点像这样:

创建变体

Dim myArray As Variant

为数组赋值

myArray = Range("d7:o7")

输出新范围内的整数数组

Range("d10:o10") = myArray

提前致谢!

3 个答案:

答案 0 :(得分:3)

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

希望这有帮助

答案 1 :(得分:0)

这将复制(不删除原始值),假设您停留在同一张纸上,但该列表示为数字(EG A = 1,B = 2等) 。此示例适用于2 x 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

答案 2 :(得分:0)

我相信上面给出了最佳答案 :)你已经接受了。

所以我发布这个,以便对你开始做的事情提出一些看法。您可以对范围到数组的Transposing数据执行此操作,反之亦然。但是,输出时取决于您使用的是多维数组还是单D数组。我们将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数组。所以它看起来如下:

enter image description here