将动态范围复制到现有工作簿中

时间:2016-03-09 19:08:10

标签: vba excel-vba excel

完成初学者到VBA并且在工作簿之间复制值时出现问题。

我的目标是从名为SupExp的工作表中复制某些列,并将它们粘贴到名为Expenses的工作表的不同工作簿中。 SupExp所需的列是A:C,H:M和O.我需要的值从每行的第9行开始,上面的任何信息都应该被忽略。每次报告进入时行数都会发生变化,每次工作表SupExp进入时都需要完成此过程。

当粘贴到费用中时,需要从下一个空行开始粘贴信息。因此,例如,如果A100 of Expenses中有信息,则从SupExp的A9复制的值需要从A101的费用开始。

列A:SupExp的C匹配列A:C的费用。 SupExp的O列需要放在费用D栏中。列H:M的SupExp与列E:J一致。

感谢您提供有关如何学习如何操作的任何帮助或建议。

1 个答案:

答案 0 :(得分:0)

看起来你真的开始使用VBA了,我将提供一些概述信息。

要做你想做的事,你应该有一个可以作为宏调用的VBA子程序(来自按钮,键盘快捷键等)。有大量的在线教程可以指导您完成VBA编程的基础知识,所以我只是跳过您的具体问题。

要将单元格或范围的内容复制到其他位置,您只需要一个涉及表示范围和所需属性的对象的属性(=)(取决于您是否要复制值,文本,公式等)。以下示例将Sheet1上的单元格A1-A5的值复制到Sheet2上的单元格B1-B5:

Sub CopyData()
    WorkSheets("Sheet2").Range("B1:B5").Value = WorkSheets("Sheet1").Range("A1:A5").Value
End Sub

在您的问题中,您还需要找到列中的第一个空单元格,以找出您将在何处编写数据。一种简单的方法是探测列中每个单元格的内容,检查它是否为空,直到找到它为止。此示例仅使用活动工作表的A列并将其值设置为字符串,请将其检出:

Sub FirstEmpty()
    Dim aRow As Long
    aRow = 1
    While ActiveSheet.Range("A" & aRow).Value <> ""
        aRow = aRow + 1
    Wend
    ActiveSheet.Range("A" & aRow).Value = "FOUND IT!"
End Sub 

请注意,这将计为具有公式结果为空字符串的单元格为空。如果要避免这种情况,请将.Value语句中的While属性替换为.Formula属性。还有其他(可能更好)的方法来达到相同的结果 - 我只想提出一个选项。

尝试组合这些片段并适应您的问题。实验,google ...如果您仍然无法解决问题,请发布您的代码并再次寻求帮助。如果您已经拥有一些代码并且需要帮助以使其按预期工作,则更容易从社区获得帮助。祝你好运。