在VBA(Excel)中,列A如何插入一个ID标头,然后是1-X,直到它到达表示数据最高行的空单元?

我试图创build一个macros,它将插入一个列,这将成为电子表格(A)中的第一列,同时将所有原始列向右移动1列。

然后我需要这第一列来创build头“ID”与每个数字计数的行:

[一个]

ID

1

2

3

我只希望编号在到达电子表格中最后一个相关行后停止。 我能够通过在录制macros时完成我通常要做的事情来生成以下VBA,并以此结束:

Sub InsertID() ' ' InsertID Macro ' Add first column to be 1-## ' ' Keyboard Shortcut: Ctrl+Shift+N ' Columns("A:A").Select Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove Range("A1").Select ActiveCell.FormulaR1C1 = "ID" Range("A2").Select ActiveCell.FormulaR1C1 = "1" Range("A3").Select ActiveCell.FormulaR1C1 = "2" Range("A2:A3").Select Selection.AutoFill Destination:=Range("A2:A522") Range("A2:A522").Select Range("A1").Select End Sub 

Obvoiusly,这不适合我的情况。 我使用的模板只有521行。 这个数字将是一个variables,通常可以由原始列A(现在是运行此macros后的列)中的行数确定。

我已经广泛地研究了如何为特定列中的行数创buildvariables,但是即使看起来如此简单,仍然无法find具有足够类似参数的问题。

提前致谢

尝试这个…

 Sub CreateIDColumn() lr = ActiveSheet.UsedRange.Rows.Count Columns(1).Insert Range("A1").Value = "ID" Range("A2:A" & lr).Formula = "=ROW()-1" Range("A2:A" & lr).Value = Range("A2:A" & lr).Value End Sub 

我相信下面的代码将做你想做的事情。 它声明variables(如果声明了Option Explicit – 它应该是),插入列,find最后一行(如果有的话),并插入相关的数据。

 Private Sub InsertID() Dim lastrow, i As Integer 'declaring variables 'adding column Range("A1").EntireColumn.Insert 'getting last row # If Application.WorksheetFunction.CountA(Cells) <> 0 Then lastrow = Cells.Find(What:="*", _ After:=Range("A1"), _ Lookat:=xlPart, _ LookIn:=xlFormulas, _ SearchOrder:=xlByRows, _ SearchDirection:=xlPrevious, _ MatchCase:=False).Row Else lastrow = 1 End If 'setting value of cell A1 Cells(1, 1) = "ID" 'setting value for the rest of the cells in column A For i = 2 To lastrow Cells(i, 1) = i - 1 Next End Sub