在VBA(Excel)中,列A如何插入一个ID标头,后跟1-X,直到它到达表示包含数据的最高行的空单元格?
我正在尝试创建一个宏,该宏将插入一列,这将是电子表格(a)中的第一列,同时将1列上的所有原始列向右移动 然后,我需要这第一列来创建标题“ID”,每个标题都以数字方式计算行数: [A] ID 一, 二, 三, 我只希望编号在到达电子表格中最后一行时停止。在录制宏时,通过执行通常的操作来完成此任务,我能够生成以下VBA,结果如下:在VBA(Excel)中,列A如何插入一个ID标头,后跟1-X,直到它到达表示包含数据的最高行的空单元格?,vba,excel,Vba,Excel,我正在尝试创建一个宏,该宏将插入一列,这将是电子表格(a)中的第一列,同时将1列上的所有原始列向右移动 然后,我需要这第一列来创建标题“ID”,每个标题都以数字方式计算行数: [A] ID 一, 二, 三, 我只希望编号在到达电子表格中最后一行时停止。在录制宏时,通过执行通常的操作来完成此任务,我能够生成以下VBA,结果如下: Sub InsertID() ' ' InsertID Macro ' Add first column to be 1-## ' ' Keyboard Shortcut
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
显然,这对我的情况不起作用。我使用的模板只有521行。这个数字将是一个变量,它通常可以由原始列a中的行数决定(在运行此宏之后,现在是列be)
我已经深入研究了如何为特定列中的行数创建一个变量,但是找不到一个参数足够相似的问题,尽管它看起来很简单
提前感谢试试这个
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
试试这个
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
我相信下面的代码将完成您想要做的事情。它声明变量(如果声明了Option Explicit,则应该是),插入列,查找最后一行(如果有),并插入相关数据
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
Private Sub InsertID()
Dim lastrow,i作为整数声明变量
'添加列
范围(“A1”)。全部插入
“最后一排#
如果Application.WorksheetFunction.CountA(单元格)为0,则
lastrow=单元格。查找(内容:=“*”_
之后:=范围(“A1”)_
看:=xlPart_
LookIn:=xl公式_
搜索顺序:=xlByRows_
搜索方向:=xlPrevious_
MatchCase:=False)。行
其他的
lastrow=1
如果结束
'单元格A1的设置值
单元格(1,1)=“ID”
'设置列A中其余单元格的值
对于i=2到最后一行
单元(i,1)=i-1
下一个
端接头
我相信下面的代码将完成您想要做的事情。它声明变量(如果声明了Option Explicit,则应该是),插入列,查找最后一行(如果有),并插入相关数据
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
Private Sub InsertID()
Dim lastrow,i作为整数声明变量
'添加列
范围(“A1”)。全部插入
“最后一排#
如果Application.WorksheetFunction.CountA(单元格)为0,则
lastrow=单元格。查找(内容:=“*”_
之后:=范围(“A1”)_
看:=xlPart_
LookIn:=xl公式_
搜索顺序:=xlByRows_
搜索方向:=xlPrevious_
MatchCase:=False)。行
其他的
lastrow=1
如果结束
'单元格A1的设置值
单元格(1,1)=“ID”
'设置列A中其余单元格的值
对于i=2到最后一行
单元(i,1)=i-1
下一个
端接头
有关如何查找给定范围内最后一行的想法,请参见此:有关避免使用Select
method::)的想法和原因,请参见此。此外,如果只是在此处设置值,则无需使用formula1c1
。只需使用.Value
即可。有关如何查找给定范围内的最后一行的方法,请参见此:有关避免使用选择方法::)的想法和原因,请参见此。此外,如果只是在此处设置值,则不需要使用公式1c1
。只需使用.Value
即可。