我有一个Excel表,有一些列。但目前我的列持续时间存在问题。
当我向下滚动表格时,我意外地注意到,许多ID都有空行,并且此ID中只有一行具有实际值。
是否可以使用VBA仅用一个现有值来填充其他empthy?这意味着,ID6979960的所有空值都应填入值42:15:56,依此类推。
如果没有这个,我在桌子上的其他计算都无法正常工作。
我不确切知道如何在VBA中复制值。
答案 0 :(得分:1)
Public Sub FillEmpty()
Dim finded As Range
Dim Sheet As Worksheet
Set Sheet = ActiveSheet 'or any other sheet -> .Sheets("")
With Sheet
lastrow = .Cells(1, 1).End(xlDown).Row
For i = 1 To lastrow
If StrComp(.Cells(i, 2).Value, "") = 0 Then
Set finded = .Columns(2).Find("*", after:=.Cells(i, 2), LookIn:=xlValues)
ID = .Cells(finded.Row, 1).Value
Filler = .Cells(finded.Row, 2).Text
Else
ID = .Cells(i, 1).Value
Filler = .Cells(i, 2).Text
End If
Index = i
While ID = .Cells(Index, 1).Value
.Cells(Index, 2).Value = Filler
Index = Index + 1
Wend
Next i
End With
End Sub
快速实现,不是最佳解决方案。我用你的例子测试了它,它的工作原理。不确定还有更多行。检查一下,让我知道它是否适合您。
答案 1 :(得分:0)
Sub fillerv2()
rowscnt = 1000
tmi = 1
tm = ""
For i = 1 To rowscnt
If tm <> Cells(i, 1).Value Then
For o = tmi To i - 1
If IsEmpty(Cells(o, 2).Value) = False Then
Pattern = Cells(o, 2).Value
Exit For
End If
Next o
For o = tmi To i - 1
Cells(o, 2).Value = Pattern
Next o
tm = Cells(i, 1).Value
tmi = i
End If
Next i