怎么用vb读取excel表格某一列的内容,并且判断当某个单元格为空的时候使他等于上一个单元格的值?

如题所述

第1个回答  2012-11-27
例如第二列

Sub ff()
If Cells(1, 2).Value = "" Then
MsgBox "一行为空,程序退出"
Exit Sub
End If
For i = 2 To 100
If Cells(i, 2) = "" Then Cells(i, 2) = Cells(i - 1, 2)
Next i
End Sub
第2个回答  2012-11-27
for i = 2 to 100
if cells(i,1).value="" then'i代表行,1代表列
cells(i,1).value = cells(i-1,1)
end if
next i追问

我试了 这样不行啊 读到空格的时候就不读了 不能使他等于上一个单元格的值啊

追答

选中工作表标签--右键--查看代码--复制粘贴下列代码---关闭VB编辑器
回到工作表中---ALT+F8 执行 A 的宏即可!

Sub A()
For i = 2 To 100
If Cells(i, 1).Value = "" Then
Cells(i, 1).Value = Cells(i - 1, 1)
End If
Next i
End Sub

追问

我是这样写的,读取excel表格的第一列显示在list1中,当第二列的数据循环读完直到末尾循环结束,但是第一列中间有空格,想让空格的值等于上一个单元格的,为什么不行呢?读到空格就不显示了
Do While st.Cells(i, 2).Value ""
List1.AddItem st.Cells(i, 1).Value
If Cells(i, 1).Value = "" Then
Cells(i, 1).Value = Cells(i - 1, 1)
End If

i = i + 1
Loop

追答

你这样写当然不行,cells(i,2)"" 执行 代码 LOOP (否则的话),停止循环。
你要先限定执行到哪里结束。

FOR i= 2 to [A65536].END(3).ROW (表示执行到A列最后一个不为空的行号截止)

第3个回答  2012-11-27
for i = 1 to 100
if cells(i,1).value="" then'i代表行,1代表列
cells(i,1).value = "2"
end if
next i本回答被网友采纳
相似回答