我有以下公式,="AI2:AI"&MATCH(REPT("z",255),ILS_IMPORT!A:A),它引出了一个预定义的列AI2:AI3576。从本质上讲,这个公式为我提供了数据驻留在A列中的最后一个行号。然而,可能有一种情况,即A列中的数据集末尾有空白,而B列中的数据则下降到B4000。整个前提是从A列获得最后一行数据到AI,这样在将数据集导入access数据库之前,我可以将当前日期放在范围AI2:AI3576或AI2:AI4000中。
两个问题(Microsoft 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我们非常感谢你的想法和创造力。
发布于 2015-06-10 23:16:18
通过连续地重新定义您所指的使用带语句的With...End的区域,您可以在不指定范围的情况下完成这一任务。
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性质确定,然后逐步的Range.Resize和Range.Offset命令形成接收当前日期的范围。
https://stackoverflow.com/questions/30768145
复制相似问题