Excel公式从绝对路径到相对路径

时间:2019-07-09 16:50:22

标签: excel vba excel-formula

我需要vba才能停止从c:查找文件位置,而只是从文件名读取。

我还是VBA的新手,尝试了一些尝试,但似乎无法正常工作。

Dim lastRow As Long

With Sheets("Vendor Recon")
    lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row

    With .Range("B2:B" & lastRow)
        .Formula = "=SUMIFS('Ta Force Report.xlsx'!Per_Diem[Brock PO'#],'Ta Force Report.xlsx'!Per_Diem[Date],A7,'Ta Force Report.xlsx'!Per_Diem[EE'#],C7)"
    End With

    With .Range("R2:R" & lastRow)
        .Formula = "=COUNTIFS([BrockLenel.xlsx]Sheet1!$F:$F,C2,[BrockLenel.xlsx]Sheet1!$C:$C,A2)"
    End With

当我将此文件提供给我的同事时,我希望它仅查看文件名而不是c:位置。

1 个答案:

答案 0 :(得分:0)

Excel将始终在公式中寻找文件到达的最后位置。如果始终在范围内设置该公式而不将其转换为值,它将不断执行。您可以尝试以下方法之一。 a)

With .Range("B2:B" & lastRow)
     .Formula = "Insert your formula"
     .Formula = .Value
End With

这将始终变成值,并不再寻找位置。

b)使用一个单元格来存储您想要公式查找值的路径,将该单元格值作为变量存储到VBA中,并在公式中使用它,说:

  file1 = Sheets("Variables").Range("A1")  

'You would store on that range and sheet 
    the name of the file, let's say it is "Report.xlsx"

    With .Range("B2:B" & lastRow)
         .Formula = "=SUMIFS('Ta Force " & file1 & "'!Per_Diem[Brock PO'#],'Ta Force " & file1 & 
         "'!Per_Diem[Date],A7,'Ta Force " & file1 & "'!Per_Diem[EE'#],C7)"
         End With

您可以每次使用工作表的名称,路径,文件等进行替换。

让我知道这是否对您有帮助。