首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Excel可将一些单元格从一个工作表复制/粘贴到另一个工作表中,但会发生变化。

Excel可将一些单元格从一个工作表复制/粘贴到另一个工作表中,但会发生变化。
EN

Stack Overflow用户
提问于 2016-04-16 12:34:32
回答 1查看 529关注 0票数 0

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

代码语言:javascript
运行
复制
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列中。就像这样:

图片链接

对不起,我的英语(不是我的母语)你能帮我一下吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-16 13:30:43

尝尝这个

代码语言:javascript
运行
复制
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")中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36664249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档