首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何删除单元格值= 0的行?

如何删除单元格值= 0的行?
EN

Stack Overflow用户
提问于 2022-05-02 19:24:16
回答 1查看 205关注 0票数 0

我想加快我目前的一些任务。

我认为最合适的步骤

复制D9

  • delete/clear单元格E9:H24 (如果这是在复制和粘贴I9值之前完成的,则范围I9中的值将是范围D9中单元格的incorrect)

  • delete工作表行:D列中的最后一个单元格,值=0

  • ,值在范围A9:lastcellwithdata

  • Go中的最后4行插入到以前的工作表,复制范围A的前4列:E列中的值(几乎总是最后4行-5行数据)

  • 返回当前工作表,将A列中最后一个单元格下的值粘贴到数据(粘贴插入行的位置,也许步骤6-8可以通过复制和插入而不是首先插入空白行来完成)(这必须在步骤4之后完成,因为在步骤4中删除的单元格上将粘贴单元格

  • ,仅粘贴在当前选项卡中的范围,C列值更改为当前值+1

  • 以前的工作表,复制范围J:M表示E列

  • 当前工作表中值的单元格,将从步骤10复制的普通单元格粘贴到最后一个单元格下的J列,并在数据范围内(总行以上)

代码语言:javascript
复制
Public Sub CopySheetAndRename()
    Application.OnKey "^+k", "CopySheetAndRename"
    Dim newName As String
 
    On Error Resume Next
    newName = InputBox("Enter the name for the copied worksheet")
 
    If newName <> "" Then
        ActiveSheet.Copy Before:=Sheets(1)
        On Error Resume Next
        ActiveSheet.Name = newName
    End If
   
    Dim lr As Long
    lr = Cells(Rows.Count, 12).End(3).Row

    Range("I9:I" & lr).Copy
    
    ActiveSheet.Range("D9").PasteSpecial _
    Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False

    Range("E9:H24").Clear

    Rows("25:29").Insert Shift:=xlDown, _
      CopyOrigin:=xlFormatFromLeftOrAbove

End Sub

我已经通过步骤1-4和步骤6。

假设P2是最新的选项卡,而P3是将要创建的选项卡。我在运行宏后拍摄了这个截图,在上传之前我应该删除这个选项卡。

根据这个例子,所有的工作簿(150多个)在第1-7行有相同的标题,在第8行有一个空白行,而数据从第9行开始。所有的工作簿都有从A9:M开始的数据。

我希望开始将数据从第9行拖到最后一列,在第一个空白行之前使用数据(在总计行的上方)。

对于值= 0的所有单元格,如何从D9:D中删除工作表行?这不能删除空单元格的行,只能删除单元格= 0。

EN

回答 1

Stack Overflow用户

发布于 2022-05-03 14:09:24

通过D列删除0值(而不是空值)的简单循环示例。主行是

If ws.Cells(c, 4).Value = 0 And ws.Cells(c, 4).Value <> "" Then

注意,从底部到顶部删除行循环总是更好的:

代码语言:javascript
复制
Option Explicit
Sub Macro4()

Dim wb As Workbook: Set wb = ThisWorkbook 
Dim ws As Worksheet: Set ws = wb.Sheets("P3")
Dim c As Long

For c = ws.Cells(ws.Rows.Count, "D").End(xlUp).row -5 To 2 Step -1 ' note -5 is to offset last row number due to Total/Diff/Balance rows. Or simply use another "clean column" to get the last row number
    If ws.Cells(c, 4).Value = 0 And ws.Cells(c, 4).Value <> "" Then
    Rows(c).EntireRow.Delete
    End If
Next c

End Sub
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72091424

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档