上次使用的单元格中

我在这里是新的,我正在寻找使用Excel VBA返回工作表中最后使用的单元格。

I'vv 在VBA中查找最后使用的单元格时发现错误 ),但是这并没有回答我遇到的两个问题:

  1. .Cells.Find(...).Row方法在我的代码中占用过多的时间。

  2. 我的“上次使用的单元格”的含义可能很奇怪…单元格可能是空白的。 我想采取最后使用的单元格的列,并与具有最后一次使用的单元格的行进行配对。

解释:假设一张纸是空的,除了A1:C3数据A1:C3D2B4 。 ( 图表1 )

我感兴趣的最后一个单元格是D4因为我希望工作表中包含工作表中所有数据的最后一个单元格。

在这里输入图像说明

现在我已经解释了我在找什么,任何人都可以提供build议

  • 如何使cells.find运行得更快或
  • 另一个可靠的方法来find工作表中的“最后一个单元格”?

谢谢!

你试过这个吗?

 Dim r As Range Set r = Sheet1.UsedRange.SpecialCells(xlCellTypeLastCell) Debug.Print r.Address 

输出你的例子:

$ d $ 4

UsedRange已知不总是匹配实际使用的数据范围。 一些解决方法是使用CurrentRegion

 Dim r As Range With Sheet1.Range("A1").CurrentRegion Set r = Sheet1.Cells(.Rows.count, .Columns.count) End With Debug.Print r.Address 

如果数据不在A1开始,也许这个:

 With Sheet1.Cells.Find("*").CurrentRegion 

使用按行Find来识别此单元格。

  Sub GetLastCellRange() Dim rng1 As Range Dim rng2 As Range Dim rng3 As Range Set rng1 = Cells.Find("*", [a1], xlFormulas, , xlByRows, xlPrevious) Set rng2 = Cells.Find("*", [a1], xlFormulas, , xlByColumns, xlPrevious) If Not rng1 Is Nothing Then Set rng3 = Range([a1], Cells(rng1.Row, rng2.Column)) MsgBox "Range is " & rng3.Address(0, 0) 'if you need to actual select the range (which is rare in VBA) Application.Goto rng3 Else MsgBox "sheet is blank", vbCritical End If End Sub 

虽然答案是非常有效的,我会小心使用SpecialCells,CurrentRegion和所有这些。

尽pipe他们大部分时间都在工作,但是我的经验并不是100%可靠的。

例如,如果数据碰巧有一个空的列或行,则CurrentRegion将不会拾取所有数据。

最好的方法,在我看来是随着您的数据使用标题。 然后,您可以枚举所有标题并查找该列中最后一次使用的行。 然后,您可以确定使用的最大行,然后定义您的数据范围。

顺便说一句,如果您select指定列中的最后一个单元格,然后使用Range.End(xlUp),您可以快速确定最后使用该列没有循环的行。

希望有所帮助。