复制范围不包括空白单元格-粘贴到另一张纸上

时间:2020-05-01 00:01:40

标签: vba copy pivot

好,再回来!

我试图在这个论坛和其他论坛中进行搜索,以找到类似的解决方案,但是我发现的所有内容或者只是非常不同,以至于我无法弄清问题所在的应用程序,或者非常复杂,因此无法翻译!所以我希望有人可以在这里为我提供帮助。提前致谢!!

这是场景。我有一个需要向其添加数据的数据库。报价单,采购订单号,子系统部件名称,供应商,物料,价格,数量。等等

长话短说,并且没有涉及我为什么要这样做的背景(主要是因为我认为我会弄乱解释,而且比帮助更令人困惑!)……我基本上每个表旁边都有3个表其他。

表1是H列和I列。它们的公式都类似于= if(isblank(J4),“”,$ I $ 1)其中I1是PO编号(这组条目将保持不变) ) 表2是J到M列中的数据透视表。使用切片器,用户可以选择此PO所需的子系统。数据透视表将重新填充适当的零件号和另一个表中包含的唯一信息。 表3是N到R列中的常规表。这些列具有类似于上面的公式,这些公式从单个单元格中提取(用于输入日期),基于V列中的列J中的信息从另一个表中提取某些信息,还有一些信息是手动输入的。

那可能是太多的信息,但是最好拥有而不需要它,是吗?

所以这是目标。使用VBA宏,我想复制数据并将其粘贴到数据库底部的另一张纸上。诀窍是,因为上面的整个设置都是基于来自数据透视表的信息运行的,所以列表的长度会不断变化。它永远不会超过特定长度(仍为TBD),但几乎总是会更短。我可以复制整个内容,并将其粘贴到最后一个条目下方的另一张纸上...但是它将粘贴到数据库工作表中最后一个空单元格的下方。我的意思是:

例如,表格最长的范围可能是H4:R38。因此,我将其复制,并将其粘贴到从单元格A2开始的Sheet2中。经过进一步检查,我们发现只有实际数据在H4:R11范围内。但是,当我们将其粘贴到Sheet2时,它将粘贴整个范围H4:R38。当我再次运行宏时,没有将新的数据集粘贴到行A10(数据应在该行结束的行之后),而是粘贴到第36行之类,因为它粘贴在所有空白单元格下面。

我不知道该做什么或从哪里开始。任何帮助将不胜感激!非常感谢!

我尝试过的代码:

Dim fabricationrange As Range
Dim destination As Range
Dim LastBBUFabDatabaseRow As Long

Worksheets("Sub Systems").Range("h4:r38").Copy

With ThisWorkbook.Sheets("BBU Fab. Database")

Worksheets("bbu fab. database").Range("z" & Rows.Count).End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValues


Range("b" & Rows.Count).End(xlUp).Offset(1).PasteSpecial xlPasteValuesAndNumberFormats


    lastbbufabdatabserow = .Cells(.Rows.Count, 2).End(xlUp).Row = 1
    Set destination = .Cells(LastBBUFabDatabaseRow, 2)

   destination.Value = PasteSpecial.Values

End With

1 个答案:

答案 0 :(得分:0)

未经测试,但是这是一种蛮力的方法来查找第一个空行:

set rngDest = ThisWorkbook.Sheets("BBU Fab. Database").rows(2) '<< start here
do while application.counta(rngDest) > 0
    set rngDest = rngDest.offset(1, 0) 'next row
loop
Worksheets("Sub Systems").Range("H4:R38").Copy
rngDest.cells(1).PasteSpecial xlPasteValuesAndNumberFormats '<< paste to col A
相关问题