Как добавить/удалить строки в таблице, в которой каждая строка имеет длину в несколько строк/столбцов?

#excel #vba

Вопрос:

Мой макет по сути выглядит так

Имя

Количество блоков = (ввод пользователем)

Блок 1

Содержание Содержание

Содержание Содержание

Блок 2

Содержание Содержание

Содержание Содержание

Где количество блоков, которые я добавил/удалил, зависит от количества блоков, введенных пользователем.

Я думаю о двух способах:

  1. имея 1 из этих блоков в качестве именованного диапазона и добавляя к нему по мере изменения#, не знаю, как с этим справиться, если число изменится на меньшее, и в этом случае мне придется удалить его.
  2. Добавление нескольких строк/столбцов одновременно, а затем последующее добавление содержимого, аналогичная проблема, описанная выше.

Искал, но не слишком уверен, что искать, так как я бы просто назвал это таблицей, для которой я должен добавлять/удалять строки, но таблицы/строки ссылаются на свою собственную вещь в Excel.

Изменить: Моя текущая реализация состоит в том, чтобы скопировать первый блок в виде диапазона, а затем вставить его N раз внизу, пока он не совпадет со значением в ячейке Количество блоков. Моя главная проблема заключается в незначительном изменении данных, когда я вставляю каждый диапазон в нижнюю часть. Например, содержимое должно быть в основном одинаковым, но некоторые конкретные части должны измениться (например, некоторые из них будут пустыми). Блок # в первой строке диапазона также должен увеличиваться на 1 каждый раз. Я также не знаю, как бы я удалил каждый блок с конца, если значение ячейки «Количество блоков» меньше, чем их в настоящее время.

К сожалению, я не могу дать слишком конкретную информацию, поскольку это считается конфиденциальными данными, но я больше ищу общий подход, к которому я должен стремиться, а не точную реализацию. Однако это фрагмент.

 For i = 1 To 2 (Will later have to change this but its just to test for now)  NextRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row   1  'get the Next Empty Row  ws.Range("B" amp; NextRow).PasteSpecial xlPasteAll 'paste Next i  

Редактировать: Более подробно о макете, так как мне не разрешается делать скриншот или что-то еще.

Каждый раздел выглядит так

A B C D (Столбцы)

Количество блоков : Ввод пользователем X(Первая строка, не должна повторяться, X определяет, сколько должно быть блоков)

Блок 1(занимает все 4 столбца), первая строка раздела.

Вопрос Ввод пользователя (Вопрос-столбец A, который длиннее остальных, ввод пользователя-B и C. Столбец D-это статическая единица измерения (дюймы). Строка 2

Вопрос 2…. Строка 3

Вопрос 3… (2 и 3 имеют одинаковый формат с 1) Строка 4 Ответы 1-3 суммируются в строку 5

Теперь Повторите

Блок 2…

Вопрос, введенный пользователем (Вопрос остается тем же, но пользовательский ввод снова должен быть пустым, а не значением из скопированного диапазона, который является блоком 1)

и т.д…

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

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

1. Отредактировал исходный пост для более подробной информации. Это основная часть, которая вставляет каждый блок/секцию. В основном ищу общий подход к тому, иду ли я вообще по правильному пути или есть какой-то способ просто использовать более простой тип команды вставить строку, который вставил бы весь раздел, который мне нужен, в конце моей таблицы, созданной вручную. For i = 1 To 2 (Will later have to change this but its just to test for now) NextRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row 1 'get the Next Empty Row ws.Range("B" amp; NextRow).PasteSpecial xlPasteAll 'paste Next i