Формула Excel от абсолютного до относительного пути - PullRequest
0 голосов
/ 09 июля 2019

Мне нужно, чтобы 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 голосов
/ 09 июля 2019

Excel всегда будет искать последнее местоположение, в котором был найден файл в формуле.Если вы всегда устанавливаете эту формулу в своем диапазоне, не превращая ее в значения, она будет делать это постоянно.Вы можете попробовать один из следующих.а)

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

Это всегда будет превращаться в значения и перестанет смотреть на местоположение.

б) Используйте ячейку для хранения пути, который вы хотите, чтобы формула искала значения, сохранитьзначение ячейки как переменную в 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

Вы можете выполнять эту замену каждый раз с именами листов, путями, файлами и т. д.

Пустья знаю, поможет ли это тебе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...