Excel精英培训网

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

[已解决]工资条 增加空行

[复制链接]
发表于 2017-6-26 18:00 | 显示全部楼层 |阅读模式
本帖最后由 czl103 于 2017-6-27 16:27 编辑

详见附件,表中VBA代码无法增加空行,烦请大虾帮忙增加一段代码,实现第二个工作表的效果。最好有详细代码解释,不胜感激额!
最佳答案
2017-6-27 09:39
格式自己刷吧,我只做数据。
  1. Sub aaa()
  2. Dim arr, brr, i&, j&, r&
  3. arr = [a1].CurrentRegion
  4. ReDim brr(1 To UBound(arr) * 3, 1 To UBound(arr, 2))
  5. For i = 2 To UBound(arr)
  6.   r = r + 1
  7.   For j = 1 To UBound(arr, 2)
  8.     brr(r, j) = arr(1, j)
  9.     brr(r + 1, j) = arr(i, j)
  10.   Next j
  11.   r = r + 2
  12. Next i
  13. Sheets(2).[a1].Resize(UBound(brr), UBound(brr, 2)) = brr
  14. End Sub
复制代码

工资条.rar

9.64 KB, 下载次数: 16

发表于 2017-6-27 08:29 | 显示全部楼层
回复

使用道具 举报

发表于 2017-6-27 09:10 | 显示全部楼层
  1. Sub aaa()
  2. Dim i&, s$
  3. For i = 3 To [a65536].End(3).Row
  4.   s = s & "," & i & ":" & i
  5. Next i
  6. Range(Mid(s, 2)).Insert
  7. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2017-6-27 09:25 | 显示全部楼层

谢谢大虾 试了下 这个只是增加空行,没有增加标题,可否将这两个条件加起来达到第二个工作表的效果?不胜感激!
回复

使用道具 举报

发表于 2017-6-27 09:39 | 显示全部楼层    本楼为最佳答案   
格式自己刷吧,我只做数据。
  1. Sub aaa()
  2. Dim arr, brr, i&, j&, r&
  3. arr = [a1].CurrentRegion
  4. ReDim brr(1 To UBound(arr) * 3, 1 To UBound(arr, 2))
  5. For i = 2 To UBound(arr)
  6.   r = r + 1
  7.   For j = 1 To UBound(arr, 2)
  8.     brr(r, j) = arr(1, j)
  9.     brr(r + 1, j) = arr(i, j)
  10.   Next j
  11.   r = r + 2
  12. Next i
  13. Sheets(2).[a1].Resize(UBound(brr), UBound(brr, 2)) = brr
  14. End Sub
复制代码
回复

使用道具 举报

发表于 2017-6-27 09:40 | 显示全部楼层
本帖最后由 chart888 于 2017-6-27 09:52 编辑
  1. Private Sub CommandButton2_Click()
  2. Application.ScreenUpdating = False
  3. Dim i&, Mxrow&
  4. Sheets("工资条").[a1].CurrentRegion.Copy Sheets("Date").[a1] '备份数据
  5. With Sheets("Date")
  6.     .Range("A1:G" & Rows.Count).ClearContents '清空数据
  7.     Mxrow = .Cells(.Rows.Count, 1).End(3).Row '判断最下行
  8.     For i = Mxrow To 3 Step -1 '插入空行
  9.         .Rows(i & ":" & i).Insert Shift:=xlDown
  10.     Next
  11.     .Rows("1:1").Copy '复制表头
  12.     .Range("a2:a" & .Cells(.Rows.Count, 1).End(3).Row). _
  13.     SpecialCells(xlCellTypeBlanks).Select '定位空行
  14.     .Paste '粘贴表头
  15.     Mxrow = .Cells(.Rows.Count, 1).End(3).Row - 1
  16.     For i = Mxrow To 3 Step -2 '插入空行
  17.         .Rows(i & ":" & i).Insert Shift:=xlDown
  18.     Next
  19.     .[a1].Select
  20. End With
  21. Application.ScreenUpdating = True
  22. End Sub
