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