Excel精英培训网

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

[已解决]请问,可以不可以用VBA实现这种效果,如附件。谢谢

[复制链接]
发表于 2015-1-1 11:39 | 显示全部楼层 |阅读模式
请问,可以不可以用VBA实现这种效果,如附件。谢谢
最佳答案
2015-1-1 16:50
………………

复件 (2) 表.rar

10.5 KB, 下载次数: 11

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2015-1-1 16:48 | 显示全部楼层
  1. Sub Macro2()
  2. Dim arr, brr, d, i&, j%, zf$, zf2$
  3. Set d = CreateObject("scripting.dictionary")
  4. arr = Range("a4").CurrentRegion
  5. brr = Sheet2.Range("a1").CurrentRegion
  6. For i = 4 To UBound(arr)
  7.     zf = arr(i, 1) & "," & arr(i, 2)
  8.     d(zf) = i
  9. Next
  10. For j = 3 To UBound(arr, 2)
  11.     zf = arr(1, j) & "," & arr(2, j)
  12.     d(zf) = j
  13. Next
  14. For i = 2 To UBound(brr)
  15.     zf = brr(i, 1) & "," & brr(i, 2)
  16.     zf2 = brr(i, 3) & "," & brr(i, 4)
  17.     If d.exists(zf) And d.exists(zf2) Then GoTo line1
  18.     If Not d.exists(zf) Then
  19.         l = Range("iv1").End(xlToLeft).Column + 1 '列
  20.         Cells(1, l) = brr(i, 1)
  21.         Cells(2, l) = brr(i, 2)
  22.     Else
  23.         l = d(zf)
  24.     End If
  25.     If Not d.exists(zf2) Then
  26.         h = Range("a65536").End(xlUp).Row + 1
  27.         Cells(h, 1) = brr(i, 3)
  28.         Cells(h, 2) = brr(i, 4)
  29.     Else
  30.         h = d(zf2)
  31.     End If
  32.     Cells(h, l) = brr(i, 5)
  33.     d(zf) = l
  34.     d(zf2) = h
  35. line1:
  36. Next
  37. End Sub
复制代码
回复

使用道具 举报

发表于 2015-1-1 16:50 | 显示全部楼层    本楼为最佳答案   
………………

复件 (2) 表.zip

12.86 KB, 下载次数: 19

回复

使用道具 举报

 楼主| 发表于 2015-1-1 16:56 | 显示全部楼层
谢谢老师{:18:}
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-23 16:45 , Processed in 0.307562 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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