У меня есть главный файл, который отслеживает ход доставки для моей компании. Я обновляю это на еженедельной основе с прогрессом в существующих поставках (отгрузки, которые уже находятся в главном файле) и вводят новые поставки. Эти обновления представлены в виде листа обновления, который находится в том же формате, что и основной файл. Я автоматизировал ввод новых поставок, но я зациклился на том, как я могу обновить существующий прогресс поставок.VBA - Обновление основного файла из нового файла
В настоящее время я выполняю vlookup вручную на основе ссылочного номера отправки. Это боль, потому что есть несколько столбцов прогресса поставки, и мне приходится тралить каждый новый вход, чтобы удалить формулу vlookup.
ДЛЯ ЭКЗАМЕНА: ссылка на отправку находится в колонке «С», отправка отправления находится в колонке «АГ», отправка отправляется в колонку «AH» и отправление прибывает в колонку «ИИ» .. и так далее. В главном листе у меня может быть номер ссылки и дата отправки. В листе обновления может быть указана дата отправки для этой отправки. Я хотел бы взять дату отправки и скопировать ее в основной файл для этой отправки.
Я по сути хочу искать пробелы в каждом столбце основного файла и копировать эти данные из файла обновления на основе ссылки на отправку. Я не могу скопировать и пропустить данные основного файла, потому что на прошлой неделе я добавил много данных, которые могут не иметь или не совпадать с обновленным файлом.
Спасибо за вашу помощь
Пожалуйста, смотрите мою попытку код:
Sub Eupdatedates()
Dim lr As Long, rw As Long, extRNG As Range
Set wb = Workbooks("masterfile.xlsm")
Set ws = wb.Sheets("RawDATA")
lastRow = ws.Range("B" & ws.Rows.Count).End(xlUp).Row
Set extRNG = Workbooks("updatefile.csv").Worksheets("report").Range("C:AL")
For i = 33 To 38 ' columns which contain dates that need updating
ws.Range("$A$2:$CV$" & lastRow).AutoFilter field:=i, Criteria1:="=" 'filter out cells containing data
lastRow = ws.Range("B" & ws.Rows.Count).End(xlUp).Row ' find last row after filtering
firstRow = Range("Cells(2,i): Column(i)" & Rows.Count).Cells.SpecialCells(xlCellTypeBlanks).Row ' indentify first row after filtering
For rw = firstRow To lastRow ' loop through each each empty row cell and perform a vlookup to the update file
Cells(rw, i) = Application.VLookup(Cells(rw, i), extRNG, i - 2, False)
Next rw
Next i
End Sub
Я получаю сообщение об ошибке с "Range (" Cells (2, я): Колонка (I)»Я думаю, Я искал онлайн и, похоже, не нашел способ определить диапазон в цикле for.Я новичок в VBA, поэтому много оснований, чтобы наверстать. Любые мысли были бы очень благодарны !!
Вы пытались написать VBA код, чтобы решить это? –
Нет, я не уверен, с чего начать и что будет эффективным методом. Спасибо – SmC
Ну, начните свою работу, разделив основную задачу на небольшие задачи - например. 1. Найдите пробелы в столбцах, 2. найдите способ копирования и вставки поверх основного файла, 3. и т. Д. Затем сделайте небольшое исследование для каждой задачи и покажите, что у вас есть. – Vityata