VBA vlookup для копирования отдельных столбцов из нескольких листов в мастер-лист

Я использую Excel для создания отчетов для биллинговой системы, и я бы хотел использовать VBA для упрощения процесса обновления excel. Я хочу использовать функцию vlookup, чтобы отражать столбцы (G: AI) от соответствующих Именованных рабочих листов до основной таблицы. Все листы начинаются с строки 4. (Строка 3 – это заголовок)

Поэтому я еще больше упрощу процесс:

VLOOKUP VBA (При внесении изменений в листы с именами) 1. Включить функцию Vlookup в столбце (G: AI) в Mastersheet из именованных листов («Джон», «Чарли», «Джордж») 2. Поскольку Mastersheet представляет собой смешанные данные Джона, Чарли и Джорджа, для ввода формул Vlookup через столбец (G: AI) соответственно, а затем до последней строки Mastersheet 3. Мой диапазон vlookup будет из Named worksheets (John, Charlie, George), range (A1: AI) начиная с столбца 7, строки 4 до конца данных.

ws1.Cells(r, c).Value = Application.VLookup(ws1.Cells(r, 1).Value, wsNames.Range("A1:AI500"), colnum, False) 

Вот коды, которые я имею до сих пор. Это все, что я разработал (с помощью) на данный момент. Любая помощь будет принята с благодарностью.

Моя проблема заключается в том, что при запуске кода значения vlookup для ws11 находятся в нужном месте. Однако значения vlookup для ws12 и ws13 смещены влево влево от листа. Например, в то время как значения vlookup для ws11 указаны в столбцах (A: AI) – правильные значения столбцов vlookup для ws12 указаны в столбцах (AP: BR) – 7 столбцов из столбцов AI и значений vlookup для ws13 находятся в столбцах (BY: DA ) – 7 столбцов из столбца BR Есть ли строка кода, которую я могу вставить, чтобы исправить это?

 Sub green_update() Dim wb As Workbook, ws1 As Worksheet, ws11 As Worksheet, ws12 As Worksheet, ws13 As Worksheet Set wb = ThisWorkbook Set ws1 = wb.Sheets("Sheet1") Set ws11 = wb.Sheets("Sheet11") Set ws12 = wb.Sheets("Sheet12") Set ws13 = wb.Sheets("Sheet13") Dim colNo As Long, ARowNo as Long Dim for_col As Long, i As Long, r As Long, c As Long, colnum As Long r = 4: c = 7: colnum = 7 Dim wsNames As Variant For Each wsNames In Sheets(Array("sheet11", "sheet12", "sheet13")) colNo = wsNames.Cells("4", Columns.Count).End(xlToLeft).Column For for_col = 1 To colNo ARowNo = wsNames.Cells(Rows.Count, "A").End(xlUp).row For i = 1 To ARowNo ws1.Cells(r, c).Value = Application.VLookup(ws1.Cells(r, 1).Value, wsNames.Range("A1:AI500"), colnum, False) If IsError(ws1.Cells(r, c).Value) Then ws1.Cells(r, c).Value = 0 End If r = r + 1 Next r = 4 colnum = colnum + 1 c = c + 1 Next colnum = 7 Next wsNames End Sub 

Я, честно говоря, не вижу, что может быть причиной проблемы, которую вы описываете, на основе опубликованного кода. В приведенном ниже коде нет ничего существенного: я убрал пару циклов и включил последнюю переменную строки. Дайте мне знать, как вы поживаете.

 Sub green_update() Dim wb As Workbook, ws1 As Worksheet Set wb = ThisWorkbook Set ws1 = wb.Sheets("Sheet1") Dim colNo As Long, ARowNo As Long Dim for_col As Long, i As Long, r As Long, c As Long, colnum As Long r = 4: c = 7: colnum = 7 Dim wsNames As Variant For Each wsNames In Sheets(Array("sheet11", "sheet12", "sheet13")) colNo = wsNames.Cells("4", Columns.Count).End(xlToLeft).Column ARowNo = wsNames.Cells(Rows.Count, "A").End(xlUp).Row For for_col = 1 To colNo For i = 1 To ARowNo ws1.Cells(r, c).Value = Application.VLookup(ws1.Cells(r, 1).Value, wsNames.Range("A1:AI" & ARowNo), colnum, False) If IsError(ws1.Cells(r, c).Value) Then ws1.Cells(r, c).Value = 0 End If r = r + 1 Next i r = 4 colnum = colnum + 1 c = c + 1 Next for_col colnum = 7 Next wsNames End Sub 
  • Vlookup с несколькими повторяющимися значениями
  • VBA: сложная функция VLOOKUP (двухстолбцовое совпадение по вертикали, однострочное совпадение по горизонтали). Рекомендации по методу
  • Массив как значение поиска в Vlookup
  • Автоматическая популяция листа excel
  • Не удается вернуть несколько значений одного и того же ввода с помощью VLOOKUP / INDEX / MATCH
  • Vlookup основан на полученном тексте формулы
  • VLOOKUP по расчетному ядру
  • Создание имени рабочей матрицы в VLOOKUP-Function из Cell-Value
  • Альтернативы нескольким функциям IF
  • Как отсортировать два столбца в excel с помощью значений, соответствующих столбцу A?
  • Excel: как сравнить список значений с другим списком значений
  • Interesting Posts
    Давайте будем гением компьютера.