K20*_*0GH 5 excel vba excel-vba
我有一个电子表格,我需要查找包含数据的最后一列.然后我需要复制此列并将其复制到下一个空白列.
有没有办法做到这一点?
我已设法使用以下行来执行以下操作:
lastrowSrc = Sheets("Overview").Range("B" & Rows.Count).End(xlUp).Row
Run Code Online (Sandbox Code Playgroud)
但是这会将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
Run Code Online (Sandbox Code Playgroud)
编辑:这是礼貌的@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
Run Code Online (Sandbox Code Playgroud)
要获取特定行的最后一列,请说第1行使用此行
Debug.Print ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column
Run Code Online (Sandbox Code Playgroud)
哪些是您的相关工作表.
对于Row也是如此.