簡體   English   中英

Excel可以將某些單元格從一張紙復制/粘貼到另一張紙上,但要稍加改動

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM