Excel精英培训网

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

[已解决]数据相互转换

[复制链接]
发表于 2014-8-28 12:51 | 显示全部楼层
你能不能改个思路呀,不用这个名称,就是做了VBA,你漏了一个命名,VBA就会出错!更何况你说有几百个,那你都要命名,不麻烦吗?
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
回复

使用道具 举报

发表于 2014-8-28 12:58 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2014-8-28 13:50 | 显示全部楼层
本帖最后由 ms967967 于 2014-8-28 17:57 编辑
su45 发表于 2014-8-28 12:58
而且,你的命名也不规则,


重命名是考虑到我的实际应用,我也在纠结这个命名问题(因为有些命名会与单元格名重复),您不用考虑重命名,只用单元格名就可以。
回复

使用道具 举报

发表于 2014-8-28 18:06 | 显示全部楼层
相互转换.zip (19.05 KB, 下载次数: 3)
回复

使用道具 举报

发表于 2014-8-28 18:39 | 显示全部楼层    本楼为最佳答案   
  1. Sub suaa()
  2. Dim arr()
  3. Set Rng = Range("A4").CurrentRegion
  4. For i = 1 To Rng.Columns.Count
  5.     n = 1
  6.     s = Rng(n, i).Address(0, 0)
  7.     sr = Rng(n, i).Value
  8.     Do
  9.         If Rng(n + 1, i) = Rng(n, i) Then
  10.             e = Rng(n + 1, i).Address(0, 0)
  11.             n = n + 1
  12.         Else
  13.             x = x + 1
  14.             ReDim Preserve arr(1 To 2, 1 To x)
  15.             arr(1, x) = s & "-" & e
  16.             arr(2, x) = sr
  17.             s = Rng(n + 1, i).Address(0, 0)
  18.             sr = Rng(n + 1, i).Value
  19.             n = n + 1
  20.         End If
  21.     Loop While n < Rng.Rows.Count + 1
  22. Next
  23. Sheets("汇总").Range("A2").Resize(UBound(arr, 2), UBound(arr)) = Application.Transpose(arr)
  24. End Sub
复制代码
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-10 09:19 , Processed in 0.292928 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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