将指定行上的数据的最后一列复制到下一个空白列

我有一个电子表格,我需要查找有数据的最后一列。 然后我需要复制这个列并将其复制到下一个空白列。

有没有办法做到这一点?

我设法做到这一点与行使用:

lastrowSrc = Sheets("Overview").Range("B" & Rows.Count).End(xlUp).Row 

但是,这将B12放在范围内,使用columns.count只是放在列的数字,而不是字母

要获取工作表中的确切列,请使用此代码。

 Option Explicit Sub Sample() Dim ws As Worksheet Dim LastCol As Long Set ws = Sheets("Sheet1") '~~> This check is required else .FIND will give you error on an empty sheet If Application.WorksheetFunction.CountA(ws.Cells) = 0 Then LastCol = 1 Else LastCol = ws.Cells.Find(What:="*", _ After:=ws.Range("A1"), _ Lookat:=xlPart, _ LookIn:=xlFormulas, _ SearchOrder:=xlByColumns, _ SearchDirection:=xlPrevious, _ MatchCase:=False).Column End If Debug.Print LastCol End Sub 

编辑 :这是礼貌@brettdj。 您也可以使用范围对象来查找最后一列

 Option Explicit Sub Sample() Dim ws As Worksheet Dim LastCol As Long Dim rng As Range Set ws = Sheets("Sheet1") Set rng = ws.Cells.Find(What:="*", _ After:=ws.Range("A1"), _ Lookat:=xlPart, _ LookIn:=xlFormulas, _ SearchOrder:=xlByColumns, _ SearchDirection:=xlPrevious, _ MatchCase:=False) If rng Is Nothing Then LastCol = 1 Else LastCol = rng.Column End If Debug.Print LastCol End Sub 

要获得特定行的最后一列,比如第一行使用这个

  Debug.Print ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column 

ws是你的相关工作表。

同样的行看到这一点 。

我发现一些答案不适用于工作表中有几行比工作表中的其他行短的工作表。 提供的代码只是给出工作表最后一行的最后一列。 相反,我使用循环代码来查找一行中的最后一列,使用Find示例获取工作簿中的最后一行。

 Sub Sample() Dim ws As Worksheet Dim CurrRow, RowLastCol, LastRow, LastCol As Long Set ws = Sheets("Sheet1") '~~> This check is required else .FIND will give you error on an empty sheet If Application.WorksheetFunction.CountA(ws.Cells) = 0 Then LastCol = 1 Else LastCol = 0 LastRow = ws.Cells.Find(What:="*", _ After:=ws.Range("A1"), _ Lookat:=xlPart, _ LookIn:=xlFormulas, _ SearchOrder:=xlByRows, _ SearchDirection:=xlPrevious, _ MatchCase:=False).Row ' Loop through all the rows of the sheet saving off the highest column count For CurrRow = 1 to LastRow RowLastCol = ws.Cells(CurrRow, Columns.Count).End(xlToLeft).Column If RowLastCol > LastCol Then LastCol = RowLastCol End If Next CurrRow End If Debug.Print LastCol End Sub