【问题标题】:Pasting Data in Next Blank From "A4"将数据粘贴到“A4”的下一个空白中
【发布时间】:2020-12-07 16:46:52
【问题描述】:

我有 4 个标签..

第 1 年、第 2 年、第 3 年,总支出。

第 1 年粘贴在“总支出”标签中,如下所示:

https://i.stack.imgur.com/SegGE.

现在,我需要将第 2 年和第 3 年的数据从第 4 行向下复制并粘贴到 Total Spend 的下一行空白中。

这是我用来标记第 2 年和第 3 年范围并尝试在 A 列中找到第一个空白单元格以粘贴数据的代码。

我不明白为什么这不起作用。它不会在任何位置粘贴任何内容。

    Dim Year2 As Range
Dim Year3 As Range
Dim Location As Range

Set Year2 = Sheets("Year 2 Data").Range("4:4").End(xlDown)
Set Year3 = Sheets("Year 3 Data").Range("4:4").End(xlDown)
Set Location = Sheets("Total Spend").Cells(Rows.Count, 1).End(xlUp)
If Len(Location.Value) > 0 Then Set Location = Location.Offset(1)


 ' This paste is manual so Row 2 stays blank - this is needed in formatting later on. 

    Sheets("Year 1 Data").Select
    Cells.Select
    Selection.Copy
    Sheets("Total Spend").Select
    Cells.Select
    ActiveSheet.Paste

Year2.Copy Location

Year3.Copy Location

【问题讨论】:

  • 您已将Year2Year3 设置为整个列。没有地方可以下去。您打算从Range("A4") 开始吗?
  • 更正:从第 2 年和第 3 年开始:A3,向下和横向。然后按顺序粘贴到 Total Spend 表的最后一行数据,忽略第 2 行的空白行。

标签: excel vba copy-paste copying pasting


【解决方案1】:

使用这个

'    Range(Sheets("Year 2 Data").Range("4:4"), Sheets("Year 2 Data").Range("4:4").End(xlDown))

而不是

Sheets("Year 2 Data").Range("4:4").End(xlDown)

同样的事情也适用于 Sheets("Year 3 Data")

【讨论】:

  • 谢谢,我会尽快尝试。
  • 这似乎不起作用 - 它似乎覆盖了以前的数据,并且在空行 2 之后没有找到最后一个空行。 第 1 年 - 第 1 行,第 2 行中有数据为空白,第 3 行的数据下降到第 5000 行左右。 第 2 年 - 我需要在第 1 年数据结束后将病房第 3 行的数据粘贴到下一个可用行 第 3 年 - 与上述相同,但在第 2 年数据结束时。我希望这能澄清一点。
【解决方案2】:

看过 cmets 之后,会是这样的答案吗? (因为我已经下班了,所以我还不能测试它。)

Dim Year2 As Range
Dim Year3 As Range
Dim Location As Range

Set Year2 = Range(Sheets("Year 2 Data").Range("4:4"), Sheets("Year 2 Data").Range("4:4").End(xlDown))

Set Year3 = Range(Sheets("Year 3 Data").Range("4:4"), Sheets("Year 3 Data").Range("4:4").End(xlDown))

Set Location = Sheets("Total Spend").Cells(Rows.Count, 3).End(xlUp)

‘我已将上述内容更改为从第 3 行开始,跳过空白的第 2 行,因此理论上它会使用第 3 行以下的 IF 进行检查。

If Len(Location.Value) > 0 Then Set Location = Location.Offset(1)

' 此粘贴是手动的,因此第 2 行保持空白 - 这是稍后格式化时需要的。

Sheets("Year 1 Data").Select
Cells.Select
Selection.Copy
Sheets("Total Spend").Select
Cells.Select
ActiveSheet.Paste

Year2.Copy Location

Year3.Copy Location

【讨论】:

    【解决方案3】:

    好的,按照您的逻辑,我认为下面的代码会有所帮助。它将从工作表中选择数据,并使用输出工作表的最后一行将数据粘贴到输出工作表中。

    n A 粘贴数据。

    我不明白为什么这不起作用。它不会在任何位置粘贴任何内容。

    Dim Year2 As Range
    

    将 Year3 调暗为范围 昏暗的位置作为范围

    设置 Year2 = Range(Sheets("第 2 年数据").Range("4:4"), Sheets("第 2 年数据").Range("4:4").End(xlDown))

    设置 Year3 = Range(Sheets("第 3 年数据").Range("4:4"), Sheets("第 3 年数据").Range("4:4").End(xlDown)) 设置 Location = Sheets("Total Spend").Cells(Rows.Count+88, 1).End(xlUp).offset(1, 0)

    如果 Len(Location.Value) > 0 则设置 Location = Location.Offset(1)

    ' 此粘贴是手动的,因此第 2 行保持空白 - 这是稍后格式化时需要的。

    Sheets("Year 1 Data").Select
    Cells.Select
    Selection.Copy
    Sheets("Total Spend").Select
    Cells.Select
    ActiveSheet.Paste
    

    Sheets("总支出").Cells(Rows.Count+88, 1).End(xlUp).offset(1, 0).select

    Year2.复制位置

    Sheets("总支出").Cells(Rows.Count+88, 1).End(xlUp).offset(1, 0).select

    Year3.复制位置

    【讨论】:

    • 这给出了定义在以下位置的错误 1004 对象:Set Location = Sheets("Total Spend").Cells(Rows.Count+88, 1).End(xlUp).offset(1, 0 )
    • 从 rows.count 中移除“+88”
    【解决方案4】:

    哦!使用下面的代码来解决该错误。我已从 rows.count 中删除“+88”以解决该错误。

    Set Location = Sheets("Total Spend").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-06
      • 1970-01-01
      • 1970-01-01
      • 2015-02-03
      相关资源
      最近更新 更多