我有以下Excel电子表格:
A B C D E F
1 2019-03 2019-04 2019-05 2019-06 2019-07
2
3 Revenue 500 600
4 COGS -40 -30
5 Gross Profit 460 570
6
7 OPEX -10 -12
8 Interests -20 -50
9
8 EBT 430 508
公式:
B5 = SUM(B3:B4)
C5 = SUM(C3:C4)
B10 = B5+B7+B8
C10 = C5+C7+C8
电子表格显示公司每月的表现。
每次到达新月时,我都希望将上个月的值复制到新月。因此,我在VBA
月份开发了以下2019-05
:
Sub test()
Sheet1.Range("C5:C14").Copy
Sheet1.Range("D5:D14").PasteSpecial
End Sub
到目前为止,所有这些都工作正常。
现在,我的问题是我必须每月手动调整VBA的范围,才能复制上个月的值。
因此,我想知道是否有一种方法可以告诉VBA哪个是上一个非空月份,然后将本月的值/公式复制到下个月。
答案 0 :(得分:2)
您可以使用以下代码找到一行的最后使用的列
Sub Last_Used_Column()
'Find the last used column in a Row: row 1 in this example
Dim LastCol As Long
With ActiveSheet
LastCol = .Cells(1, .Columns.Count).End(xlToLeft).Column
End With
MsgBox LastCol
End Sub
您可以在代码中附加以上代码,并在需要的地方使用LastCol变量。
答案 1 :(得分:2)
获得最后一列的很多方法。
Dim rLastCell As Range
Set rLastCell = ws.Cells.Find(What:="*", After:=ws.Cells(1, 1), LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious, MatchCase:=False)
MsgBox ("The last used column is: " & rLastCell.Column)
如果要查找特定行中使用的最后一列,可以使用:
Dim lColumn As Long
lColumn = ws.Cells(1, Columns.Count).End(xlToLeft).Column
使用范围(可靠性较差):
Dim lColumn As Long
lColumn = ws.UsedRange.Columns.Count
答案 2 :(得分:2)
类似的方法
Iterator