Excel VBA - 查找并填写值

时间:2014-02-03 17:17:22

标签: excel excel-vba excel-2010 vba

对于这个noobish问题感到抱歉,但我是新手,我没有太多的编程背景。我自己尝试了几个小时,但我还不够了解。我检查了thisthis,但我无法弄清楚如何修改它。

示例数据:

enter image description here

第一部分是我如何获取文件,第二部分是我想要的样子。

前3列在列的某处有值。我需要找到这些值,复制它们,然后将它们粘贴到下一个值,然后一直重复到范围的底部。有时每列有很多值,有时只有1.数据的最后一行可以由第4列确定。基本上我只需要填写所有空白单元格。注意:第2行并不总是包含第一个值。

这是我到目前为止(更新):

Sub FindFillIn()

    Dim columnValues  As Range, i As Long
    Dim cellstart As Integer
    Dim cellend As Integer
    cellstart = 2
    cellend = ActiveSheet.Range("E" & ActiveSheet.Rows.Count).End(xlUp).Row

    i = 1

    For i = cellstart To cellend
        If Cells(i, 1).Value = "" Then
            Cells(i, 1).Value = Cells(i - 1, 1).Value
        End If
    Next i

End Sub

更新:

它似乎在第一列上正确运行,但它只能执行一列。如何让它在第1列,第2列和第3列上运行?

2 个答案:

答案 0 :(得分:0)

Sub FillInBlanks()

    Dim rng As Range

    On Error Resume Next
    With ActiveSheet
        Set rng = .Range(.Range("A2"), _
         .Cells(Rows.Count, 4).End(xlUp)).SpecialCells(xlCellTypeBlanks)
    End With
    On Error GoTo 0

    If Not rng Is Nothing Then
        With rng
            .FormulaR1C1 = "=R[-1]C"
            .Value = .Value
        End With
    End If


End Sub

答案 1 :(得分:0)

不使用VB就很容易。 选择第1列的数据,直到要填充数据的最后一个单元格。 按CTRL + G并单击特殊。 选择空白,然后按确定。 现在,在公式栏上,键入“=”并选择(按Ctrl +单击)数据开始的第一个单元格,然后按Control + Enter。

您可以将此过程记录到宏中,然后查看代码。