我必须使用多个Excel工作表进行计算,并且我需要用户输入行数,但该行数每年都会变化,因此我希望此变量是变量,并由使用宏的用户输入。不幸的是,我找不到办法。
Range("B2").Select
ActiveCell.FormulaR1C1 = "=CONCATENATE(RC[7],RIGHT(RC[-1]))"
Range("B2").Select
Selection.AutoFill Destination:=Range("B2:B95145"), Type:=xlFillDefault
Range("B2:B95145").Select
Range("J1").Select
例如,当我要执行计算时,我希望B2:B95145是可变的,即启动宏之前必须输入的数字。
答案 0 :(得分:3)
您可以自动找到A列中最后使用的行,例如使用
LastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
因此,此代码应在B列中填充与A列中的数据一样多的行
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Sheet1") 'define your sheet name
Dim LastRow As Long
LastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
ws.Range("B2").FormulaR1C1 = "=CONCATENATE(RC[7],RIGHT(RC[-1]))"
ws.Range("B2").AutoFill Destination:=ws.Range("B2:B" & LastRow), Type:=xlFillDefault
,甚至无需直接在所有单元格中使用自动填充功能即可编写公式:
ws.Range("B2:B" & LastRow).FormulaR1C1 = "=CONCATENATE(RC[7],RIGHT(RC[-1]))"
如果您在C列中有另一个公式,则只需添加
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Sheet1") 'define your sheet name
Dim LastRow As Long
LastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
ws.Range("B2:B" & LastRow).FormulaR1C1 = "=CONCATENATE(RC[7],RIGHT(RC[-1]))"
ws.Range("C2:C" & LastRow).FormulaR1C1 = 'your formula here