Excel双向列表比较总结
我在一组Excel列表上运行双向比较来检查列表2中是否存在列表1中的ID(反之亦然)。 列表2中缺less的任何ID都是一个Dropout
。 列表2中添加的任何新ID都是New
。 这两个列表中的任何ID都是正在Returning
。
我尝试使用IF和VLOOKUP的组合。
=IF(ISERROR(VLOOKUP(sheet1!A2,sheet2!A:A,1,FALSE)),"Dropout","Returning")
单向比较(检查退出)正在工作。 我需要一种方法来检查新生(反方向比较)。 我怎样才能在同一个总结栏中做到这一点?
更新#1:
汇总表的B:C列中的值是从sheet1中绘制的。 那些需要一个公式来智能地从正确的工作表中select正确的数据。
更新#2:
出现一个Visual Basic脚本可能是一个更平滑的方式来解决这个问题。 任何指针如何处理这个?
1级考勤:
2class出勤:
概要:
只是因为:
Sub outpt() Dim ws1 As Worksheet, ws2 As Worksheet, ws3 As Worksheet Dim arr1 As Variant, arr2 As Variant, outarr As Variant Dim dict As Object Dim i As Long, j As Long Dim st As Boolean, nd As Boolean Dim item As Variant Set dict = CreateObject("scripting.Dictionary") Set ws1 = Worksheets("Sheet1") 'Class 1 Set ws2 = Worksheets("Sheet2") 'Class 2 Set ws3 = Worksheets("Sheet3") 'Summary With ws1 arr1 = .Range(.Cells(2, 1), .Cells(.Rows.Count, 2).End(xlUp)).Value End With With ws2 arr2 = .Range(.Cells(2, 1), .Cells(.Rows.Count, 2).End(xlUp)).Value End With For i = LBound(arr1, 1) To UBound(arr1, 1) On Error Resume Next dict.Add arr1(i, 1), arr1(i, 2) On Error GoTo 0 Next i For i = LBound(arr2, 1) To UBound(arr2, 1) On Error Resume Next dict.Add arr2(i, 1), arr2(i, 2) On Error GoTo 0 Next i ReDim outarr(1 To dict.Count, 1 To 3) As Variant j = 1 For Each item In dict.keys st = False nd = False For i = LBound(arr1, 1) To UBound(arr1, 1) If arr1(i, 1) = item Then st = True Exit For End If Next i For i = LBound(arr2, 1) To UBound(arr2, 1) If arr2(i, 1) = item Then nd = True Exit For End If Next i outarr(j, 2) = item outarr(j, 3) = dict(item) If st And nd Then outarr(j, 1) = "Returning" ElseIf st Then outarr(j, 1) = "Dropout" Else outarr(j, 1) = "New" End If j = j + 1 Next item 'Assumes titles already in row 1 ws3.Range("A2").Resize(dict.Count, 3).Value = outarr End Sub
创build:
一个简单的技巧可能是以这种方式复制数据:
1级2级
2级1级
从第一列到第二列执行VLOOKUP将得到结果。
你可以简单地结合2个公式:
=IF(ISERROR(VLOOKUP(Sheet3!B2,Sheet2!A:A,1,FALSE)),"Dropout",IF(ISERROR(VLOOKUP(Sheet3!B2,Sheet1!A:A,1,FALSE)),"New","Returning"))
(假设1级考勤在Sheet1上,2级考勤在Sheet2上,总结在Sheet3上)
但是我个人更喜欢更可读的东西(比如NIVeR的答案)。
当然,Scott Craner的提议更好。