Excel复制/粘贴一个单元格到另一个单元格,但扭曲

我已经制作了一张我们用来打印文档的发票工作簿。 我试图根据发票单中input的内容列出销售产品,客户名称等等。 销售物品和客户名称列表位于另一张纸上。 在每次打印发票后,都会保存工作簿,以便可以清除发票清单并插入其他数据。 基本上,要将发票中的数据复制到列表中,我使用下面的一段代码:

Sheets("factura").Range("m14:m36").Copy With Sheets("Centralizator").Range("C" & Rows.Count).End(xlUp).Offset(1) .PasteSpecial Paste:=xlPasteValues End With Sheets("factura").Range("L2").Copy With Sheets("Centralizator").Range("B" & Rows.Count).End(xlUp).Offset(1) .PasteSpecial Paste:=xlPasteValues End With 

C列存储正在销售的产品,B列则是购买它们的客户的名称。 上面的代码在客户端有一个相应的产品时工作得很好。 但是,如果一个客户有两个或两个以上的产品,我下次运行代码时,下一个客户的名字就出现在前一个客户的名字下面,与第一个客户购买的产品在同一行。 这是一个问题的图片。

图片链接 在这里输入图像说明

我想修改代码,以便当我从发票(factura)的客户端名称复制到列B,它将首先findC列上的第一个清除行,并使用该行的编号,粘贴客户端名称在列b在那个数字上。 像这样的东西:

图片链接 在这里输入图像说明 对不起,我的英语不好(不是我的母语)你能帮我吗?

尝试这个

 Option Explicit Sub UpdateCentralizator() Dim lastRow As Long lastRow = GetLastRow(Sheets("Centralizator"), 3) + 1 Sheets("factura").Range("m14:m36").SpecialCells(xlCellTypeConstants).Copy Sheets("Centralizator").cells(lastRow, 3).PasteSpecial Paste:=xlPasteValues Sheets("factura").Range("L2").Copy Sheets("Centralizator").cells(lastRow, 1).PasteSpecial Paste:=xlPasteValues End Sub Function GetLastRow(sht As Worksheet, col As Long) as long With sht GetLastRow = .cells(.Rows.Count, col).End(xlUp).row If IsEmpty(.cells(GetLastRow, col)) Then GetLastRow = 0 End With End Function 

.SpecialCells(xlCellTypeConstants)方法select仅填充常量(数字或文本)的单元格,以便Sheets("factura").Range("m14:m36")任何空单元格都不会粘贴到Sheets("Centralizator")