之前我问过这个问题,但很难显示我做了哪些编辑。
我编写了一些代码来扫描第1列中的行...每次遇到一个唯一的房间号时,它会用该数字填充其下方的空白单元格。不幸的是,它只复制第一个单元格的值(“1”)并将其粘贴到所有第3到10行。
我的代码是: '用类似的房间号码填写房间号码栏:
AboveCellValue = Range("A3").Offset(-1, 0).Value
For RowIndex = 2 To 10
For ColIndex = 1 To 1
If Cells(RowIndex, ColIndex).Value = "" _
Then Cells(RowIndex, ColIndex).Value = AboveCellValue
Next ColIndex
Next RowIndex
这是一张应该发生的事情的照片: http://i802.photobucket.com/albums/yy304/Growler2009/AESProjectPic.jpg
感谢您的帮助! -Dan
答案 0 :(得分:1)
我不确定我是否理解正确,因为我发现你的原始代码有些混乱,特别是当你只查看一列时的列循环,但这可能会做你想要的。
Dim AboveCellValue As Integer
For RowIndex = 2 To 10
Const ColIndex As Integer = 1
If Cells(RowIndex, ColIndex).Value = "" Then
Cells(RowIndex, ColIndex).Value = AboveCellValue
Else
AboveCellValue = Cells(RowIndex, ColIndex).Value
End If
Next RowIndex
答案 1 :(得分:0)
这是另一种不循环的方式。它在每个引用其上方单元格的空白单元格中放置一个公式。
With Range("A2:A10")
.SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=R[-1]C"
.Copy
.PasteSpecial xlPasteValues
End With
更改范围以适合您的数据。此外,它假定您在该范围内没有任何其他公式。如果这样做,它们将转换为值,您可能不希望这样。