我只想知道如何遍历A列上的非空白单元格。我要做的是复制[A1:B1]上的内容,将其添加到A列上每个非空白单元格的顶部到目前为止,我已经计算了A列上的非空白单元格,但是我被卡住了。我知道应该使用Offset函数。
到目前为止,这是我的代码:
Dim NonBlank as Long
NonBlank = WorksheetFunction.CountA(Worksheet(1).[A:A])
For i = 1 to NonBlank
[A1:B1].Copy Offset(1,0). "I'm stuck here"
Next i
答案 0 :(得分:1)
如果您要尝试填写每个产品的标题,请尝试此操作...
Sub FillHeaders()
Dim lr As Long
Dim Rng As Range
lr = ActiveSheet.UsedRange.Rows.Count
Application.ScreenUpdating = False
On Error Resume Next
Range("A1:B1").Copy
For Each Rng In Range("A3:A" & lr).SpecialCells(xlCellTypeConstants, 2).Areas
If Rng.Cells(1).Value <> Range("A1").Value Then
Rng.Cells(1).Offset(-1, 0).PasteSpecial xlPasteAll
End If
Next Rng
Application.CutCopyMode = 0
Application.ScreenUpdating = True
End Sub
答案 1 :(得分:0)
例如,从单元格A1模拟 Ctrl - 向下的效果,并在立即窗口中显示地址,值:
Sub HopToNextNonBlankCellBelow()
Dim oRng As Range
Set oRng = Range("A1")
Debug.Print "Cell Address", "Cell Value"
Do
Set oRng = oRng.End(xlDown)
If Not IsEmpty(oRng) Then Debug.Print oRng.Address(0, 0), oRng.Value
Loop Until oRng.Row = Rows.Count
Set oRng = Nothing
End Sub
答案 2 :(得分:0)
试试这个...我(可能)在1000处覆盖了行,但它可能不会对你的表现产生影响。如果你想更精确,有数百篇关于如何找到范围的最后一行的文章。对于偏移函数,它引用与我们循环的单元格相关的单元格。在下面的示例中,代码表示cell.offset(0,1)
,这意味着我们当前正在循环的单元格右侧的一个单元格。如果您输入Range("A10").offset(0,1)
,则更清晰(不太环节!)的示例与键入Range("B10")
Dim Cell As Range
For Each Cell In Range("A2:A1000").Cells
If Not IsEmpty(Cell) Then
Cell.Offset(0, 1).Value = Cell.Value
End If
Next Cell