【问题标题】:How can I copy most recent cells value added in a range from a different sheet to the active one?如何将最近添加的单元格值从不同的工作表复制到活动的工作表?
【发布时间】:2020-02-15 21:46:16
【问题描述】:

我正在尝试在 sheet1 中编写一个代码,该代码将根据 sheet2 中的日期添加最近的日期。

   Sheet1                              Sheet2

    A                                    A

50  01/02/2019                 76     01/02/2019

51  01/03/2019                 77     01/03/2019 

52  01/04/2019                 78     01/04/2019 

                               79     01/05/2019 

                               80     01/06/2019 

我想过复制整列并粘贴它,但这样做不专业,数据可能有数千行。

相反,我如何检查 sheet2 (ColumnA) 中不在 sheet1 中的最近日期并复制它们?

这是我目前的代码

Sub Addrecentmonth()

Dim M1 As Worksheet
Dim FinalRowM1 As Long
Dim FinalRowPM As Long
Dim ProbabilityModel As Worksheet

Set M1 = ActiveWorkbook.Worksheets("M1")
Set PM = ActiveWorkbook.Worksheets("ProbabilityModel")

FinalRowM1 = M1.Range("A" & M1.Rows.Count).End(xlUp).Row
FinalRowPM = PM.Range("A" & M1.Rows.Count).End(xlUp).Row

If PM.Range("A" & FinalRowPM).Value <> M1.Range("A" & FinalRowM1).Value Then

    M1.Range("A" & FinalRowM1).Select

    PM.Cells(Rows.Count, "A").End(xlUp).Offset(1). _
      PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, _
      SkipBlanks:=False, Transpose:=True

    Application.CutCopyMode = False

End If

End Sub

我想出了如何在最后使用的单元格之后粘贴目标,但我找不到从另一张表中复制最近日期的方法。

【问题讨论】:

  • 所以基本上有两列:升序数字和每行日期?您只是想避免从表 2 中转移日期已经存在于表 1 中的行,而不考虑第一列中的数字?还是组合必须是唯一的?
  • 示例中显示的数字 (76,77,78...) 是行号引用,而不是单元格值或列!我只想复制包含日期的单元格(A79、A80.... 到最后使用的单元格)
  • 好吧,我先看看你的代码。顺便说一句,我刚刚发现,你忘了声明“PM”变量。我想,它应该像“M1”。
  • 哦,是的,谢谢您的通知。我试图弄清楚,如果我们像这样应用 smtg:从 A 列中使用的最后一个单元格复制到 (X),X 将使用 LOOKUP 声明为范围或字符串,其中查找公式将转到表 1 和找到 A 列中使用的最后一个单元格,然后按其值 (01/04/2019) 对其进行寻址。这行得通吗?
  • 嗯...在两张表中,数据都按照您的示例中的升序填充?日期越新越接近底部?如果是这样,您可以检查 sheet1 中的最新条目(在您的示例中为“01/04/2019”),然后转到 sheet2 并选择单元格,如果日期大于“01/04/2019”,然后将此单元格中的所有内容复制到底部并将其粘贴到 sheet1 中。

标签: excel vba copy-paste


【解决方案1】:

如果日期像您的示例中那样从最旧到最新排序,您可以选择 Sheet2 的最后一个单元格,其中日期小于 Sheet1 最后一个单元格。

这段代码可以做到:

Dim currentDate As Long
Dim Scanner As Range

currentDate = Sheet1.Range("A" & Sheet1.Rows.Count).End(xlUp).Value
'currentDate contains the value of Sheet1 last cell'
Set Scanner = Sheet2.Range("A" & Sheet2.Rows.Count).End(xlUp)
'Here, Scanner is the last cell of Sheet2'

While Scanner.Value > currentDate
    'Scanner goes upwards until it finds the current date'
    Set Scanner = Scanner.Offset(-1, 0)
Wend

然后您可以将扫描仪下方的所有单元格复制到 Sheet1 的末尾。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-20
    • 2021-08-29
    • 2022-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多