VBA查找引用工作簿中的第一个工作表而不是“Sheet1”

时间:2018-05-22 09:36:35

标签: excel vba excel-vba vlookup

如何更改以下查找以引用工作簿中的第一个工作表而不是“工作表1”?

.Range("I15:I" & lastRow).FormulaR1C1 = _
                       "=IF(VLOOKUP(RC[-8],[" & combinedWorkbook.Name & "]Sheet1!C1:C2,1,TRUE)=RC[-8],VLOOKUP(RC[-8],[" & combinedWorkbook.Name & "]Sheet1!C1:C2,2,TRUE),NA())"

由于

3 个答案:

答案 0 :(得分:1)

如果您要重复使用它,我会声明:

Dim first_sheet As String
first_sheet = combinedWorkbook.Sheets(1).Name

然后在你的代码中使用它:

.Range("I15:I" & lastRow).FormulaR1C1 = _
                       "=IF(VLOOKUP(RC[-8],[" & combinedWorkbook.Name & "] & first_sheet & !C1:C2,1,TRUE)=RC[-8],VLOOKUP(RC[-8],[" & combinedWorkbook.Name & "] & first_sheet  & !C1:C2,2,TRUE),NA())"

答案 1 :(得分:1)

您已将工作簿名称连接到公式中。您也可以将第一个工作表的名称连接起来。第一个工作表是工作簿Worksheets集合中的第一个工作表。

因此combinedWorkbook.Worksheets(1).Name将是工作簿combinedWorkbook中第一个工作表的名称。

但名称可能包含"我的工作表名称"等空格。然后引用本身必须在'My Worksheet Name'!A1之类的单引号内。

所有在一起:

.Range("I15:I" & lastRow).FormulaR1C1 = _
                       "=IF(VLOOKUP(RC[-8],'[" & combinedWorkbook.Name & "]" & combinedWorkbook.Worksheets(1).Name & "'!C1:C2,1,TRUE)=RC[-8],VLOOKUP(RC[-8],'[" & combinedWorkbook.Name & "]" & combinedWorkbook.Worksheets(1).Name & "'!C1:C2,2,TRUE),NA())"

答案 2 :(得分:0)

这是一个如何引用第一个工作表的小例子。

  1. 使用.Name属性获取第一个工作表的名称并将其另存为变量。

  2. 在公式中连接变量:

  3. Public Sub TestMe()
    
        Dim wks1 As String
        wks1 = Worksheets(1).Name
        'worksheets should not contains spaces! :) left and right
        Worksheets(1).Name = Trim(wks1)
        Range("I15:I20").FormulaR1C1 = "=" & wks1 & "!R1C1"
    
    End Sub