我是vba的新手,我正在努力解决这个小问题。我还没有找到任何关于这个问题的帖子。
重点是:
我想在一块板的每一个单元格中填充一系列具有特定值的数据。假设我已经在a列中得到了一系列数据,我希望在同一列中,最后一个单元格后面的行填充";a";值(可以变化(用特定值("b"(填充下一个空单元格。
下面是一个我想做什么作为最终结果的例子;
列A |
---|
a |
a |
a |
a |
a |
a |
b |
b |
b |
b |
b |
我不知道我是否正确理解了你的问题,但试试这个:
Sub test()
Dim firstlineb As Range
Dim lastlineEmpty As Range
Dim cel As Range
Set firstlineb = Range("A2").End(xlDown).Offset(1)
Set lastlineEmpty = Range(firstlineb, firstlineb.End(xlDown))
For Each cel In lastlineEmpty.Cells
If cel = "" Then
cel.Value = "b"
Else: Exit Sub
End If
Next cel
End Sub
我想你已经迷上了";。End(xlDown(";,如果你将变量设置为一个范围,那么你可以像使用单元格一样使用它:
Range(firstlineb, firstlineb.End(xlDown))
这样你就不会重复了:
Range("A2",Range("A2").End(xlDown)).End(xlDown).Offset(1).End(xlDown)
注意:我直接在工作表上尝试了vba,而不是在模块中,所以你必须添加"Worsheets("Sheet1"(;在范围之前。
我希望这对你有所帮助。
我们将做几个假设:
Columns(1)
具有要评估的值,a
Columns(2)
有标签,所以您可以找到所有数据输入末尾的最后一行,这样您就知道Columns(1)
数据需要扩展到哪里,b
我们想找到每个的最后一行(未经解释性注释测试(:
With Sheets(1)
dim lastValueRow as Long
lastValueRow = .Cells(.Rows.Count, 1).End(xlUp).row 'Columns(1) = Columns("A")
dim lastDescriptionRow as Long
lastDescriptionRow = .Cells(.Rows.Count, 2).End(xlUp).row 'Columns(2) = Columns("B")
'Using the above, you can paste a single value over a range, without needing to loop
.Range(.Cells(lastValueRow+1, 1),.Cells(lastDescriptionRow, 1)).Value = "b"
End With