【问题标题】:Paste the current date into a pre-defined range named within a cell将当前日期粘贴到单元格内命名的预定义范围中
【发布时间】:2015-06-10 22:06:49
【问题描述】:

我有以下公式="AI2:AI"&MATCH(REPT("z",255),ILS_IMPORT!A:A),它会引出一个预定义的列AI2:AI3576。从本质上讲,该公式为我提供了数据位于 A 列中的确切最后一行编号。但是,可能存在这样一种情况,即 A 列中数据集的末尾有空白,但 B 列中的数据去下至B4000。整个前提是获取A列到AI的最后一行数据,这样我就可以把当前日期放在AI2:AI3576或者AI2:AI4000这个范围内,然后再把数据集导入access数据库。

两个问题(Microsoft Excel 2010):
1) 有没有人有一个更简单的公式可以捕获上述范围?
2) 一旦确定了范围,最好使用 VBA 将当前日期简单地粘贴到预定义的范围中。我想这很简单,因为我们有范围并且我们有现在()的日期。

需要注意的是,我有这个 VBA 代码可以告诉用户最后一个单元格的行号,但他们仍然需要执行复制和粘贴功能。我宁愿不让用户执行这些步骤。

Sub LastRowofData()
Dim ws As Worksheet
Dim rng1 As Range
Set ws = Sheets("ILS_IMPORT")
Set rng1 = ws.Columns("A:AI").Find("*", ws.[a1], xlValues, , xlByRows, xlPrevious)
If Not rng1 Is Nothing Then
    MsgBox "The last cell with data is " & rng1.Address(0) & " , therefore copy the current date in AG2 down to the row indicated."
Else
    MsgBox ws.Name & " columns A:AI are empty", vbCritical
End If
End Sub

非常感谢您的想法和创造力。

【问题讨论】:

  • 为了清楚起见,'数据位于 A 列中的确切最后一行编号' 应该读取 'a 所在的确切最后一行文本值 位于 A' 列中。查找列中的最后一个数字是不同的。
  • re:将当前日期置于 AI2:AI3576 或 AI2:AI4000 范围内。您的代码被注释说日期应该在 AG2 中。

标签: excel excel-2010 vba


【解决方案1】:

通过使用With...End With statements 连续重新定义您所指的区域,您可以在不指定范围的情况下完成此操作。

Dim ws As Worksheet

Set ws = Sheets("ILS_IMPORT")

With ws
    With Intersect(.Cells(1, 1).CurrentRegion, .Columns("A:AI"))
        If CBool(Application.CountA(.Offset(1, 0))) Then
            With .Offset(1, 34).Resize(.Rows.Count - 1, 1)
                .Cells = Date
            End With
        Else
            MsgBox .Parent.Name & " columns A:AI are empty", vbCritical
        End If
    End With
End With

首先使用Range.CurrentRegion property 确定数据的主要边界,然后使用渐进式Range.ResizeRange.Offset 命令调整范围以接收当前日期。

【讨论】:

  • 谢谢你,你在上面的 cmets 中是完全正确的。我应该重新阅读以保持一致性。你显然推断得相当令人印象深刻。再次感谢。
猜你喜欢
  • 1970-01-01
  • 2020-08-25
  • 1970-01-01
  • 2019-03-14
  • 1970-01-01
  • 2014-07-10
  • 2022-01-27
  • 2018-09-06
  • 2014-04-08
相关资源
最近更新 更多