如何用一个现有值填充Excel表中的空行?

时间:2017-02-15 10:06:22

标签: excel vba excel-vba

我有一个Excel表,有一些列。但目前我的列持续时间存在问题。

当我向下滚动表格时,我意外地注意到,许多ID都有空行,并且此ID中只有一行具有实际值。

是否可以使用VBA仅用一个现有值来填充其他empthy?这意味着,ID6979960的所有空值都应填入​​值42:15:56,依此类推。

如果没有这个,我在桌子上的其他计算都无法正常工作。

我不确切知道如何在VBA中复制值。

Table Example:ID,Duration

2 个答案:

答案 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