1

我正在尝试生成一些将使用 AutoFill Down 功能的代码。我想用典型的 1、2、3、4 等填充 B 列,只要 A 列的相应行中有文本/值。现在,我的代码被硬连线以填充到单元格 B50 否无论如何,但我不希望它粘贴那么远,例如,如果 A 列只有通过单元格 A7 的数据。理想情况下,我想使用以下变量——rownum = Range("A1").End(xlDown).Row——来计算 A 列中具有文本/值的单元格的数量,并用它来替换“ B50" 在下面的行名称中。只是不确定实现这一点的适当语法。这是我到目前为止的代码。

ActiveCell.FormulaR1C1 = "1"
Range("B2").Select
ActiveCell.FormulaR1C1 = "2"
Range("A1").Select
Range("B1:B2").Select
Selection.AutoFill Destination:=Range("B1:B50"), Type:=xlFillDefault

提前感谢任何帮助我的人!我是宏和 VBA 代码的新用户,你们中的许多人所拥有的知识量让我感到惊讶!

经济

4

2 回答 2

4

如果您不在代码中选择任何内容,您的情况会好得多。如果您只想根据 A 列的内容对 B 列中的行进行编号,则可以这样做:

Sub NumberColumn()
    Dim ws As Worksheet
    Dim lastRow As Long

    Set ws = ThisWorkbook.Sheets("Sheet1")

    ' get the last row from column A that has a value
    lastRow = ws.Range("A" & ws.Rows.Count).End(xlUp).Row

    ' use the last row to determine how far down to extend the formula
    ws.Range("B1:B" & lastRow).Formula = "=row()"
End Sub
于 2013-06-24T21:47:57.457 回答
1

无需字符串即可使用的非常简单的选项:

Selection.AutoFill Destination:=Range("A2:A" & Cells(Rows.Count, "B").End(xlUp).Row)

复制列中的行数也是如此:

Range("A2:A" & Cells(Rows.Count, "B").End(xlUp).Row).Select
Selection.Copy
于 2013-12-17T14:42:50.757 回答