Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 5391|回复: 2

[已解决]请问如何比较两列数据

[复制链接]
发表于 2015-1-25 17:33 | 显示全部楼层 |阅读模式
本帖最后由 zxc1152468 于 2015-1-26 00:02 编辑

现在我有两列数据都是姓名,需要比较,第一列和第二列中姓名有不相同的就显示在第三列,另外第列姓名和第二列姓名的顺序是乱的
最佳答案
2015-1-25 21:20
两列姓名,所有没有重复的姓名显示在第三列:
  1. Option Explicit

  2. Sub test()
  3.     Dim d As Object
  4.     Dim arr, brr, crr()
  5.     Dim dKeys, dItems
  6.     Dim i&, k&
  7.    
  8.     Set d = CreateObject("scripting.dictionary")
  9.    
  10.     With Sheet1
  11.         arr = .Range("a1:a" & .Cells(Rows.Count, 1).End(3).Row)
  12.         brr = .Range("b1:b" & .Cells(Rows.Count, 2).End(3).Row)
  13.     End With
  14.    
  15.     cf d, arr
  16.     cf d, brr
  17.    
  18.     dKeys = d.keys
  19.     dItems = d.items
  20.     ReDim crr(1 To d.Count, 1 To 1)
  21.    
  22.     For i = 1 To d.Count
  23.         If dItems(i - 1) = 1 Then
  24.             k = k + 1
  25.             crr(k, 1) = dKeys(i - 1)
  26.         End If
  27.     Next
  28.    
  29.     Sheet1.Range("c1").Resize(k) = crr
  30.    
  31. End Sub

  32. Sub cf(dic As Object, ByVal ar)
  33.     Dim i&
  34.     For i = 1 To UBound(ar)
  35.         If dic.exists(ar(i, 1)) Then
  36.             dic(ar(i, 1)) = 2
  37.         Else
  38.             dic(ar(i, 1)) = 1
  39.         End If
  40.     Next
  41. End Sub
复制代码
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2015-1-25 19:36 | 显示全部楼层
回复

使用道具 举报

发表于 2015-1-25 21:20 | 显示全部楼层    本楼为最佳答案   
两列姓名,所有没有重复的姓名显示在第三列:
  1. Option Explicit

  2. Sub test()
  3.     Dim d As Object
  4.     Dim arr, brr, crr()
  5.     Dim dKeys, dItems
  6.     Dim i&, k&
  7.    
  8.     Set d = CreateObject("scripting.dictionary")
  9.    
  10.     With Sheet1
  11.         arr = .Range("a1:a" & .Cells(Rows.Count, 1).End(3).Row)
  12.         brr = .Range("b1:b" & .Cells(Rows.Count, 2).End(3).Row)
  13.     End With
  14.    
  15.     cf d, arr
  16.     cf d, brr
  17.    
  18.     dKeys = d.keys
  19.     dItems = d.items
  20.     ReDim crr(1 To d.Count, 1 To 1)
  21.    
  22.     For i = 1 To d.Count
  23.         If dItems(i - 1) = 1 Then
  24.             k = k + 1
  25.             crr(k, 1) = dKeys(i - 1)
  26.         End If
  27.     Next
  28.    
  29.     Sheet1.Range("c1").Resize(k) = crr
  30.    
  31. End Sub

  32. Sub cf(dic As Object, ByVal ar)
  33.     Dim i&
  34.     For i = 1 To UBound(ar)
  35.         If dic.exists(ar(i, 1)) Then
  36.             dic(ar(i, 1)) = 2
  37.         Else
  38.             dic(ar(i, 1)) = 1
  39.         End If
  40.     Next
  41. End Sub
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-2 13:23 , Processed in 0.223952 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表