Лучший способ ввода данных в несколько листов в Excel? - PullRequest
2 голосов
/ 16 ноября 2010

В основном мне нужно иметь несколько таблиц для продаж определенных категорий, например, ПК и ноутбука.Мне также нужно иметь основную таблицу, которая отображает все продажи.

Для ввода я использую поля ввода и раскрывающийся список, чтобы выбрать категорию (ПК или ноутбук), затем этот ввод просто помещается в один большойстол вместе с информацией о продаже.Мне просто интересно, как лучше всего поместить эти данные в отдельный лист только для этой категории?Я немного не в курсе, с чего начать.Я подумал о том, чтобы, возможно, использовать оператор IF в VB, где, если вводом является, например, ПК, затем также вставить в лист ПК, но это кажется довольно неэффективным способом сделать это.1005 *

Ответы [ 2 ]

0 голосов
/ 19 ноября 2010

Нужно ли хранить одну и ту же запись на 2 листах?

Если вы хотите видеть только ПК или ноутбуки одновременно, вы всегда можете использовать фильтр.

Что если пользователь обновляет запись после ввода, а что если пользователь выполняет редактирование не на основном листе, а на листе Clone_Laptop?Это приведет к всевозможным путаницам, если вы не обновите оба способа, то есть

для каждого и каждого изменения в любом из листов (Master, Clone_PC, Clone_Laptop), вы должны скопировать всю запись на другой лист, чтобы сохранить листыв синхронизации, что означает, что вы должны

  • найти запись в целевом листе по уникальному ключу (у вас есть такой ??)
  • , если найден, заменить текущую целевую строку источникомстрока
  • если не найдена, скопируйте исходную строку в первую пустую целевую строку

Поскольку такая подпрограмма, если она написана правильно, может действовать в обоих направлениях, вы определенно поместите ее в отдельную строку.модуля и вызовите его из процедуры события Worksheet_Change() с каждого листа, передавая параметры строки источника (Target.EntireRow) и листа назначения.

Подсказка: Обратите внимание на правильную абстракциютвоя проблема.Скажем - если вы создаете одну дополнительную таблицу, содержащую список категорий вместе с названием листа, вы можете свободно определить, какая категория должна перейти на какой лист, вы можете назначить 2 или более категорий одному листу и т. Д., И у вас естьхороший список для проверки категорий в основном листе.Наконец, для каждого нового листа, который вы можете создать позже для новых категорий, будет добавлена ​​1 строка кода (вызов подпрограммы Sync с «MasterSheet» в качестве целевого параметра)

0 голосов
/ 16 ноября 2010

Если вы не уверены, где разместить код VB, лучше всего добавить код не за один из листов, а в отдельный модуль.С другой стороны, вам понадобится точка входа вашего кода, которая вызывается при конкретном событии.Это может быть событие рабочего листа (например, событие изменения) или просто кнопка или меню, которые пользователь должен активировать, когда он хочет обновить основную таблицу.Оттуда позвоните по коду вашего модуля.

Если бы вы могли предоставить нам конкретный пример, мы, вероятно, могли бы дать вам лучший ответ.

Использование события изменения рабочего листа: добавьте код, подобный этому, к каждомуиз ваших входных листов:

Private Sub Worksheet_Change(ByVal Target As Range)
    UpdateMainSheet(ActiveSheet)
    ' or UpdateMainSheet(Target)
End Sub

UpdateMainSheet должен быть общедоступным Sub в отдельном модуле, который копирует входные данные с данного листа на ваш основной лист (также следует удалить данные на основном листе, который имеетбыл удален на данном листе).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...