2014-01-28 2 views
0

Все,Код VBA для вставки новых рядов с объединенными ячейками

Мне нужна серьезная помощь. Я не создал таблицу Excel, но я пытаюсь исправить ее для друга.

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

Я использовал следующий код VBA, чтобы вставить новую строку, которая копирует ячейки выше и вставляет в новую строку. Проблема заключается в том, что он не объединяет ячейки и не переносит формулу до следующей строки в столбце AM.

Как изменить существующий код VBA для объединения ячеек и сохранить форматирование в строке выше и изменить формулу для следующей строки

Я не могу найти, где прикрепить копию базы данных я являюсь используя так, чтобы вы могли видеть базу данных. Пожалуйста, помогите с этим

Ниже приведен код, который я использую в настоящее время: (BTW) --- Я VBA Stupid, поэтому, пожалуйста, попробуйте сделать это простым. Приведенный ниже код был заимствован у кого-то другого, чтобы соответствовать моим потребностям.

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

= ЕСЛИОШИБКА (ИНДЕКС (Лист3 А2: Д5, ПОИСКПОЗ ($ АК $ 13, (Лист3! A1: D1), 0), ПОИСКПОЗ ($ AL $ 13, (Sheet3 E2: E5), 0)), 0)

Вот что следующая формула следует читать:

= IFERROR (INDEX (Sheet3 A2 : D5, MATCH ($ AK $ 14, (Sheet3 A1: D1), 0), ПОИСКПОЗ ($ AL $ 14, (Sheet3 E2: E5), 0)), 0)

Sub InsertRowFormulas() 
Application.ScreenUpdating = False 
Dim cell As Range 
Selection.EntireRow.Insert 
For Each cell In Intersect(ActiveSheet.UsedRange, Selection.Offset(-1, 0).EntireRow) 
If cell.HasFormula Then 
cell.Copy cell.Offset(1, 0) 
End If 
Next 
Application.ScreenUpdating = True 

End Sub 
+0

Являются ли ячейки только слитыми? Я спрашиваю, потому что ваш вопрос написан так, как вам нужно только скопировать одну строку за раз. – Tmdean

+0

Да, я делаю только подряд. Это позволит персоналу добавлять только столько строк, сколько потребуется. – user3245314

+0

Я хотел спросить, есть ли какие-либо ячейки, объединенные вертикально. Похоже, у вас только горизонтально слитые клетки. – Tmdean

ответ

0

Есть два вопроса, которые вам необходимо решить.

Во-первых, вам нужно настроить формулу, чтобы иметь correct reference locking, так что при автоподстановке формулы в новых строках ссылки обновляются правильно. Если вы хотите, чтобы ссылка на строку или столбец не была скорректирована при копировании формулы, вы префикс ее с помощью $.

=IFERROR(INDEX(Sheet3!$A$2:$D$5, 
       MATCH($AK13,Sheet3!$A$1:$D$1,0), 
       MATCH($AL13,Sheet3!$E$2:$E$5,0)),0) 

С помощью правильной блокировки вы можете просто скопировать всю строку, чтобы сохранить объединенные ячейки. Я не совсем уверен, нужен ли макрос для этого - возможно, было бы легче обучить пользователей электронной таблицы тому, как копировать строки, что довольно простая операция в Excel.

Dim dest As Range 

Selection.EntireRow.Insert 
Set dest = Selection.Worksheet.Cells(Selection.Row, 1) 
dest.Offset(1).Resize(, dest.Worksheet.UsedRange.Columns.Count).Copy dest 
+0

Я попытался использовать приведенную выше формулу, но не ссылался на правильные ячейки, поэтому Я исправил его, чтобы ссылаться на ячейки, но проблема в том, что при создании следующей строки формула не добавляет значения для ссылки на следующий номер строки. Например: = IFERROR (INDEX (Sheet3! $ A $ 2: $ D $ 5, MATCH ($ AK $ 52, Sheet3! $ A $ 1: $ D $ 1,0), MATCH ($ AL $ 52, Sheet3! $ E $ 2 : $ E $ 5,0)), 0) Затем следующая строка вниз должна выглядеть следующим образом: = IFERROR (INDEX (Sheet3!$ A $ 2: $ D $ 5, MATCH ($ AK $ 53, Sheet3! $ A $ 1: $ D $ 1,0), MATCH ($ AL $ 53, Sheet3! $ E $ 2: $ E $ 5,0)), 0) – user3245314

+0

Удалите $ из строк или столбцов, которые вы хотите изменить, когда копируется формула. – Tmdean

+0

Большое спасибо за помощь. Я отлично работаю сейчас – user3245314

Смежные вопросы