为每个-Excel宏或等效VB选择所有位置

为每个-Excel宏或等效VB选择所有位置,excel,vba,Excel,Vba,我需要以一种非常具体的方式整理3张Excel电子表格中的数据,但我完全没有运气找到我需要使用的函数或命令,出于某种原因,今天连谷歌都帮不了我 对于Sheet1的每一行,我想“找到Sheet2上的所有行,其中Sheet1 ColumnA类似于Sheet2 ColumnA,Sheet1 ColumnB类似于Sheet2 ColumnB”。我想我可能可以用EQUALS而不是LIKE来表示通配符 然后,对于第一个查询找到的每个结果,我希望在Sheet1中的当前行下方插入一个新行,并将数据从Sheet2

我需要以一种非常具体的方式整理3张Excel电子表格中的数据,但我完全没有运气找到我需要使用的函数或命令,出于某种原因,今天连谷歌都帮不了我

对于Sheet1的每一行,我想“找到Sheet2上的所有行,其中Sheet1 ColumnA类似于Sheet2 ColumnA,Sheet1 ColumnB类似于Sheet2 ColumnB”。我想我可能可以用EQUALS而不是LIKE来表示通配符

然后,对于第一个查询找到的每个结果,我希望在Sheet1中的当前行下方插入一个新行,并将数据从Sheet2 ColumnC复制到新插入的行ColumnC中。我想我还需要计算第一个查询返回的行数,这样我就可以告诉它在重复循环之前跳过那么多行,尽管即使它在这些新行上执行循环,也不会找到任何结果

很明显,如果有人想为我写代码,我会非常高兴的!:) 但即使有人能让我知道我所需要的每一位的最佳功能,我仍然会非常感激,我只是研究它们,自己组装一些东西

提前感谢,

编辑

在下面添加了示例,首先是第1页,然后是第2页,然后是宏运行后第1页的预期结果。同样在上面,我说我将搜索“相似”匹配,但更准确的说法是,我想搜索单元格包含的内容


好吧,下面是我的解决方案。顺便说一句,如果您可以保证单元格已经排序,那么可以优化代码以减少比较时间

//Code is not tested
Sub Collate()

    Dim row1 As Long
    Dim row2 As Long
    Dim match As Boolean

    Dim lastRow1 As Long
    Dim lastRow2 As Long

    Dim valA1 As String
    Dim valB1 As String
    Dim valA2 As String
    Dim valB2 As String
    Dim valC2 As String

    lastRow1 = Sheet1.Cells.SpecialCells(xlCellTypeLastCell).Row
    lastRow2 = Sheet2.Cells.SpecialCells(xlCellTypeLastCell).Row

    row1 = 2
    While row1 <= lastRow1
        valA1 = "*" & Sheet1.Cells.Range("A" & row1).Value & "*"
        valB1 = "*" & Sheet1.Cells.Range("B" & row1).Value & "*"
        For row2 = 2 To lastRow2
            valA2 = Sheet2.Cells.Range("A" & row2).Value
            valB2 = Sheet2.Cells.Range("B" & row2).Value
            valC2 = Sheet2.Cells.Range("C" & row2).Value
            If valA2 Like valA1 And valB2 Like valB1 Then
                match = True
                row1 = row1 + 1
                lastRow1 = lastRow1 + 1
                Sheet1.Cells.Range("A" & row1).EntireRow.Insert
                Sheet1.Cells.Range("C" & row1).Value = valC2
            End If
        Next row2

        row1 = row1 + 1
    Wend

End Sub
//未测试代码
次级抵押
第1行的长度与第1行相同
第2行的长度相同
作为布尔值的Dim匹配
变暗最后一行1的长度
暗淡的最后一行2一样长
作为字符串的Dim valA1
作为字符串的Dim valB1
作为字符串的Dim valA2
作为字符串的Dim valB2
作为字符串的Dim valC2
lastRow1=Sheet1.Cells.SpecialCells(xlCellTypeLastCell).Row
lastRow2=Sheet2.Cells.SpecialCells(xlCellTypeLastCell).Row
行1=2

在第1行中,您计划进行多长时间的匹配,复制粘贴?直到排完?哪个版本的excel?嗨,谢谢回复。是的,直到行完成,在表1上大约有1500行,但在表2上超过60000行,所以我的宏一步一步完成这一切并不理想。我使用的是Excel 2007,您能发布三张工作表的屏幕截图吗?添加到描述中,再次感谢。谢谢!“开箱即用”并不完美,但我需要的一切都在这段代码中。再次感谢你