我想加快我目前的一些任务。
我认为最合适的步骤
复制D9
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。
发布于 2022-05-03 14:09:24
通过D列删除0值(而不是空值)的简单循环示例。主行是
If ws.Cells(c, 4).Value = 0 And ws.Cells(c, 4).Value <> "" Then
注意,从底部到顶部删除行循环总是更好的:
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 Subhttps://stackoverflow.com/questions/72091424
复制相似问题