【问题标题】:Excel VBA: Copy from one worksheet to anotherExcel VBA:从一个工作表复制到另一个
【发布时间】:2013-10-26 15:16:50
【问题描述】:

所以我有一个工作簿,里面有两张纸。我需要将数据从工作表 2(“详细信息”)复制到工作表 1(“Syncrofit”)。我需要将 ws2 中的项目粘贴到工作表 1 上的渐进行中,因此工作表 2 中的行 B 列表示“Joint1-1”需要插入工作表 1 的第 1 行下方。这实际上创建了一个嵌套表。

这是我目前所拥有的,主要是从代码和我在这里找到的帮助中收集的:

Sub SelectJoints()
    Sheets("Detail").Activate
    Dim Selection1 As Integer, Selection2 As Integer
    Dim SelectionRange As Range
    Dim num As Integer

    
    Dim rngFind As Range
    Set rngFind = Columns("B:B").Find(what:="*" & "Joint1-" & num, After:=Range("B1"), LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext)

    If Not rngFind Is Nothing Then
        Selection1 = rngFind.Row + 1
    End If

    Set rngFind = Columns("B:B").Find(what:="*Joint1-" & num + 1, After:=Range("B1"), LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext)
    
    If Not rngFind Is Nothing Then
        Selection2 = rngFind.Row - 1
    End If

    If Selection1 > 0 And Selection2 > 0 Then
        Set SelectionRange = Range(Cells(Selection1, 2), Cells(Selection2, 6))
    End If
    


End Sub

这里的目的是激活详细信息表,在 B 列中找到匹配 SomeTextHere(Joint1-1) 的字符串并选择这些行。然后我需要将这些选择粘贴到工作表 1(在第 1 行下方,其值与其中一列中的 Joint 值匹配),返回工作表 2,选择包含 SomeTextHere(Joint1-2) 的行并粘贴那些在下一行下方(在刚刚插入的行之后)。我意识到粘贴部分不在代码中。这让我发疯了。

请原谅我缺乏关于 VBA 的知识。

我希望成品看起来像一个嵌套表,如下所示:

               Original Items
Copied from sheet 2
Copied from sheet 2
Copied from sheet 2
               Original Item 2
Copied from sheet 2
etc.

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    我有点无聊,所以我做了一些可能对你有帮助的东西。让我知道它是否适合你。

    Sub Macro1()
    
    Dim i, j, x
    Dim rng As Range
    Dim sh1 As Worksheet
    Dim sh2 As Worksheet
    Set sh1 = Sheets("Syncrofit")
    Set sh2 = Sheets("Detail")
    
    lr = sh2.Range("B" & Rows.Count).End(xlUp).Row
    lc = sh2.Cells(2, Columns.Count).End(xlToLeft).Column
    
    
    j = 2
    For y = 1 To 3 ' set upper limit of first integer in Joint string
        For x = 1 To 2 ' set upper limit of second integer in Joint string
            For i = 2 To lr
                If InStr(sh2.Cells(i, 2), "Joint" & y & "-" & x) <> 0 Then
                    sh2.Range(sh2.Cells(i, 1), sh2.Cells(i, lc)).Copy
                    sh1.Rows(j).Insert
                    j = j + 1
                End If
            Next i
        Next x
    Next y
    End Sub
    

    【讨论】:

    • 啊,太好了,这应该让我有个好的开始。它添加了所有值,但我需要它来插入行,所以应该只是常规粘贴而不是粘贴值,对吗?还有关节 2-xx、3-xx 等,但我应该能够为前导数字添加变量或复制/粘贴关节 2-x、3-x 等的代码。谢谢!跨度>
    • 嗯。所以你的意思是,而不是仅仅将值粘贴到彼此下方,而是要插入行?如果这就是您要查找的内容,我修改了代码以执行此操作...还有一个额外的循环来处理 Joint Y-X 部分。
    • 这会将它们作为行插入,但是它会复制 4 列并在整行中重复。另外,我需要它跳到下一行以从工作表 2 中插入接下来的 3 行,以便它基本上在两张工作表之间构建一个嵌套表。我编辑了 OP 以举例说明我的意思
    猜你喜欢
    • 2016-11-19
    • 1970-01-01
    • 2014-12-09
    • 1970-01-01
    • 2019-05-02
    • 2018-07-22
    • 2017-02-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多