如何在预先存在的宏中将VBA代码从一列转换为另一列

时间:2019-06-20 00:43:36

标签: excel vba excel-vba

在我的新工作中给了我一个宏,以尝试改进。宏的工作是比较Sheet1与Sheet2上的数据,并删除数据(事务)相同的所有行。这将只保留出现在Sheet1上的事务,而不是出现在Sheet2上的事务。

宏在第I列中运行VLOOKUP以执行此任务。我的问题是数据集现在在第I列中包含了信息(以前没有用过)。如果第I列中有任何数据,则该宏将不会运行。这需要我将数据移到另一列上,这很乏味并且违反了宏的目的。

如何编辑VBA代码以成功在另一列(例如K列)中运行VLOOKUP?

我是VBA的新手,正在学习。我尝试用K列替换I列的所有实例。我发现代码中存在相对的单元格引用,并且还尝试编辑这些引用。

Sub vlookup()
    Range("I13").Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(RC2,Sheet2!C[-7],1,0)"
    Range("J13").Select
    ActiveCell.FormulaR1C1 = "=IF(LEN(RC[-1])=7,1,"""")"
    Range("J14").Select
    Cells.Find(What:="grand total", After:=ActiveCell, LookIn:=xlValues, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Activate
    Selection.End(xlToRight).Select
    Range("I8000:J8000").Select
    Range(Selection, Selection.End(xlUp)).Select
    Selection.FillDown
    Columns("J:J").Select
    Range("J13").Activate
    ActiveWindow.SmallScroll Down:=-57
    Selection.SpecialCells(xlCellTypeFormulas, 1).Select
    Selection.EntireRow.Delete
    Columns("I:J").Select
    Selection.Delete Shift:=xlToLeft
End Sub

以上是运行VLOOKUP的原始宏的一部分。当我在列中有数据的报表上运行此命令时,出现错误提示 “运行时错误'1004':找不到单元。”

运行调试器时,它指向以下代码行:

Selection.SpecialCells(xlCellTypeFormulas, 1).Select

0 个答案:

没有答案