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

Excel 将值的范围从一张图纸移动到另一张图纸,excel,vba,Excel,Vba,我有一系列不同的整数值,比如说d7:o7。我想将这些值移动到同一工作手册中的另一个位置(基于此问题范围之外的逻辑)。最好的方法是什么 我最初(失败)的方法有点像这样: 创建一个变体 Dim myArray As Variant 为数组赋值 myArray = Range("d7:o7") 输出新范围内的整数数组 Range("d10:o10") = myArray 提前谢谢 这将复制(而不是删除原始值),假设您停留在同一张表上,但列表示为数字(例如a=1、B=2等)。此示例适用于2×2数组

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

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

创建一个变体

Dim myArray As Variant
为数组赋值

myArray = Range("d7:o7")
输出新范围内的整数数组

Range("d10:o10") = myArray
提前谢谢

这将复制(而不是删除原始值),假设您停留在同一张表上,但列表示为数字(例如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
这将复制(而不是删除原始值),假设您停留在同一张表上,但列表示为数字(例如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
希望这有帮助


希望这有帮助

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

所以我发布这篇文章,是为了对你开始做的事情提出一些看法。您可以将
数据从范围转换为数组,反之亦然。但是,输出时,这取决于您使用的是多维数组还是单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数组。因此,它将如下所示:


我相信最好的答案在上面:)你已经接受了

所以我发布这篇文章,是为了对你开始做的事情提出一些看法。您可以将
数据从范围转换为数组,反之亦然。但是,输出时,这取决于您使用的是多维数组还是单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数组。因此,它将如下所示:


这或多或少是我需要的。我感谢你的帮助!这或多或少是我需要的。我感谢你的帮助@汤姆。如果您想要使用数组和范围进行数据传输,请查看以下内容:D@TomM. 如果您想要使用数组和范围进行数据传输,请查看以下内容:D