Прошу помощи! Как сделать автоматическое добавление строк в таблицу? Так, чтобы сохранялись формулы по строкам и итог по столбцам. В "примере" заполняются ячейки по столбцам: B,F,G (т.е. при заполнении каждой из них необходимо добавить строку снизу, с сохранением всех формул) Однако необходимо как-то избежать излишнего добавления строк, например при корректировке данных в ранее заполненных ячейках.
На форуме была такая тема: http://www.excelworld.ru/forum/2-17111-1 Смог добиться автоматического появления строк. Однако при добавлении строк, не сохраняются итоговые формулы по столбцам, например в D11 (в диапазон не попадали вновь добавленные строки). При корректировке данных в ячейках добавлялись лишние строки.
Может можно завязать добавление строк на определенную комбинацию клавиш, или что-то в этом роде? Заранее благодарен!
Доброго всем времени суток!
Прошу помощи! Как сделать автоматическое добавление строк в таблицу? Так, чтобы сохранялись формулы по строкам и итог по столбцам. В "примере" заполняются ячейки по столбцам: B,F,G (т.е. при заполнении каждой из них необходимо добавить строку снизу, с сохранением всех формул) Однако необходимо как-то избежать излишнего добавления строк, например при корректировке данных в ранее заполненных ячейках.
На форуме была такая тема: http://www.excelworld.ru/forum/2-17111-1 Смог добиться автоматического появления строк. Однако при добавлении строк, не сохраняются итоговые формулы по столбцам, например в D11 (в диапазон не попадали вновь добавленные строки). При корректировке данных в ячейках добавлялись лишние строки.
Может можно завязать добавление строк на определенную комбинацию клавиш, или что-то в этом роде? Заранее благодарен!Начинающий
sboy, Спасибо, очень интересный вариант! Остались вопросы: 1. Итоговые формулы по столбцам не изменяются (не охватывают вновь добавленные строки); 2. Автоматически копируются значения в ячейках (с Q и далее) 3. Как переместить кнопку?)
_Boroda_, Спасибо! Все работает! Я ничего не понял( Вопрос: 1. При необходимости добавить столбцы в таблицу (в середину или в конец), какую строку кода скопировать? 2. Если есть необходимость ниже таблицы разместить другой расчет, просто данные, это не повлияет на правильность расчетов в таблице? И, можно как-то объединить идею с кнопкой с вашим расчетом?
sboy, Спасибо, очень интересный вариант! Остались вопросы: 1. Итоговые формулы по столбцам не изменяются (не охватывают вновь добавленные строки); 2. Автоматически копируются значения в ячейках (с Q и далее) 3. Как переместить кнопку?)
_Boroda_, Спасибо! Все работает! Я ничего не понял( Вопрос: 1. При необходимости добавить столбцы в таблицу (в середину или в конец), какую строку кода скопировать? 2. Если есть необходимость ниже таблицы разместить другой расчет, просто данные, это не повлияет на правильность расчетов в таблице? И, можно как-то объединить идею с кнопкой с вашим расчетом?Начинающий
1. Никакую. Все само посчитается, главное, чтобы во второй в третьей, это я перепутал строке шапка заполнена была 2. Если Вы не будете ничем заполнять столбец А в таблице ниже, то не повлияет Объединить с кнопкой можно с несколькими видами результата. Что Вам нужно, чтобы по нажатию кнопки происходило? И нужно ли оставить автоматическое добавление?
1. Никакую. Все само посчитается, главное, чтобы во второй в третьей, это я перепутал строке шапка заполнена была 2. Если Вы не будете ничем заполнять столбец А в таблице ниже, то не повлияет Объединить с кнопкой можно с несколькими видами результата. Что Вам нужно, чтобы по нажатию кнопки происходило? И нужно ли оставить автоматическое добавление?_Boroda_
_Boroda_, Т.е. я правильно понял, что данный код можно использовать в любых таблицах, где: 1. Во 2 строке - шапка. 2. В столбце А после таблицы данных нет?
Мне бы хотелось, чтобы была кнопка, после таблицы (а лучше перемещаемая- простите за наглость), при нажатии на которую после строки (на которой стоит курсор) добавлялась новая строка, с сохранением всех формул (как у вас). Вне зависимости, последняя это строка или строка в середине таблицы.
И еще один небольшой вопрос: при удалении лишней строки в середине таблицы, нумерация по столбцу А слетает( как решить эту проблемку?
_Boroda_, Т.е. я правильно понял, что данный код можно использовать в любых таблицах, где: 1. Во 2 строке - шапка. 2. В столбце А после таблицы данных нет?
Мне бы хотелось, чтобы была кнопка, после таблицы (а лучше перемещаемая- простите за наглость), при нажатии на которую после строки (на которой стоит курсор) добавлялась новая строка, с сохранением всех формул (как у вас). Вне зависимости, последняя это строка или строка в середине таблицы.
И еще один небольшой вопрос: при удалении лишней строки в середине таблицы, нумерация по столбцу А слетает( как решить эту проблемку?Начинающий
Сообщение отредактировал Начинающий - Понедельник, 17.07.2017, 11:40
1. Да. только в третьей, это я перепутал. Но этот параметр задается в макросе 2. Да
Для кнопки код попроще будет [vba]
Код
Sub VstStr() rs_ = Selection(1).Row r0_ = 4 ' номер первой строки If rs_ < r0_ Then Exit Sub r1_ = Range("A" & Rows.Count).End(3).Row If rs_ > r1_ Then Exit Sub c11_ = Cells(r0_ - 1, Columns.Count).End(1).Column Application.ScreenUpdating = 0 Application.Calculation = xlCalculationManual Range("A" & rs_ + 1).EntireRow.Insert Range("A" & rs_).Resize(, c11_).Copy Range("A" & rs_ + 1) Range("A" & rs_ + 1).Resize(, c11_).SpecialCells(xlCellTypeConstants).ClearContents Range("B" & rs_ + 1).Select Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = 1 End Sub
[/vba] Сделал закрепление первых 3-х строк, поэтому кнопку можно не двигать вниз - она и так всегда видна будет А нумерацию - вообще-то, это уже другой вопрос, который нужно задавать в отдельной теме. Правда, в моем файле все равно это уже сделано, иначе неверно проходила бы нумерация после вставки Там формула
Код
=СУММ(ИНДЕКС(A:A;СТРОКА()-1);1)
1. Да. только в третьей, это я перепутал. Но этот параметр задается в макросе 2. Да
Для кнопки код попроще будет [vba]
Код
Sub VstStr() rs_ = Selection(1).Row r0_ = 4 ' номер первой строки If rs_ < r0_ Then Exit Sub r1_ = Range("A" & Rows.Count).End(3).Row If rs_ > r1_ Then Exit Sub c11_ = Cells(r0_ - 1, Columns.Count).End(1).Column Application.ScreenUpdating = 0 Application.Calculation = xlCalculationManual Range("A" & rs_ + 1).EntireRow.Insert Range("A" & rs_).Resize(, c11_).Copy Range("A" & rs_ + 1) Range("A" & rs_ + 1).Resize(, c11_).SpecialCells(xlCellTypeConstants).ClearContents Range("B" & rs_ + 1).Select Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = 1 End Sub
[/vba] Сделал закрепление первых 3-х строк, поэтому кнопку можно не двигать вниз - она и так всегда видна будет А нумерацию - вообще-то, это уже другой вопрос, который нужно задавать в отдельной теме. Правда, в моем файле все равно это уже сделано, иначе неверно проходила бы нумерация после вставки Там формула
Действительно, при заполнении ячеек по D, диапазон меняется. При заполнении ячеек по Q, U, Y, AC и т.д. диапазон меняется, правда появляется - Несогласующаяся формула.
Не меняется диапазон по нижней строке, столбцам I-P, R, S, T и т.д. Зависимость я не понял(
Действительно, при заполнении ячеек по D, диапазон меняется. При заполнении ячеек по Q, U, Y, AC и т.д. диапазон меняется, правда появляется - Несогласующаяся формула.
Не меняется диапазон по нижней строке, столбцам I-P, R, S, T и т.д. Зависимость я не понял(
Если код кнопки немного поменять - то можно будет и столбец A заполнять ниже первой таблицы. Правда, условия все же остаются - у таблицы должны быть заполнены все заголовки, конец таблицы будет определяться первой "пустой" строкой после неё.
[vba]
Код
Sub VstStr() rs_ = Selection(1).Row r0_ = 4 ' номер первой строки If rs_ < r0_ Then Exit Sub set r_ = Cells (r0_, 1).CurrentRegion r1_ = r_.Cells(1, 1).Offset(r_.Rows.Count - 1).Row ' r1_ = Range("A" & Rows.Count).End(3).Row If rs_ > r1_ Then Exit Sub cl1_ = r_.Cells(1, 1).Offset(, r_.Columns.Count - 1).Column ' c11_ = Cells(r0_ - 1, Columns.Count).End(1).Column Application.ScreenUpdating = 0 Application.Calculation = xlCalculationManual Range("A" & rs_ + 1).EntireRow.Insert Range("A" & rs_).Resize(, c11_).Copy Range("A" & rs_ + 1) Range("A" & rs_ + 1).Resize(, c11_).SpecialCells(xlCellTypeConstants).ClearContents Range("B" & rs_ + 1).Select Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = 1 End Sub
[/vba]
Если код кнопки немного поменять - то можно будет и столбец A заполнять ниже первой таблицы. Правда, условия все же остаются - у таблицы должны быть заполнены все заголовки, конец таблицы будет определяться первой "пустой" строкой после неё.
[vba]
Код
Sub VstStr() rs_ = Selection(1).Row r0_ = 4 ' номер первой строки If rs_ < r0_ Then Exit Sub set r_ = Cells (r0_, 1).CurrentRegion r1_ = r_.Cells(1, 1).Offset(r_.Rows.Count - 1).Row ' r1_ = Range("A" & Rows.Count).End(3).Row If rs_ > r1_ Then Exit Sub cl1_ = r_.Cells(1, 1).Offset(, r_.Columns.Count - 1).Column ' c11_ = Cells(r0_ - 1, Columns.Count).End(1).Column Application.ScreenUpdating = 0 Application.Calculation = xlCalculationManual Range("A" & rs_ + 1).EntireRow.Insert Range("A" & rs_).Resize(, c11_).Copy Range("A" & rs_ + 1) Range("A" & rs_ + 1).Resize(, c11_).SpecialCells(xlCellTypeConstants).ClearContents Range("B" & rs_ + 1).Select Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = 1 End Sub