Excel精英培训网

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

[已解决]用VBA实现数据转置的问题,谢谢了

[复制链接]
发表于 2012-3-31 17:41 | 显示全部楼层 |阅读模式
本帖最后由 maysh2009 于 2012-3-31 17:53 编辑

大侠们帮帮忙啊,需要将左边B-D列的结果转置,将D列不等于C列的值转置,谢谢大家了,谢谢!

上一点数据(附件是全部数据),
BSCCELLDCHNO输出格式
JMM10B1JMJSHN9
43
9
JMJSHN9
9
24
65
JMM10B1JMJSHN9
43
24
JMJYSL8
3
91
11
JMM10B1JMJSHN9
43
43
JMJJYT9
JMM10B1JMJSHN9
43
65
JMM10B1JMJYSL8
14
3
大侠们帮帮忙啊,需要将左边B-D列的结果转置,将D列不等于C列的值转置,谢谢大家了,谢谢!
JMM10B1JMJYSL8
14
14
JMM10B1JMJYSL8
14
91
JMM10B1JMJYSL8
14
11
JMM10B1JMJJYT9
36
3
JMM10B1JMJJYT9
36
36
JMM10B1JMJJYT9
36
66
JMM10B1JMJJYT9
36
16
JMM10B1JDJFLD3
515
515
JMM10B1JDJFLD3
515
538
JMM10B1JDJFLD3
515
544
JMM10B1JDJFLD3
515
560
JMM10B1JDJFLD3
515
564
JMM10B1JDJFLD3
515
597


VBA实现数据转置 .rar (73.81 KB, 下载次数: 38)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2012-3-31 18:13 | 显示全部楼层    本楼为最佳答案   
看下效果:

  1. Sub JustTest()
  2.     Dim D As New Dictionary, Arr, i&, ArrR(1 To 60000, 1 To 200), k&, Ar()
  3.     Arr = Range("b2:d" & Cells(Rows.Count, 1).End(3).Row).Value
  4.     For i = 1 To UBound(Arr)
  5.         If Arr(i, 2) <> Arr(i, 3) Then
  6.             If D.Exists(Arr(i, 1)) Then
  7.                 Ar(D(Arr(i, 1))) = Ar(D(Arr(i, 1))) + 1
  8.                 ArrR(D(Arr(i, 1)), Ar(D(Arr(i, 1)))) = Arr(i, 3)
  9.             Else
  10.                 k = k + 1: D.Add Arr(i, 1), k
  11.                 ReDim Preserve Ar(1 To k): Ar(k) = 2
  12.                 ArrR(k, 1) = Arr(i, 1): ArrR(k, 2) = Arr(i, 3)
  13.             End If
  14.         End If
  15.     Next i
  16.     Application.ScreenUpdating = False
  17.     Range([f2], Cells(Rows.Count, Columns.Count)).ClearContents
  18.     [f2].Resize(k, Application.Max(Ar)) = ArrR
  19.     Application.ScreenUpdating = True
  20.     Set D = Nothing
  21.     MsgBox "处理完毕!"
  22. End Sub
复制代码
VBA实现数据转置 .rar (104.55 KB, 下载次数: 197)
回复

使用道具 举报

 楼主| 发表于 2012-3-31 18:19 | 显示全部楼层
liuguansky 发表于 2012-3-31 18:13
看下效果:

谢谢版主,就是这样的
回复

使用道具 举报

发表于 2012-3-31 18:27 | 显示全部楼层
应该用Application.WorksheetFunction.Transpose吧
回复

使用道具 举报

 楼主| 发表于 2012-3-31 18:37 | 显示全部楼层
ljw7821 发表于 2012-3-31 18:27
应该用Application.WorksheetFunction.Transpose吧

你有更加好的办法?
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-14 22:54 , Processed in 0.395271 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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