使用VBA识别特定范围内的第一个空列

时间:2019-07-19 06:24:57

标签: 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                                  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

电子表格显示公司每月的表现。

每次到达新月时,我都希望将上个月的值复制到新月。因此,我需要确定第一个空列。 我尝试使用here中的VBA解决方案:

Sub Last_Used_Column()
c = Sheet1.Cells(3, Columns.Count).End(xlToLeft).Column
MsgBox c
End Sub

现在的问题是,与this问题相反,我有一个新的 G列,该列显示了总体效果。 因此,使用上述代码,我将得到 Colum H ,但我想将 D列识别为第一个空列。

我认为一种解决方案可能是将VBA查找第一个空列的范围限制为Columns B:F

我如何更改上面的代码才能实现这一目标?

2 个答案:

答案 0 :(得分:0)

这将为您提供第3行中最后使用的列,然后为空白单元格+1

Sheet1.Rows("3").CurrentRegion.Columns.Count

答案 1 :(得分:0)

使用此

jinja2

它使用这个

Dim c As Long
c = Sheet1.Cells(3, Sheet1.Columns.Count).End(xlToLeft).Offset(ColumnOffset:=-1).End(xlToLeft).Column 

查找最后使用的列(在您的示例G中)。然后它向左移一列

c = Sheet1.Cells(3, Sheet1.Columns.Count).End(xlToLeft) 

并再次找到最后使用的列(从此处开始)

.Offset(ColumnOffset:=-1)

最后,您可以使用.End(xlToLeft).Column 将最后一列的空白列移到右边。


注意:如果没有空列,则c + 1将是c,因此您可以轻松地对此进行测试:

1