Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
12
返回列表 发新帖

[已解决]再次求助VBA对比人员及工资变化情况

[复制链接]
发表于 2014-11-17 00:23 | 显示全部楼层    本楼为最佳答案   
  1. Sub 比较异同()
  2.    Dim arr, brr, i&, k%, d As Object, re(), cnt%(1 To 3), tmp
  3.    For k = 2 To 12
  4.        arr = Sheets(k - 1 & "月份").Range("A1").CurrentRegion.Value
  5.        brr = Sheets(k & "月份").Range("A1").CurrentRegion.Value
  6.        ReDim re(1 To UBound(arr) + UBound(brr), 1 To 3)
  7.        Set d = CreateObject("scripting.dictionary")
  8.        For i = 2 To UBound(arr)
  9.            d(arr(i, 1)) = arr(i, 2)
  10.        Next
  11.        For i = 2 To UBound(brr)
  12.            If Not d.exists(brr(i, 1)) Then
  13.                cnt(2) = cnt(2) + 1
  14.                re(cnt(2), 2) = brr(i, 1)
  15.            Else
  16.                If d(brr(i, 1)) <> brr(i, 2) Then cnt(3) = cnt(3) + 1: re(cnt(3), 3) = brr(i, 1)
  17.                d.Remove (brr(i, 1))
  18.            End If
  19.        Next
  20.        tmp = d.keys
  21.        For i = 0 To UBound(tmp)
  22.            re(i + 1, 1) = tmp(i)
  23.        Next
  24.        Range("A4").Offset(, (k - 2) * 3).Resize(UBound(re), 3) = re
  25.        Erase cnt
  26.        d.RemoveAll
  27.        Set d = Nothing
  28.    Next
  29. End Sub
复制代码

评分

参与人数 1 +3 收起 理由
〃高调的沉默 + 3 很给力!

查看全部评分

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-23 20:14 , Processed in 0.506779 second(s), 8 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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