Excel精英培训网

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

[已解决]每隔一行删除一行

[复制链接]
发表于 2014-12-11 23:16 | 显示全部楼层 |阅读模式
1、编写代码
2、每隔一行删除一行,结果如工作表2
最佳答案
2014-12-12 02:21
请查收附件: 每隔一行删除一行.rar (24.01 KB, 下载次数: 21)

每隔一行删除一行.rar

18.27 KB, 下载次数: 14

发表于 2014-12-12 02:21 | 显示全部楼层    本楼为最佳答案   
请查收附件: 每隔一行删除一行.rar (24.01 KB, 下载次数: 21)
回复

使用道具 举报

发表于 2014-12-12 04:16 | 显示全部楼层
函数解决
=INDIRECT("'1'!r"&ROW()*2-1&"c"&COLUMN(A1),)&""

=OFFSET('1'!$A$1,ROW()*2-2,COLUMN(A1)-1)&""

评分

参与人数 1 +3 收起 理由
ymq123 + 3

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2014-12-12 09:37 | 显示全部楼层
刘苏 发表于 2014-12-12 02:21
请查收附件:

把要删除的数据放到工作表4中,代码就怎么修改,
谢谢

每隔一行删除一行 修改代码.rar

21.43 KB, 下载次数: 1

回复

使用道具 举报

发表于 2014-12-12 09:47 | 显示全部楼层
Sub 隔行删0() '逐一选中一起删
    r% = UsedRange.Rows.Count
    c% = UsedRange.Columns.Count
    r = Int(r / 2) * 2
    For i% = r To 1 Step -2
        s = s$ & "," & Cells(i, 1).Address(0, 0)
        If Len(s) > 200 Then
           Range(Mid(s, 2)).EntireRow.Delete
           s = ""
        End If
    Next
    If Len(s) Then Range(Mid(s, 2)).EntireRow.Delete
End Sub
Sub 隔行删1() '改自录制宏
    r% = UsedRange.Rows.Count
    c% = UsedRange.Columns.Count
    Cells(1, c + 2) = 1
    Cells(1, c + 2).Resize(2).AutoFill Destination:=Cells(1, c + 2).Resize(r)
    Cells(1, c + 2).Resize(r).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
    Cells(1, c + 2).Resize(r).Clear
End Sub
Sub 隔行删2() '数组
    Dim ar()
    ar = UsedRange.Value
    For r% = 3 To UBound(ar) Step 2
        For c% = 1 To UBound(ar, 2)
            ar((r + 1) / 2, c) = ar(r, c)
        Next
    Next
    UsedRange.Clear
    [a1].Resize((r - 1) / 2, c - 1) = ar
End Sub

评分

参与人数 1 +3 收起 理由
ymq123 + 3

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-7 07:32 , Processed in 0.461276 second(s), 15 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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