Вставить строку, где отсутствует последовательное значение, Excel VBA

Я использую следующий код VBA, чтобы вставить пустую строку, где в excel отсутствует последовательное значение.

Sub test() Dim i As Long, x, r As Range For i = Range("b" & Rows.Count).End(xlUp).Row To 2 Step -1 x = Mid$(Cells(i, "b"), 2) - Mid$(Cells(i - 1, "b"), 2) If x > 1 Then Rows(i).Resize(x - 1).Insert Cells(i - 1, "b").AutoFill Cells(i - 1, "b").Resize(x), 2 End If Next 

Это отлично работает, если последнее значение отсутствует.
Например, я заполняю пробелы для групп по 5.
Если отсутствуют средние числа:
1
2
4
5
Код вставляет пустую строку для отсутствующего значения:
1
2

4
5
Однако, если последнее значение, 5, отсутствует, строка не будет вставлена.
Так:
1
2
4
становится:
1
2

4
Есть ли способ установить максимум, чтобы гарантировать, что окончательное значение будет признано отсутствующим?

Попробуй это…

 Sub test() Dim i As Long, x, r As Range, lMax As Long, lRw As Long lRw = Range("b" & Rows.Count).End(xlUp).Row + 1 lMax = InputBox("Enter Maximum Value", "Maximum Input Req.", Application.Max(Range("B2:B" & lRw))) For i = lRw To 2 Step -1 If i = lRw Then x = lMax - Mid$(Cells(i - 1, "b"), 2) If x > 1 Then Cells(i - 1, "b").AutoFill Cells(i - 1, "b").Resize(x + 1), 2 End If Else x = Mid$(Cells(i, "b"), 2) - Mid$(Cells(i - 1, "b"), 2) If x > 1 Then Rows(i).Resize(x - 1).Insert Cells(i - 1, "b").AutoFill Cells(i - 1, "b").Resize(x), 2 End If End If Next End Sub 

Пересмотренный код

 Sub test() Dim i As Long, x, r As Range, lMax As Long, lRw As Long lRw = Range("b" & Rows.Count).End(xlUp).Row + 1 lMax = InputBox("Enter Maximum Value", "Maximum Input Req.", Application.Max(Range("B2:B" & lRw))) For i = lRw To 2 Step -1 If i = lRw Then x = lMax - Cells(i - 1, "b").Value If x > 1 Then Cells(i - 1, "b").AutoFill Cells(i - 1, "b").Resize(x + 1), 2 End If Else x = Cells(i, "b").Value - Cells(i - 1, "b").Value If x > 1 Then Rows(i).Resize(x - 1).Insert Cells(i - 1, "b").AutoFill Cells(i - 1, "b").Resize(x), 2 End If End If Next End Sub 

Этот ответ был дан мне на другом форуме:

http://www.ozgrid.com/forum/showthread.php?t=200184&goto=newpost **

 Sub Reply() i = 1 Do While Cells(i, 2) <> "" j = Cells(i + 1, 2).Value - Cells(i, 2).Value - 1 If j < 0 Then j = 8 - Cells(i, 2).Value + Cells(i + 1, 2).Value For k = 1 To j Rows(i + k).EntireRow.Insert Next ki = i + k Loop End Sub 
  • Использование Excel для поиска последовательностей последовательных дат в столбце
  • Workheet.Unprotect - Office Interop - разница между 2003 и 2007 годами.
  • Запустите макрос на другом листе, используя VBA (Excel)
  • Как добавить процент для всей таблицы в excel
  • Excel макрос - открыть определенный файл слова
  • Лента labelControl GetSuperTip не работает
  • Цветовая шкала с использованием двух частей информации
  • C #: получение количества строк / столбцов с помощью ExcelPackage
  • Маленький файл с макро-поддержкой excel занимает 5 минут, чтобы открыть его на быстром компьютере, почему?
  • создать файл excel в .net без установленного офиса
  • Файл открыт в версии Excel версии 2013, но не в 2016 году?
  • Interesting Posts

    Excel – счет через 45 дней после даты

    Вставка ненадежных данных в EXCEL из CSV

    Разница между XLS и XSLFO

    как отделить данные, вставленные с excel на textarea

    Автоматизация сводной диаграммы в Excel 2007

    Динамически получить сумму столбцов и вставить в последний пробел Columc

    Обзор диаграммы Ганта

    Как сделать лист Excel видимым программно в C #?

    Пауза цикла VBA до повторного вычисления листа

    Печать словаря в файле Excel c #

    Как удалить строки с повторяющимися значениями, кроме тех, которые содержат пустые значения пустого значения?

    Использование операторов VBA if для скрытия / отображения столбцов с помощью кнопки

    Создайте файл xls с нулями перед номером, используя APEX в платформе Salesforce.com

    Как обеспечить, какая версия Excel открывается с помощью VSTO 4?

    Как подсчитать количество последовательных номеров с помощью Excel или другого программного обеспечения?

    Давайте будем гением компьютера.