[英]Excel to copy / paste some cells from one sheet to another but with a twist
我制作了一個發票工作簿,用於打印文件。 我正在嘗試根據發票表中鍵入的內容列出售出的產品,客戶名稱等。 關於已售商品和客戶名稱的列表位於另一張紙上。 每次打印發票后,都會保存工作簿,以便可以清除發票表並插入其他數據。 基本上,要將數據從發票復制到列表,我使用以下代碼:
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列存儲購買產品的客戶的名稱。 當客戶端具有一個核心響應產品時,上面的代碼可以很好地工作。 但是,如果一個客戶有2個或更多產品,則下一次我運行代碼時,下一個客戶的名稱將顯示在前一個客戶的下方,與第一個客戶購買的產品位於同一行。 這是有問題的照片。
我想修改代碼,以便當我將客戶名稱從發票(factura)復制到B列時,它將首先在C列上找到第一個空白行,並使用該行的編號,將客戶名稱粘貼到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)
方法選擇僅填充常量(數字或文本)的單元格,以便Sheets("factura").Range("m14:m36")
任何空白單元格都不會粘貼到Sheets("Centralizator")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.