首页 > 解决方案 > Excel公式从绝对路径到相对路径

问题描述

我需要 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: 位置。

标签: excelvbaexcel-formula

解决方案


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

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

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

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


推荐阅读