Консолидируйте листы, но добавьте новые вставленные строки в конце уже консолидированных данных

#excel #vba

Вопрос:

У меня следующая проблема: я хочу объединить 9 листов разного и увеличивающегося размера, но всякий раз, когда вставляются новые строки, они должны помещаться в конце уже консолидированных данных. Пример. У меня 5 строк на 9 листах. Я объединяю их, и на главном листе содержится 45 строк данных. Если я вставлю 2 строки в лист 1 и 1 строку на листе 3, то у меня должно быть уже 45 строк, затем 2 строки из листа 1 и одна строка из листа 3. и это будет продолжаться со временем.

Приведенный ниже код добавляет вновь введенные строки в конце, но берет данные со всех листов.

У меня больше листов, чем у мастера, и тех 9, что делает использование листа ненадежным.подсчет:

 Sub consolidate()
Dim r As Range, d As Object, namp;
Set d = CreateObject("Scripting.Dictionary")
For n = Sheets.Count To 1 Step -1
    Set r = Sheets(n).[c2]
    Do While r.Value2 <> ""
        d(r.Value2) = 1
        Set r = r(2)
    Loop
Next
Sheets("Master").[c2].Resize(d.Count) = Application.Transpose(d.keys)
End Sub
 

Если я изменяю эту строку:

 For n = Sheets.Count To 1 Step -1
 

В любую из приведенных ниже строк он не добавляет вновь введенные строки в конце текущих данных, но снова объединяет их и добавляет в середине:

 For n = 9 To 1 Step -1

For n = 1 To 9 Step 1
 

Почему это происходит и как это можно исправить?

Комментарии:

1. Не могли бы вы предоставить файл с макетными данными, чтобы получить больше ясности?

2. Часть, отсутствующая в вашем коде, определяет, какие строки уже были объединены в сводный лист. Несколько способов сделать это: 1) найдите сводный лист для каждой строки, прежде чем копировать его. 2) добавьте маркер в каждую строку в таблицах данных, когда она будет скопирована. Скопируйте только в том случае, если этот маркер отсутствует