循环浏览excel列,并检查每个值是否与另一个excel中的值匹配

循环浏览excel列,并检查每个值是否与另一个excel中的值匹配,excel,vba,Excel,Vba,我有两个excel文件,分别是reconfile和dataextfile。 这两个文件都有一个名为PNR的列 我需要检查Recon的Pnr列中的每个值是否与DataExt的Pnr列匹配。 如果找到匹配项,请检查有多少个匹配项 如果找到0个匹配项,请将Recon中的H列留空 If 1匹配If found将与匹配的Pnr单元格对应的D、E、F和G列单元格中的值复制到D、E、F和G中的Recon文件中 如果找到2个匹配项,则检查在第一个和第二个匹配项中,Recon中名为Sector的列是否也与Data

我有两个excel文件,分别是reconfile和dataextfile。 这两个文件都有一个名为PNR的列

我需要检查Recon的Pnr列中的每个值是否与DataExt的Pnr列匹配。 如果找到匹配项,请检查有多少个匹配项

如果找到0个匹配项,请将Recon中的H列留空

If 1匹配If found将与匹配的Pnr单元格对应的D、E、F和G列单元格中的值复制到D、E、F和G中的Recon文件中

如果找到2个匹配项,则检查在第一个和第二个匹配项中,Recon中名为Sector的列是否也与DataExt中的Sector列匹配。如果匹配,则将对应于该列的值复制到该列,否则将值复制到返回列

如果发现2个以上的匹配项,则按发现2个以上的匹配项填写“侦察”列


有人能帮我使用excel宏的VBA代码吗

jishnu欢迎来到StackOverflow。下面是一个很好的起点,你正在寻找什么。请检查并尝试修改以使您达到所需的位置

Option Explicit

    Sub Test()

        Dim wbR As Workbook, wbD As Workbook
        Dim wsR As Worksheet, wsD As Worksheet
        Dim LastrowR As Long, LastrowD As Long, i As Long, CountTimes As Long
        Dim PNR As String

        Set wbR = Workbooks("Recon.xlsm")
        Set wbD = Workbooks("DataExt.xlsx")

        Set wsR = wbR.Worksheets("Sheet1")
        Set wsD = wbD.Worksheets("Sheet1")

        'Let as assume that PNR column is column A, in Sheet 1, in both workbooks.
        'Also keep in mind that both workbooks should be open and have the following types (Recon -> .xlsm & DataExt ->  .xlsx)

        'Find the last row of PNR column in Recon File
        LastrowR = wsR.Cells(wsR.Rows.Count, "A").End(xlUp).Row
        'Find the last row of PNR column in DataExt File
        LastrowD = wsD.Cells(wsD.Rows.Count, "A").End(xlUp).Row
        'Loop PNR column in Recon File
        For i = 2 To LastrowR
            'Assign value to PNR
            PNR = wsR.Range("A" & i).Value
                'Count how many times PNR appears in column A DataExt file
                CountTimes = Application.WorksheetFunction.CountIf(wsD.Range("A2:A" & LastrowD), PNR)

                'If appears 1 time
                If CountTimes = 1 Then
                'If appears 2 times
                ElseIf CountTimes = 2 Then
                'If appears more than 2 times
                ElseIf CountTimes > 2 Then
                End If

        Next i

    End Sub

你取得了什么成就?有什么问题?只需使用嵌套循环和一些条件