Excel精英培训网

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

[已解决]数据重新组合

[复制链接]
发表于 2012-12-19 21:34 | 显示全部楼层 |阅读模式
5学分
各位老师好,谁能帮我解决我这个问题
最佳答案
2012-12-19 22:42
  1. Sub 折分数据()
  2.     Dim arr
  3.     Dim i&, j&, k&, l&
  4.     arr = Range("a1").CurrentRegion
  5.     If UBound(arr) < 4 Then Exit Sub
  6.     Dim data()
  7.     ReDim data(1 To 5, 1 To 1)
  8.     l = UBound(arr, 2)
  9.     For i = 4 To UBound(arr)
  10.         For j = 8 To l - 1
  11.             If Len(arr(i, j)) > 0 Then
  12.                 k = k + 1
  13.                 ReDim Preserve data(1 To 5, 1 To k)
  14.                 data(1, k) = arr(i, 1)
  15.                 data(2, k) = arr(i, 2)
  16.                 data(3, k) = arr(3, j)
  17.                 data(4, k) = arr(i, j)
  18.                 data(5, k) = arr(i, l)
  19.             End If
  20.         Next
  21.     Next
  22.     If k > 0 Then
  23.         With Worksheets("sheet2")
  24.             .Range("a1").CurrentRegion.ClearContents
  25.             .Range("a1").Resize(, 5) = Array("标题", "发生日期", "费用分类", "发生费用", "备注信息")
  26.             .Range("a2").Resize(k, 5) = WorksheetFunction.Transpose(data)
  27.             With .Range("a1").CurrentRegion.Borders
  28.                 .LineStyle = xlContinuous
  29.             End With
  30.         End With
  31.     End If
  32. End Sub
复制代码

工程明细表.rar

3.78 KB, 下载次数: 18

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2012-12-19 22:23 | 显示全部楼层
回复

使用道具 举报

发表于 2012-12-19 22:42 | 显示全部楼层    本楼为最佳答案   
  1. Sub 折分数据()
  2.     Dim arr
  3.     Dim i&, j&, k&, l&
  4.     arr = Range("a1").CurrentRegion
  5.     If UBound(arr) < 4 Then Exit Sub
  6.     Dim data()
  7.     ReDim data(1 To 5, 1 To 1)
  8.     l = UBound(arr, 2)
  9.     For i = 4 To UBound(arr)
  10.         For j = 8 To l - 1
  11.             If Len(arr(i, j)) > 0 Then
  12.                 k = k + 1
  13.                 ReDim Preserve data(1 To 5, 1 To k)
  14.                 data(1, k) = arr(i, 1)
  15.                 data(2, k) = arr(i, 2)
  16.                 data(3, k) = arr(3, j)
  17.                 data(4, k) = arr(i, j)
  18.                 data(5, k) = arr(i, l)
  19.             End If
  20.         Next
  21.     Next
  22.     If k > 0 Then
  23.         With Worksheets("sheet2")
  24.             .Range("a1").CurrentRegion.ClearContents
  25.             .Range("a1").Resize(, 5) = Array("标题", "发生日期", "费用分类", "发生费用", "备注信息")
  26.             .Range("a2").Resize(k, 5) = WorksheetFunction.Transpose(data)
  27.             With .Range("a1").CurrentRegion.Borders
  28.                 .LineStyle = xlContinuous
  29.             End With
  30.         End With
  31.     End If
  32. End Sub
复制代码

评分

参与人数 1 +1 金币 +5 收起 理由
suye1010 + 1 + 5 很给力!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2012-12-20 09:13 | 显示全部楼层
再一次感谢老师的精彩回应,很给力,谢谢
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 07:38 , Processed in 0.506636 second(s), 13 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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