当您有多个不同长度的列时,查找第一个空白行

我有一个有趣的(希望)为你们都提前感谢!

我有一个创build的报告,将从其他工作簿中获取表格,并将其复制到默认书中的单个报告页面。

重复此操作直到所有工作簿都被扫描。 我使用LastRow和LastPos来维护表单中的位置以免覆盖,但是我发现有些报表不使用我试图findLastRow的列。

所以做一些像Range("A65536").End(xlup).Select我必须检查每个报告,看看最长的列是什么。 它可能是A或B或C或D?

我的问题是,有一个简单的方法检查这些值,并find最大的价值,所以我可以分配给一个variables和使用?

谢谢,

杰夫

我使用这个函数来满足我所有的“最后”需求:

 Function Last(choice As Long, rng As Range) 'Ron de Bruin, 5 May 2008 ' 1 = last row ' 2 = last column ' 3 = last cell Dim lrw As Long Dim lcol As Long Select Case choice Case 1: On Error Resume Next Last = rng.Find(what:="*", _ After:=rng.Cells(1), _ LookAt:=xlPart, _ LookIn:=xlFormulas, _ SearchOrder:=xlByRows, _ SearchDirection:=xlPrevious, _ MatchCase:=False).Row On Error GoTo 0 Case 2: On Error Resume Next Last = rng.Find(what:="*", _ After:=rng.Cells(1), _ LookAt:=xlPart, _ LookIn:=xlFormulas, _ SearchOrder:=xlByColumns, _ SearchDirection:=xlPrevious, _ MatchCase:=False).Column On Error GoTo 0 Case 3: On Error Resume Next lrw = rng.Find(what:="*", _ After:=rng.Cells(1), _ LookAt:=xlPart, _ LookIn:=xlFormulas, _ SearchOrder:=xlByRows, _ SearchDirection:=xlPrevious, _ MatchCase:=False).Row On Error GoTo 0 On Error Resume Next lcol = rng.Find(what:="*", _ After:=rng.Cells(1), _ LookAt:=xlPart, _ LookIn:=xlFormulas, _ SearchOrder:=xlByColumns, _ SearchDirection:=xlPrevious, _ MatchCase:=False).Column On Error GoTo 0 On Error Resume Next Last = rng.Parent.Cells(lrw, lcol).Address(False, False) If Err.Number > 0 Then Last = rng.Cells(1).Address(False, False) Err.Clear End If On Error GoTo 0 End Select End Function 

用法如下:

 dim LR as Long LR = Last(1,Sheet1.Cells)