【发布时间】:2015-04-26 21:30:28
【问题描述】:
我有以下列
Score Name Last Name
5460 Name1 Lastname1
2620
340
470
3445 Name2 Lastname2
1290
1170
7460 Name3 Lastname3
3520
360
1500
5048 Name4 Lastname4
830
490
1883
620
1208
185
426
653
我想填写 columns B & C 中的空单元格,直到 Column A 中的最后一行(在本例中为 row 21 )。
结果
Score Name Last Name
5460 Name1 Lastname1
2620 Name1 Lastname1
340 Name1 Lastname1
470 Name1 Lastname1
3445 Name2 Lastname2
1290 Name2 Lastname2
1170 Name2 Lastname2
7460 Name3 Lastname3
3520 Name3 Lastname3
360 Name3 Lastname3
1500 Name3 Lastname3
5048 Name4 Lastname4
830 Name4 Lastname4
490 Name4 Lastname4
1883 Name4 Lastname4
620 Name4 Lastname4
1208 Name4 Lastname4
185 Name4 Lastname4
426 Name4 Lastname4
653 Name4 Lastname4
目前我正在尝试调整这个 vba 代码:
Sub FillColBlanksSpecial()
Dim wks As Worksheet
Dim rng As Range
Dim rng2 As Range
Dim LastRow As Long
Dim col As Long
Dim lRows As Long
Dim lLimit As Long
Dim lCount As Long
On Error Resume Next
lRows = 2
lLimit = 1000
Set wks = ActiveSheet
With wks
col = .Range("b1,c1").Column
Set rng = .UsedRange 'try to reset the lastcell
LastRow = .Cells.SpecialCells(xlCellTypeLastCell).Row
Set rng = Nothing
lCount = .Columns(col).SpecialCells(xlCellTypeBlanks).Areas(1).Cells.Count
If lCount = 0 Then
MsgBox "No blanks found in selected column"
Exit Sub
ElseIf lCount = .Columns(col).Cells.Count Then
Do While lRows < LastRow
Set rng = .Range(.Cells(lRows, col), .Cells(lRows + lLimit, col)) _
.Cells.SpecialCells(xlCellTypeBlanks)
rng.FormulaR1C1 = "=R[-1]C"
lRows = lRows + lLimit
Loop
Else
Set rng = .Range(.Cells(2, col), .Cells(LastRow, col)) _
.Cells.SpecialCells(xlCellTypeBlanks)
rng.FormulaR1C1 = "=R[-1]C"
End If
End With
End Sub
问题 1:此代码仅在 B 列 上运行。如何在B & C 栏中运行
正如您在代码中看到的,我尝试了col = .Range("b1,c1").Column,但无济于事。
问题 2:如何在名称以 -A 和 -B 结尾的工作表中仅在同一工作簿中运行?
在同一个工作簿中,我有数百张工作表,但我想仅在以上述后缀结尾的工作表中运行。 谢谢。
【问题讨论】:
-
空单元格是否真的是空白的,或者它们是否可以用公式等中的零长度字符串(例如“”)填充?
-
@Jeeped 他们真的是空白。里面什么都没有。
-
请复制并粘贴您的数据(格式为代码),而不是发布图片链接。如果链接失效,我们将不知道您在说什么。谢谢。
-
@WaiHaLee 我添加了复制粘贴乐趣的代码。