VBA найти и заменить формулами (проблема с получением строк для обновления) - PullRequest
0 голосов
/ 28 июня 2019

Мне нужно запустить find и replace, где заменой является формула.Я не могу понять, как получить формулу для ссылки на номер строки ячейки, которую она заменяет.Может ли кто-нибудь помочь мне понять, как это работает?

Значение для поиска

НЕОБХОДИМО ДАТА ДЛЯ ИЗДАНИЯ НЕИЗВЕСТНО

, а значение замены будет

=VLOOKUP(A1,'VideoIndex.xlsx'!YouTube_ALLDATA,2,FALSE)

со значением A1, которое изменяет каждую строку.

Ответы [ 2 ]

0 голосов
/ 28 июня 2019

Насколько я знаю, вы не можете сделать это, используя формулу Excel. Но это возможно с помощью VBA.

Этот код сделает это за вас. Который является образцом на этом Ссылка

Sub rep()

Dim c As Range
Dim firstaddress As Range

With ActiveSheet.UsedRange
    Set c = .Find("NEED DATE FOR PUBLISHING UNKNOWN", LookIn:=xlValues)
    If Not c Is Nothing Then
        firstaddress = c.Address
        Do
            c.Value = "=VLOOKUP(A" & c.Row & ",'VideoIndex.xlsx'!YouTube_ALLDATA,2,FALSE)"
            Set c = .FindNext(c)
        Loop While Not c Is Nothing
    End If
End With

End Sub

Вставьте этот код в любой модуль и запустите макрос после активации листа, где вы хотите увидеть изменения.

0 голосов
/ 28 июня 2019

Отличительной особенностью вашего Find() метода является то, что он возвращает Range Object . Объекты Range имеют полезное свойство .Row .

Dim Rng As Range
Set Rng = Cells.Find("NEED DATE FOR PUBLISHING UNKNOWN")

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

rng.Formula = "=VLOOKUP(A" & Rng.Row & ",'VideoIndex.xlsx'!YouTube_ALLDATA,2,FALSE)"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...