复制代码

工资条.zip

18.16 KB, 下载次数: 11

回复

使用道具 举报

发表于 2017-6-27 11:43 | 显示全部楼层
  1. Sub aaa()
  2. Dim arr, brr, i&, j&, r&
  3. arr = [a1].CurrentRegion
  4. ReDim brr(1 To UBound(arr) * 3, 1 To UBound(arr, 2))   '要空行,一條工資單3行,Array 擴充3倍
  5. r = 1
  6. For i = 2 To UBound(arr)
  7.   For j = 1 To UBound(arr, 2)
  8.     brr(r, j) = arr(1, j)  '每個工資單是一樣抬頭項目
  9.     brr(r + 1, j) = arr(i, j)  '每個人的工資項目
  10.   Next j
  11.   r = r + 3   'r=1跳到r=4(剛好空了一行)
  12. Next i
  13. Sheets(2).[a1].Resize(UBound(brr), UBound(brr, 2)) = brr
  14. End Sub
复制代码

剽竊一下大灰狼兄的代碼(因為他用的好艱深耶),自己稍微修改一下,自己比較懂
回复

使用道具 举报

发表于 2017-6-27 11:44 | 显示全部楼层
  1. Sub aaa()
  2. Dim arr, brr, i&, j&, r&
  3. arr = [a1].CurrentRegion
  4. ReDim brr(1 To UBound(arr) * 3, 1 To UBound(arr, 2))   '要空行,一條工資單3行,Array 擴充3倍
  5. r = 1
  6. For i = 2 To UBound(arr)
  7.   For j = 1 To UBound(arr, 2)
  8.     brr(r, j) = arr(1, j)  '每個工資單是一樣抬頭項目
  9.     brr(r + 1, j) = arr(i, j)  '每個人的工資項目
  10.   Next j
  11.   r = r + 3   'r=1跳到r=4(剛好空了一行)
  12. Next i
  13. Sheets(2).[a1].Resize(UBound(brr), UBound(brr, 2)) = brr
  14. End Sub
复制代码

剽竊一下大灰狼兄的代碼(因為他用的好艱深耶),自己稍微修改一下,自己比較懂

评分

参与人数 1 +15 收起 理由
大灰狼1976 + 15 进步很快,很给力

查看全部评分

回复

使用道具 举报

发表于 2017-6-27 12:14 | 显示全部楼层
本帖最后由 苏子龙 于 2017-6-28 08:53 编辑

Private Sub CommandButton2_Click()
Application.ScreenUpdating = False
Dim i&, Mxrow&

With Sheets("Date")
    .Range("A1:G" & Rows.Count).ClearContents '清空数据
    Sheets("工资条").[a1].CurrentRegion.Copy Sheets("Date").[a1] '备份数据,放到这里
    Mxrow = .Cells(.Rows.Count, 1).End(3).Row '判断最下行
    For i = Mxrow To 3 Step -1 '插入空行
        .Rows(i & ":" & i).Insert Shift:=xlDown
    Next
    .Rows("1:1").Copy '复制表头
    .Range("a2:a" & .Cells(.Rows.Count, 1).End(3).Row). _
    SpecialCells(xlCellTypeBlanks).Select '定位空行
    .Paste '粘贴表头
    Mxrow = .Cells(.Rows.Count, 1).End(3).Row - 1
    For i = Mxrow To 3 Step -2 '插入空行
        .Rows(i & ":" & i).Insert Shift:=xlDown
    Next
    .[a1].Select
End With
Application.ScreenUpdating = True
End Sub

测试中文字体,
回复

使用道具 举报

发表于 2017-6-27 12:38 | 显示全部楼层
苏子龙 发表于 2017-6-27 12:14
Private Sub CommandButton2_Click()
Application.ScreenUpdating = False
Dim i&, Mxrow&

老兄,我看你的代码中间也经常会出现乱码,是不是系统也不是简体中文版的呀。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-25 11:58 , Processed in 0.177314 second(s), 15 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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