如果单元格为0,则将范围复制到主表格并从主表格中删除范围

有10个表格(Sheet1 … Sheet10),表格在相同的范围内(C25:G34&C42:N51)。

工作表源表

如果“总重量”列的值大于0,则必须复制行。复制的行将转到两个汇总表:

Westrock表 – > Westrock摘要表

到DNP表 – > DNP汇总表

摘要表:Westrock Westrock总结

汇总表:DNP 在这里输入图像说明

我在Mac上,所以PowerQuery不是一个选项。 我是VBA新手 这是我迄今为止:

Sub ToDNP() Application.ScreenUpdating = False Worksheets("Jupiter").Activate Range("C42:N51").Select Selection.Copy Worksheets("To DNP").Activate Range("C11").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False 'Application.CutCopyMode = False Worksheets("Windsor").Activate Range("C42:N51").Select Selection.Copy Worksheets("To DNP").Activate Range("C21").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Worksheets("Orlando").Activate Range("C42:N51").Select Selection.Copy Worksheets("To DNP").Activate Range("C31").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Worksheets("Woodland").Activate Range("C42:N51").Select Selection.Copy Worksheets("To DNP").Activate Range("C41").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Dim rRow As Integer, rCol As Integer Dim cRow As Integer, cCol As Integer rCol = 3 rRow = 11 cCol = 14 cRow = 11 For cRow = 11 To 50 If Cells(cCol, cRow).Value = "0" Then Range(Cells(rCol, rRow), Cells(cCol, cRow)).ClearContents End If rRow = rRow + 1 Next cRow End Sub 

这给我一个错误:

错误:无法更改合并的单元格的一部分

你得到的错误,因为你有行和列值交换。 行参数先来, 然后是列参数。

你的代码应该如下所示:

 If Cells(cRow, cCol).Value = "0" Then Range(Cells(rRow, rCol), Cells(cRow, cCol)).ClearContents End If 

您正在尝试清除“到DNP”工作表中第3到第14行的第11列,这显然包含合并的单元格。

对于其他任何人来说, 如果一个单元格包含特定值,则这里是简单的代码来清除连续的特定范围。

 For Each cell In Range("C11:N50") If cell.Value2 = "0" Then Set cRng = Range("C" & cell.Row & ":" & "O" & cell.Row) ' Or Set clearRng = Range("C" & cell.Row & ":O" & cell.Row) cRng.Clear End If Next