Excel 使用VBA识别特定范围内的第一个emtpy列
我有以下Excel电子表格:Excel 使用VBA识别特定范围内的第一个emtpy列,excel,vba,Excel,Vba,我有以下Excel电子表格: A B C D E F G H 1 2019-03 2019-04 2019-05 2019-06 2019-07 Total 2 3 Revenue 500 600
A B C D E F G H
1 2019-03 2019-04 2019-05 2019-06 2019-07 Total
2
3 Revenue 500 600 1.100
4 COGS -40 -30 -70
5 Gross Profit 460 570 0 0 0 1.030
6
7 OPEX -10 -12 -22
8 Interests -20 -50 -70
9
8 EBT 430 508 0 0 0 938
公式:
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
电子表格显示了公司每月的绩效
每次到达新月份时,我都希望将上个月的值复制到新月份。因此,我需要识别第一个空列。
我尝试从以下位置使用VBA解决方案:
现在的问题是,与问题I相反,有一个新的列G,显示总体性能。
因此,使用上述代码,我将得到列H,但我希望将列D标识为第一个空列
我认为解决方案可能是将VBA查找第一个空列的范围限制为列B:F
如何更改以上代码以实现此?
< P>这将给您最后一个使用的Calk 3行,然后给空白单元格 <代码> + 1 < /代码>。Sheet1.Rows("3").CurrentRegion.Columns.Count
这将给你最后一个使用的Calk在行3,然后<代码> + 1 < /代码>空白单元格
Sheet1.Rows("3").CurrentRegion.Columns.Count
用这个
Dim c As Long
c = Sheet1.Cells(3, Sheet1.Columns.Count).End(xlToLeft).Offset(ColumnOffset:=-1).End(xlToLeft).Column
它使用这个
c = Sheet1.Cells(3, Sheet1.Columns.Count).End(xlToLeft)
查找最后使用的列(在示例G中)。然后向左走一列
.Offset(ColumnOffset:=-1)
并再次查找最后使用的列(从那里开始)
最后,您可以使用c+1
在上次使用的列的右侧获取空列
注意:如果没有空列,则
c
将为1
,因此您可以轻松测试:
If c = 1 Then
MsgBox "No empty columns found", vbCritical
Exit Sub
End If
用这个
Dim c As Long
c = Sheet1.Cells(3, Sheet1.Columns.Count).End(xlToLeft).Offset(ColumnOffset:=-1).End(xlToLeft).Column
它使用这个
c = Sheet1.Cells(3, Sheet1.Columns.Count).End(xlToLeft)
查找最后使用的列(在示例G中)。然后向左走一列
.Offset(ColumnOffset:=-1)
并再次查找最后使用的列(从那里开始)
最后,您可以使用c+1
在上次使用的列的右侧获取空列
注意:如果没有空列,则
c
将为1
,因此您可以轻松测试:
If c = 1 Then
MsgBox "No empty columns found", vbCritical
Exit Sub
End If
嗨,佩赫,谢谢你的代码,但当我试图在我的文件上运行它时,不知怎的,我得到了运行时错误424。@米奇,我用你例子中的数据测试了它。用这些数据测试一下,我发现了问题。现在它运行得很好。嗨,佩赫,谢谢你的代码,但当我试图在我的文件上运行它时,不知怎的,我得到了运行时错误424。@Michi好吧,我用你例子中的数据测试了它。用这些数据测试一下,我发现了问题。现在它运行得很好。