Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA向下填充到上一列中使用的最后一行_Excel_Vba - Fatal编程技术网

Excel VBA向下填充到上一列中使用的最后一行

Excel VBA向下填充到上一列中使用的最后一行,excel,vba,Excel,Vba,我整个下午都在寻找这个问题的答案 代码按照我的意愿工作(经过大量时间的研究,我对此相当陌生),除了我想填充到上一列中使用的最后一行,而不是整个工作表 我不能准确地引用上一篇专栏文章,因为它并不总是在同一个地方,所以我要查找它,并根据查找结果做所有事情 我找到的所有答案都使用Range命令,但我找不到如何使用colNum变量 Sub cndob() ' ' cndob change dob ' ' find column number and select ' Dim colNum As

我整个下午都在寻找这个问题的答案

代码按照我的意愿工作(经过大量时间的研究,我对此相当陌生),除了我想填充到上一列中使用的最后一行,而不是整个工作表

我不能准确地引用上一篇专栏文章,因为它并不总是在同一个地方,所以我要查找它,并根据查找结果做所有事情

我找到的所有答案都使用Range命令,但我找不到如何使用colNum变量

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(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”,如果找到它,它会在右边插入列(如果没有,它会给出一个错误:)。在此之后,它将为每个单元格插入一个公式
1+1
,该公式位于右侧。无论如何,像这样的事情:


谢谢,我发布问题时正在工作,明天将尝试。谢谢,使用变量设置范围也是一个有用的指针。我是一名税务会计,所以我只会在需要的时候寻找代码,而且从来没有按照正确的顺序学习过这些东西。