Excel精英培训网

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

[已解决]求个VBA代码,将数据统计格式化输出

[复制链接]
发表于 2015-4-30 06:42 | 显示全部楼层 |阅读模式
将表格里A列上月25号以后的输出成C2的格式,所有连续的数据取一大一小中间用-连接,最后再加上统计出来的数量。谢谢!
最佳答案
2015-4-30 09:14
  1. Sub Macro1()
  2. Dim arr, i&
  3. 'Range("a1").CurrentRegion.Sort [a2], Header:=xlYes
  4. arr = Range("a2:a" & Range("a65536").End(xlUp).Row + 1)
  5. x = arr(1, 1): p = ""
  6. For i = 2 To UBound(arr) - 1
  7.     If Val(arr(i, 1)) - 1 <> Val(arr(i - 1, 1)) Then
  8.         p = p & " " & x & " - " & arr(i - 1, 1): x = arr(i, 1)
  9.     End If
  10. Next
  11. [c3] = Mid(p, 2)
  12. End Sub
复制代码

数据.rar

7.69 KB, 下载次数: 16

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2015-4-30 09:14 | 显示全部楼层    本楼为最佳答案   
  1. Sub Macro1()
  2. Dim arr, i&
  3. 'Range("a1").CurrentRegion.Sort [a2], Header:=xlYes
  4. arr = Range("a2:a" & Range("a65536").End(xlUp).Row + 1)
  5. x = arr(1, 1): p = ""
  6. For i = 2 To UBound(arr) - 1
  7.     If Val(arr(i, 1)) - 1 <> Val(arr(i - 1, 1)) Then
  8.         p = p & " " & x & " - " & arr(i - 1, 1): x = arr(i, 1)
  9.     End If
  10. Next
  11. [c3] = Mid(p, 2)
  12. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2015-4-30 09:57 | 显示全部楼层
基本可以了,就是在输出后面没有统计数值。麻烦再帮我改改。谢谢!
回复

使用道具 举报

 楼主| 发表于 2015-4-30 11:14 | 显示全部楼层
自己修改了一下输出: [c3] = Mid(p, 1) & " " & "(" & (i - 2) & ")"。这样就满足我的需求了。谢谢!
回复

使用道具 举报

发表于 2015-4-30 11:19 | 显示全部楼层
Sub Macro1()
Dim arr, i&
'Range("a1").CurrentRegion.Sort [a2], Header:=xlYes
arr = Range("a2:a" & Range("a65536").End(xlUp).Row + 1)
x = arr(1, 1): p = ""
For i = 2 To UBound(arr) - 1
    If Val(arr(i, 1)) - 1 <> Val(arr(i - 1, 1)) Then
        p = p & " " & x & " - " & arr(i - 1, 1): x = arr(i, 1)
    End If
Next
[c3] = Mid(p, 2) & " (" & UBound(arr) - 1 & ")"
End Sub
回复

使用道具 举报

 楼主| 发表于 2015-4-30 12:19 | 显示全部楼层
嗯.这样更好.谢谢!!!!
回复

使用道具 举报

 楼主| 发表于 2015-4-30 22:05 | 显示全部楼层
大侠,有点问题哦。代码输出为:
0302571885 - 0302571891 0302571893 - 0302571900 0302574255 - 0302574255 0302574257 - 0302574300 0302574201 - 0302574250 0302574301 - 0302574700 0302573538 - 0302573600 0302572615 - 0302572700 (660)
实际输出应该为:0302571885 - 0302571891 0302571893 - 0302571900 0302574255 - 0302574255 0302574257 - 0302574300 0302574201 - 0302574250 0302574301 - 0302574700 0302573538 - 0302573600 0302572615 - 0302572700 0200336978 - 0200336978 (661)
也就是说每次最后一部分没有输出统计.麻烦再帮看一下.谢谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 18:01 , Processed in 0.436875 second(s), 13 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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