【问题标题】:VBA Insert function VLOOKUP into range,lookup range in other workbookVBA将函数VLOOKUP插入范围,在其他工作簿中查找范围
【发布时间】:2013-11-22 22:49:57
【问题描述】:

VBA 将函数 VLOOKUP 插入范围,在其他工作簿中查找范围。使用filename_AcctMgr = Application.GetOpenFilename(, , "Select Acct Mgr File", "Select") 获得包含查找表的文件,然后打开该文件。我们称之为 workbook2。

在工作簿 1 中,我将 VLOOKUP 公式添加到“F2”中,并在工作簿 2 的 A:C 列中查找“A”列值。 I 然后将公式复制到“F”列的所有行。

我在 A:C 列中找不到正确引用 workbook2 范围所需的语法。

ActiveCell.Formula = _
    "=VLOOKUP(activecell.offset(0,-5).address,'ws.name'!A:C,3,FALSE)"

谁能建议正确的语法?

【问题讨论】:

    标签: excel vba vlookup


    【解决方案1】:

    试试这个:

    Range("F2").Resize(10).Formula = "=VLOOKUP(A2,[Book2]Sheet1!$A:$C,3,FALSE)"
    

    或者

    Range("F2:F10").Formula = "=VLOOKUP(A2,[Book2]Sheet1!$A:$C,3,FALSE)"
    

    编辑:对不起,我忘记了关于文件名作为变量的文章:

    Dim MyFile As String
    Dim vSplit As Variant
    Dim iCnt As Integer
    
    MyFile = Application.GetOpenFilename(, , "Select Acct Mgr File", "Select")
    
    vSplit = Split(MyFile, "\")
    iCnt = UBound(vSplit)
    vSplit(iCnt) = "[" & vSplit(iCnt) & "]"
    MyFile = Join(vSplit, "\")
    
    Range("F2:F10").Formula = "=VLOOKUP(A2,'" & MyFile & "Sheet1'!$A:$C,3,FALSE)"    
    

    如果有人单击取消,您将需要添加错误处理。另外我怀疑您是否要将公式添加到 f 列中的 all 行,因此只需定义所需的范围即可。我的例子是第 2 到 10 行。

    【讨论】:

      【解决方案2】:

      我假设您希望工作表/范围的名称位于变量中,而不是硬编码。实际上,您的字符串中间有变量的名称,但它将被视为字符串,而不是包含字符串的变量。

      我建议您执行以下操作:

      Dim sheetName, lookupFrom, myRange           ' always declare your variables
      sheetName = "This is the sheet name"         ' note I added some spaces to make it challenging
      lookupFrom = ActiveCell.Offset(0, -5).address
      myRange = "'" & sheetName & "'!A:C"          ' putting quotes around the string so it's always valid
      ActiveCell.Formula = "=VLOOKUP(" & lookupFrom & "," & myRange & ", 3, FALSE)"
      

      您当然可以一次完成所有这些 - 只是看起来很乱:

      ActiveCell.Formula = "=VLOOKUP(" & ActiveCell.Offset(0, -5).Address & ", '" & sheetName & "'!A:C, 3, TRUE)"
      

      进一步说明 - sheetName 当然可以包含其他工作簿的名称 - 但您需要工作簿和工作表的名称......所以

      sheetName = "[Book2]Sheet1"
      

      会好的。

      在您的示例中,您使用了ws.name(没有正确引用)-但这不会为您提供完整路径,因为您需要工作簿和工作表名称来确保引用正确的数据。最好是明确的 - 如果 Excel 可以对你想要的东西做出错误的假设,它会 - 你会摸不着头脑......

      由于您实际上表明您已经打开了这本​​书,因此您的变量 filename_AcctMgr 中有文件(工作簿)的名称。那么你应该可以使用:

      sheetName = "[" & filename_acctMgr & "]Sheet1"
      

      然后从那里拿走。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-09-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-23
        相关资源
        最近更新 更多