【问题标题】:Excel VBA - populating table from various workbooks via vlookupExcel VBA - 通过 vlookup 从各种工作簿中填充表格
【发布时间】:2013-06-24 10:54:33
【问题描述】:

在我的代码下面,以下行似乎有问题:

Range("B4").Formula = "=index(C5:AV51,1,column(ActiveCell)-2)"

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False

For Each Cell In Range("C6:AV51")
Range("B4").Formula = "=index(C5:AV51,1,column(ActiveCell)-2)"

    If ActiveCell.Row - ActiveCell.Column < 3 Then
        ActiveCell.Formula = "=vlookup(index(B5:AV51,row()-4,1),'[" & Range("B4").Value & ".xlsx]Sheet1'!A1:E70,4,false)"

    ElseIf ActiveCell.Row - ActiveCell.Column = 3 Then
        ActiveCell.Value = ""
    Else
        ActiveCell.Formula = "=vlookup(index(B5:AV51,row()-4,1),'[" & Range("B4").Value & ".xlsx]Sheet1'!A1:E70,5,false)"
    End If
Next
    Application.EnableEvents = True    
End Sub

【问题讨论】:

    标签: vba excel lookup-tables vlookup


    【解决方案1】:

    ActiveCell 是一个对象,所以替换所有实例

    range("activecell")
    

    ActiveCell
    

    例子

    if range("activecell").row - range("activecell").column < 3 then
    

    变成

    if ActiveCell.row - ActiveCell.column < 3 then
    

    另一个错误,更改:

    range("B4").formula = "=index(C5:AV51,1,column("activecell")-2)"
    

    到这里

    range("B4").formula = "=index(C5:AV51,1," & ActiveCell.Column & ")-2)"
    

    【讨论】:

    • 谢谢,这已经大大改善了我的代码。但是,我仍然在这一行中遇到错误'else if ActiveCell.row - ActiveCell.column = 3 then'
    • 谢谢,但是代码仍然不起作用。如果你可以看一下,我已经在我的第一篇文章中更新了它:)
    • column(ActiveCell) 更改为ActiveCell.Column,就像我在回答中显示的那样。请注意,更新问题以完全改变上下文是不好的做法。您应该重新编辑以恢复原始问题并将新代码添加为更新,以便其他人可以看到答案如何解决问题
    • 感谢您指出这一点,我会记住的。我已经实施了所有建议的更改,但是,它似乎仍然不起作用;在下一行ActiveCell.Formula = "=vlookup(index(B5:AV51,row()-4,1),'[" &amp; Range("B4").Value &amp; ".xlsx]Sheet1'!A1:E70,4,false)" 中弹出一个错误,指出“类型不匹配”
    猜你喜欢
    • 1970-01-01
    • 2018-02-26
    • 1970-01-01
    • 1970-01-01
    • 2013-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-25
    相关资源
    最近更新 更多