Запаўненне форм данымі з табліцы

Пастаноўка задачы

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

Задача: хутка раздрукуйце касавую квітанцыю (аплату, рахунак-фактуру ...) для любога патрэбнага запісу, выбранага з гэтага спісу. Ідзі!

Крок 1. Стварыце форму

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

Запаўненне форм данымі з табліцы

У пустых клетках (Рахунак, Сума, Атрымана ад і г.д.) атрымае даныя з плацежнай табліцы з іншага ліста – крыху пазней мы зоймемся гэтым.

Крок 2: Падрыхтоўка табліцы плацяжоў

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

Крок 3. Звязванне табліцы і формы

Для зносін мы выкарыстоўваем функцыю ВПР(ВПР) – вы можаце прачытаць больш пра гэта тут. У нашым выпадку, каб уставіць у ячэйку 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  

Гэты макрас не дазваляе карыстальніку ўводзіць больш за адзін "х" у першым слупку.

Ну вось і ўсё! Атрымлівайце асалоду!

  • Выкарыстанне функцыі VLOOKUP для падстаноўкі значэнняў
  • Палепшаная версія функцыі VLOOKUP
  • Сума прапісам (функцыя Propis) з надбудовы PLEX

 

Пакінуць каментар