将当前日期粘贴到单元格内命名的预定义范围内

Paste the current date into a pre-defined range named within a cell

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

两个问题(微软Excel 2010):
1) 有没有人有更简单的公式来计算上述范围?
2) 确定范围后,最好使用 VBA 将当前日期简单粘贴到预定义范围内。我想这很简单,因为我们有范围并且我们有日期 Now().

作为一个警告,我有这个 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

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

通过使用 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, then progressive Range.Resize and Range.Offset 命令确定接收当前日期的范围。