Навигация:  Формулы и функции >

Заполнение бланков данными из списка (базы данных)

Print this Topic Previous pageReturn to chapter overviewNext page
скрыть/показать скрытый текст

Постановка задачи

Имеем базу данных (список, таблицу - называйте как хотите) с информацией по платежам на листе Данные:

Задача: быстро распечатывать приходно-кассовый ордер (платежку, счет-фактуру...) для любой нужной записи выбранной из этого списка (вот пример для четвертой записи):

Поехали!

Шаг 1. Создаем бланк

На другом листе книги (назовем этот лист Бланк) создаем пустой бланк. Можно самостоятельно, можно воспользоваться готовыми бланками, взятыми, например, с сайтов журнала "Главный Бухгалтер" или сайта Microsoft. У меня получилось примерно так:

В пустые ячейки (Счет, Сумма, Принято от и т.д.) будут попадать данные из таблицы платежей с другого листа - чуть позже мы этим займемся.

Шаг 2. Подготовка таблицы платежей

Прежде чем брать данные из таблицы для нашего бланка, таблицу необходимо слегка модернизировать. А именно:

·Вставьте пустой столбец слева от таблицы. Мы будем использовать для ввода метки (пусть это будет английская буква "икс") напротив той строки, данные из которой мы хотим добавить в форму:
·Превратим нашу таблицу в список, чтобы проще было вводить новые данные в будущем. Для этого таблицу необходимо выделить и выбрать в меню Данные - Список - Создать список.
·Создадим динамический именованный диапазон, указывающий на нашу таблицу. Это позволит в будущем использовать имя диапазона как имя таблицы в формулах, независимо от ее размеров. Т.е. при дописывании новых данных в таблицу, нам не придется каждый раз корректировать формулы на бланке. Для этого откройте меню Вставка - Имя - Присвоить (Insert - Name - Define), введите имя таблицы (например, БазаДанных) и в строку Ссылка введите такую формулу:
 
=СМЕЩ(Данные!$A$1;0;0;СЧЁТЗ(Данные!$B:$B);СЧЁТЗ(Данные!$1:$1)+1)

Шаг 3. Связываем таблицу и бланк

Для связи используем функцию ВПР (VLOOKUP) - подробнее про нее можно почитать здесь. В нашем случае для того, чтобы вставить в ячейку F9 на бланке номер помеченного "x" платежа с листа Данные надо ввести в ячейку F9 такую формулу:

=ВПР("x";БазаДанных;2;ЛОЖЬ)

Т.е. в переводе на "русский понятный" функция должна найти в диапазоне БазаДанных строку, начинающуюся с символа "х" и выдать нам содержимое второго столбца этой строки, т.е. номер платежа.

Аналогичным образом заполняются все остальные ячейки на бланке - в формуле меняется только номер столбца.

Шаг 4. Чтобы не было двух "х"...

Если пользователь введет "х" напротив нескольких строк, то функция ВПР будет брать только первое найденное значение. Чтобы не было такой многозначности, щелкните правой кнопкой мыши по ярлычку листа Данные и выберите Исходный текст (Source Code). В появившееся окно редактора Visual Basic скопируйте следующий код:

 

Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Long
Dim str As String

If Target.Count > 1 Then Exit Sub
If Target.Column = 1 Then
    str = Target.Value
    Application.EnableEvents = False
    r = Cells(Rows.Count, 2).End(xlUp).Row
     Range("A2:A" & r).ClearContents
    Target.Value = str
End If
  Application.EnableEvents = True
End Sub

Этот макрос не дает пользователю ввести больше одного "х" в первый столбец.

Ну, вот, собственно и все! Пользуйтесь!

к библиотеке   3GL   к оглавлению   к экономической информатике   4GL - визуальным средам

Знаете ли Вы, что в 1974 - 1980 годах профессор Стефан Маринов из г. Грац, Австрия, проделал серию экспериментов, в которых показал, что Земля движется по отношению к некоторой космической системе отсчета со скоростью 360±30 км/с, которая явно имеет какой-то абсолютный статус. Естественно, ему не давали нигде выступать и он вынужден был начать выпуск своего научного журнала "Deutsche Physik", где объяснял открытое им явление. Подробнее читайте в FAQ по эфирной физике.

НОВОСТИ ФОРУМА

Форум Рыцари теории эфира


Рыцари теории эфира
 10.11.2021 - 12:37: ПЕРСОНАЛИИ - Personalias -> WHO IS WHO - КТО ЕСТЬ КТО - Карим_Хайдаров.
10.11.2021 - 12:36: СОВЕСТЬ - Conscience -> РАСЧЕЛОВЕЧИВАНИЕ ЧЕЛОВЕКА. КОМУ ЭТО НАДО? - Карим_Хайдаров.
10.11.2021 - 12:36: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от д.м.н. Александра Алексеевича Редько - Карим_Хайдаров.
10.11.2021 - 12:35: ЭКОЛОГИЯ - Ecology -> Биологическая безопасность населения - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> Проблема государственного терроризма - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> ПРАВОСУДИЯ.НЕТ - Карим_Хайдаров.
10.11.2021 - 12:34: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вадима Глогера, США - Карим_Хайдаров.
10.11.2021 - 09:18: НОВЫЕ ТЕХНОЛОГИИ - New Technologies -> Волновая генетика Петра Гаряева, 5G-контроль и управление - Карим_Хайдаров.
10.11.2021 - 09:18: ЭКОЛОГИЯ - Ecology -> ЭКОЛОГИЯ ДЛЯ ВСЕХ - Карим_Хайдаров.
10.11.2021 - 09:16: ЭКОЛОГИЯ - Ecology -> ПРОБЛЕМЫ МЕДИЦИНЫ - Карим_Хайдаров.
10.11.2021 - 09:15: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Екатерины Коваленко - Карим_Хайдаров.
10.11.2021 - 09:13: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вильгельма Варкентина - Карим_Хайдаров.
Bourabai Research - Технологии XXI века Bourabai Research Institution