繁体   English   中英

在sheet1和sheet2中搜索相同的值,然后将值从sheet1复制到sheet2

[英]Search for same values in sheet1 and sheet2 and copy the values from sheet1 to sheet2

我曾经和excel一起工作过,但是在VBA上却不是很好,所以我需要帮助来制作一个宏,但我无法让录制宏起作用:(

我有2张纸(Sheet1和Sheet2)的Excel文件。

我想将工作表Sheet2(第A列)中的文本与工作表1(第B列)中的文本进行比较,如果它在两个工作表中都找到相同的文本,那么我是否希望宏将工作表1中的A,B,C和D列复制到B列中,图纸2中的C,D和E。

在工作表1中,我有6000多行,所以我不想手动执行此操作或在excel中执行公式,我想要一个可以为我执行此操作的宏。

床单上有标题,有人可以帮我吗?

对于您要做什么,我还不太清楚。 这是我的解释:假设,对于工作表1的X行A列中的值-如果您在工作表2的Y行B列中找到了对应的值-您想从工作表1复制X行中属于的单元格到ABCD列,并将它们粘贴到Y行BCD E列的工作表2上。

如果正确,请尝试以下操作:

Sub copyCells()
    Dim wb As Workbook, firstWs As Worksheet, secondWs As Worksheet
    Dim matchIndex As Integer

    Set wb = ThisWorkbook
    Set firstWs = wb.Worksheets(1)
    Set secondWs = wb.Worksheets(2)

    Application.ScreenUpdating = False

    ' We'll start at i=2 to account for the header
    For i = 2 To firstWs.Range("A2:A6000").Rows.count
        On Error Resume Next
        ' MATCH will find the row number in sheet 2 - change the range specifications as needed
        matchIndex = Application.WorksheetFunction.Match(firstWs.Range("A" & i), secondWs.Range("B2:B6000"), 0)
        Err.Clear
        On Error GoTo 0

        ' MATCH will throw an error if it finds no results.
        ' Hence: if matchindex contains an error, do nothing.
        ' But if it doesn't contain an error, it must contain a row number - so we can proceed.
        If Not Application.WorksheetFunction.IsNA(matchIndex) Then
            secondWs.Range("B" & matchIndex).Value = firstWs.Range("A" & i).Value
            secondWs.Range("C" & matchIndex).Value = firstWs.Range("B" & i).Value
            secondWs.Range("D" & matchIndex).Value = firstWs.Range("C" & i).Value
            secondWs.Range("E" & matchIndex).Value = firstWs.Range("D" & i).Value    
        End If
    Next i

    Application.ScreenUpdating = True
End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM