0

所以我有一个工作簿,里面有两张纸。我需要将数据从工作表 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.
4

1 回答 1

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
于 2013-10-17T23:39:34.887 回答