用上面的细胞填充空白细胞

问题描述 投票:0回答:2

我有一个看起来像这样的工作表:

BusABC     Florida     Rush Street     15
blank      blank       Landon Street   29
blank      blank       Naples Street   34
Bus123     Georgia     Rush Street     15
blank      blank       Marietta Street 29234
blank      blank       Duluth Street   321
blank      blank       Augusta Avenue  12

我想使用代码来获得空白与上述数据匹配的结果。因此,A2,A3将具有“BusABC”和B2,B3将具有“佛罗里达”。

然后A5,A6和A7将具有“Bus123”并且B5,B6和B7将具有“Georgia”。

我需要不使用特定的单元格数字,因为我有数千个这样的组设置,我的代码不能引用特定的单元格。

此外,C列和D列中可能有空白单元格(在我的示例中),我需要保留空白

我试过这个(下面)......我最终得到的是0和#N / A的单元格

On Error Resume Next
With Selection.SpecialCells(xlCellTypeBlanks)
  .FormulaR1C1 = "=R[-1]C"
  .Value = .Value
End With

我也试过这个,没有任何反应:

Sub split()
    Dim columnValues  As Range, i As Long

    Set columnValues = Selection

    For i = 1 To columnValues.Rows.Count
        If columnValues.Cells(i, 1).Value = "" Then
            columnValues.Cells(i, 1).Value = columnValues.Cells(i - 1, 1).Value
        End If
    Next
End Sub
excel-vba vba excel
2个回答
0
投票

.value = .Value拉出SpecialCells()使它工作。

With Selection
    With .SpecialCells(xlCellTypeBlanks)
        .FormulaR1C1 = "=R[-1]C"
    End With
  .Value = .Value
End With

之前:

enter image description here

后:

enter image description here


0
投票

我一般反对使用VBA来编写公式。因此,我创建了一个写入结果的解决方案。不幸的是,我似乎迟到了。你已经接受了答案。但是,既然我编写了代码,我也可以分享它。这里是。

Option Explicit

Sub FillMissing()
    ' 04 Jan 2018

    Dim Rng As Range
    Dim Service As Variant
    Dim Rl As Long                              ' last row
    Dim R As Long                               ' row counter

    Application.ScreenUpdating = False
    With ActiveSheet
        Rl = Application.Max(.Cells(.Rows.Count, "C").End(xlUp).Row, _
                             .Cells(.Rows.Count, "D").End(xlUp).Row)
        For R = 2 To Rl                         ' start in row 2
            Set Rng = Range(.Cells(R, "A"), .Cells(R, "B"))
            With Rng
                If Application.CountA(Rng) Then
                    Service = .Value
                Else
                    .Value = Service
                End If
            End With
        Next R
    End With
    Application.ScreenUpdating = True
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.