我有一个看起来像这样的工作表:
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
我一般反对使用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