Excel 2007: автоматически вставить строку, если предыдущая строка заполнена
Я хочу сделать рабочий лист, который можно использовать в качестве печатной квитанции для клиентов, это базовый макет:
- Контактные данные клиента (имя, адрес и т. Д.) - это фиксированные поля, которые могут быть пустыми
- Строка заголовка: "Товар | Кол-во.| Цена | Итого"
- Динамическая таблица, содержащая любое количество строк, по одной на каждую статью, которую покупатель покупает
- Строка нижнего колонтитула, содержащая общее количество статей и общее количество
То, с чем я борюсь, это как заставить динамический стол работать. В настоящее время я вручную вставляю строку для каждой новой статьи, но это громоздко в ситуациях, когда она очень занята. Я хотел бы, чтобы Excel по умолчанию показывал одну пустую строку, а затем вставлял следующую строку каждый раз, когда предыдущая строка содержит какие-либо данные, автоматически перемещая строку нижнего колонтитула вниз на одну строку и обновляя формулу, используемую для вычисления общего количества. и количество.
Это вообще возможно?
1 ответ
Так же, как предупреждение для вас и любого другого, кто пытается сделать это:
Прямо сейчас вы должны подумать о:
- как часто я буду использовать это для каждого клиента?
- сколько там клиентов?
- как я буду вводить эти элементы?
- сколько там разных предметов?
Это самые важные вопросы. Я сделал совершенно точно , что вы пытаетесь сделать, для очень маленькой компании, с примерно 3 квитанциями в месяц.
Как всегда, пожалуйста, быстро, дешево и превосходно. Однако никто не задавал эти вопросы выше. Главным образом из-за дешевизны и превосходства. И теперь становится очевидным, сколько времени теряется при поиске, исправлении квитанции, но в основном при добавлении элементов. Не говоря уже о том, сколько существует разных форм одного и того же предмета. Исправить это с помощью Excel, однако, возможно, но ИМХО, настоящая боль. Убежденный в этом, EPR теперь настроен.
Это задача базы данных. Это как один из лучших примеров задачи базы данных!
Кроме того, это может даже стоить ERP-системы для малого бизнеса. Здесь, в Германии, я бы порекомендовал вам JTL-Wawi.
Но, если это слишком большой скачок, вам стоит подумать об использовании Access.
Некоторые преимущества:
- вы можете управлять своими клиентами
- вы можете управлять своими товарами
- вы можете перенести свое диманическое поведение на доступ
- вы можете легко управлять своими квитанциями
- вы все еще можете использовать Excel в качестве выходной системы
Как это будет работать?
У вас будет несколько таблиц, для клиентов и предметов, а также для получения. Таблица квитанций будет связывать клиента с его товарами и другими атрибутами, относящимися к квитанции.
Затем вы можете создать разработанный отчет для базовой квитанции и распечатать его из доступа. Или используйте Excel, чтобы выбрать квитанцию, получить данные и распечатать их. Поскольку данные будут предопределены, вы будете знать, сколько строк / столбцов приходит и каков их контекст.
Однако - это колесо было изобретено уже очень много раз, так что вы должны посмотреть на уже существующие;)
редактировать
Решение, основанное на вашем запросе поведения, может использовать эту попытку здесь:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = clngColumnRightToLastGrade Then
Application.EnableEvents = False
'offset selection, one row down, two cols to left
Target.EntireRow.Insert (xlShiftDown) 'insert new row
Target.Offset(1, -2).Select
Application.EnableEvents = True
End If
End Sub
Вы могли бы, конечно, использовать Change
вместо этого события, и вам, возможно, придется ограничить это поведение максимальным диапазоном вашего динамического списка или его рабочим листом.
Или просто сделайте макрос приемлемым для каждой клавиши, чтобы выполнить эту строку здесь:
Target.EntireRow.Insert (xlShiftDown) 'insert new row
Вам нужно будет определить текущую выбранную ячейку, чтобы иметь Target
спектр.