Заповнення форм даними з таблиці

Постановка проблеми

У нас є база (список, таблиця – називайте як хочете) з інформацією про платежі на аркуші дані:

Завдання: швидко роздрукуйте касовий чек (оплату, рахунок-фактуру…) для будь-якого потрібного запису, вибраного зі списку. Іди!

Крок 1. Створіть форму

На іншому аркуші книги (назвемо цей аркуш Форма) створити порожню форму. Це можна зробити самостійно, можна скористатися готовими формами, взятими, наприклад, з сайтів журналу Головний бухгалтер або сайту Microsoft. Я отримав щось на зразок цього:

Заповнення форм даними з таблиці

У порожніх клітинках (Рахунок, Сума, Отримано і т. д.) отримає дані з платіжної таблиці з іншого аркуша – трохи пізніше ми розберемося з цим.

Крок 2: Підготовка платіжної таблиці

Перш ніж взяти дані з таблиці для нашої форми, таблицю потрібно трохи модернізувати. А саме, вставте порожній стовпець зліва від таблиці. Ми будемо використовувати для введення мітки (нехай це буде англійська літера «x») навпроти рядка, з якого ми хочемо додати дані до форми:

Крок 3. Зв'язування таблиці та форми

Для спілкування ми використовуємо функцію VPR(ВПР) – докладніше про це можна прочитати тут. У нашому випадку, щоб вставити в комірку F9 форми номер платежу з позначкою «х» з Таблиці даних, необхідно в комірку F9 ввести наступну формулу:

=VLOOKUP(“x”,Дані!A2:G16)

=VLOOKUP(“x”;Дані!B2:G16;2;0)

Ті. У перекладі на «зрозуміло» функція повинна знайти в діапазоні A2: G16 у таблиці даних рядок, який починається з символу «x», і надати нам вміст другого стовпця цього рядка, тобто номер платежу.

Всі інші клітинки форми заповнюються таким же чином – у формулі змінюється лише номер стовпця.

Для відображення суми прописом я скористався функцією Власний з надбудови PLEX.

Результат повинен бути таким:

Заповнення форм даними з таблиці

Крок 4. Щоб не було двох «х»…

Якщо користувач вводить «x» у кількох рядках, функція VLOOKUP прийме лише перше знайдене значення. Щоб уникнути такої неоднозначності, клацніть правою кнопкою миші вкладку аркуша дані , А потім Вихідний текст (Вихідний код). У вікні редактора 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  

Цей макрос не дозволяє користувачеві вводити більше ніж один «x» у першому стовпці.

Ну от і все! Насолоджуйтесь!

  • Використання функції VLOOKUP для підстановки значень
  • Покращена версія функції VLOOKUP
  • Сума прописом (функція Propis) з надбудови PLEX

 

залишити коментар