Excel VBA添加到上一列中使用的最后一行

我一直在寻找整个下午的答案。

代码的工作,我想要的(经过大量的时间研究,我对此比较绿色),除了我想填写到最后一列使用在前一列而不是整个工作表。

我不能准确地引用前面的专栏,因为它并不总是在同一个地方,所以为什么我要根据查找结果来查找它并做所有事情。

所有我find的答案使用范围命令,但我找不到如何使用我的colNumvariables。

Sub cndob() ' ' cndob change dob ' ' find column number and select ' Dim colNum As Integer colNum = WorksheetFunction.Match("BDate", Range("1:1"), 0) Columns(colNum + 1).Select ' insert column right Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove ' formula fill down Cells(2, colNum + 1).Select ActiveCell.FormulaR1C1 = "=RIGHT(RC[-1],2)&CHAR(47)&MID(RC[-1],5,2)&CHAR(47)&LEFT(RC[-1],4)" Range(ActiveCell, ActiveCell.End(xlDown)).FillDown 

请帮忙

Range.Offset属性是完美的解决scheme。 将您的最后一行代码更改为:

 Range(ActiveCell, ActiveCell.Offset(0, -1).End(xlDown)).FillDown 

.Offset的第一个参数是行偏移量。 我们不想改变。 但是,列偏移量在活动列的左侧设置为1。

我不确定你想要做什么,但从我的理解,这样的事情会做的工作:

 Option Explicit Sub TestMe() Dim colNum As Long Dim sht As Worksheet Dim rng As Range Set sht = ActiveSheet colNum = WorksheetFunction.Match("BDate", Range("1:1"), 0) Set rng = sht.Cells(1, colNum) rng.Offset(0, 1).Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove rng.Offset(0, 1).FormulaR1C1 = "=1+1" Range(rng, rng.End(xlDown)).Offset(0, 1).FillDown End Sub 

它能做什么? 它在第一行查找一个单元格“Bdate”,如果它find它,它将向右插入列(如果没有,则会给出错误:))。 在此之后,它为每个单元格插入一个公式1+1 ,在右侧。 无论如何,这样的事情:

在这里输入图像说明