我有以下Excel电子表格:
A B C D E G H I J K
1 2019-03 2019-04 2019-05 2019-06 Total Q1 Q2
2
3 Revenue 500 600 1.100 300 700
4 COGS -40 -30 -70 -250 -120
5 Gross Profit 460 570 0 0 1.030 50 580
6
7 OPEX -10 -12 -22 -25 -80
8 Interests -20 -50 -70 -30 -95
9
8 EBT 430 508 0 0 938 -5 405
公式:
Row 5 = SUMS of Row 3 and Row 4
Row 8 = SUMS of Row 5, Row 7 and Row 8
Column G = SUMS of Columns B to H
电子表格显示公司每月的表现。
每次到达新月时,我都希望将上个月的值复制到新月。因此,我需要确定第一个空列。 到目前为止,我使用问题here的解决方案:
Sub test()
Dim c As Long
c = Sheet1.Cells(3, Sheet1.Columns.Count).End(xlToLeft).Offset(ColumnOffset:=-3).End(xlToLeft).Column
MsgBox c
MsgBox c
End Sub
到目前为止,所有这些都工作正常。
但是,使用上述解决方案时,我总是必须调整ColumnOffset:=-3
,以防在Column J
之后添加新的列。
因此,我希望有一个固定范围,其中VBA标识了第一个空列。在上述情况下,我想将范围A3:G3
作为VBA的搜索范围,并在此范围内应标识出第一个空列。
要实现此目的,我需要在代码中进行哪些更改?
答案 0 :(得分:0)
使用命名范围。为列G添加一个名称,例如。将其命名为TotalColumn
。
然后,您可以像Range("TotalColumn")
这样使用总计列,无论列号是多少还是Range("TotalColumn")
都将始终引用您的总计列。
使用它从那里向左走。
c = Sheet1.Cells(3, Range("TotalColumn").Column).End(xlToLeft).Column