【发布时间】:2020-05-01 00:01:40
【问题描述】:
好的,又回来了!
我试图通过这个论坛和其他论坛搜索以找到类似的解决方案,但我发现的所有内容要么完全不同,以至于我无法弄清楚我的问题的应用程序,要么超级复杂,我无法翻译!所以我希望有人可以在这里帮助我。提前致谢!!
这里是场景。我有一个需要向其中添加数据的数据库。报价单编号、采购订单编号、子系统部件名称、供应商、材料、价格、数量。等等。
长话短说,并没有深入了解我为什么这样做的背景(主要是因为我认为我会搞砸解释并且比有用更令人困惑!)......我基本上每个旁边都有 3 个表其他。
表 1 是 H 列和 I 列。它们都有一个类似于 =if(isblank(J4),"",$I$1) 的公式,其中 I1 是采购订单号(对于这组条目,它将保持不变.) 表 2 是列 J 到 M 中的数据透视表。使用切片器,用户可以选择此 PO 所需的子系统。数据透视表将重新填充另一个表中包含的适当部件号和唯一信息。 表 3 是 N 到 R 列中的常规表格。这些列有一些像上面那样从单个单元格中提取的公式(用于输入日期),一些基于 J 列中的信息通过 VLOOKUP 从另一个表中提取信息,还有一些信息是手动输入的。
这可能是太多的信息,但最好拥有它而不需要它吧?
所以这是目标。使用 VBA 宏,我想复制数据并将其粘贴到数据库底部的另一张纸上。诀窍是,因为上面的整个设置都是基于来自数据透视表的信息运行的,所以列表的长度会不断变化。它永远不会长于某个长度(仍待定),但几乎总是会更短。我可以复制整个内容,并将其粘贴到最后一个条目下方的另一张表中……但它粘贴在数据库表中最后一个空单元格的下方。我的意思是:
例如,最长的表格可能是范围 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
【问题讨论】:
-
仅供参考,“文字墙”问题通常在这里表现不佳。这里的大多数人都对查看您的 代码 以及您遇到的确切问题的描述感兴趣。如果您只发布描述,而不发布代码,我们只能猜测您需要进行哪些更改。
-
就是这样,蒂姆,我没有起点,也不知道从哪里开始编写代码。我会发布我所拥有的......如果我有任何东西。
-
除此之外...“文本墙”的原因是,在我尝试的研究中,我发现了一个案例,其中公式包含在“空白”单元格中,并且与结果。不想过度解释,只是想提供尽可能多的信息。
-
如果主要问题是查找数据的最后一行,那么可能从这里开始:thespreadsheetguru.com/blog/2014/7/7/… 包括相关细节很好,但也包括你尝试过的一小部分代码(甚至如果它不起作用)通常会帮助人们给你建议。如果您想了解意图,阅读代码通常会更容易和更快,并且查看代码的结构可以帮助我们提出与您现有代码相匹配的答案。
-
不,实际上我已经对那部分进行了排序......我想。我需要的是如何复制非空白单元格,并排除任何具有公式但单元格中没有值的单元格。这样我就可以只将那些粘贴到下一张纸上。至于什么代码,我看过(并随后删除)了几个,但最近的是: