Vormide täitmine andmetega tabelist

Probleemi sõnastamine

Meil on andmebaas (loetelu, tabel – nimeta kuidas tahad) maksete infoga lehel kuupäev:

Ülesanne: printige kiiresti välja kassakviitung (makse, arve …) mis tahes sellest loendist valitud soovitud kirje kohta. Mine!

1. samm. Looge vorm

Raamatu teisel lehel (nimetagem seda lehte vorm) looge tühi vorm. Saate seda ise teha, võite kasutada valmis vorme, mis on võetud näiteks ajakirja Pearaamatupidaja veebisaitidelt või Microsofti veebisaidilt. Sain midagi sellist:

Vormide täitmine andmetega tabelist

Tühjades lahtrites (Konto, summa, saadud jne) saab maksetabelist andmed teiselt lehelt – sellega tegeleme veidi hiljem.

2. samm: maksetabeli koostamine

Enne meie vormi jaoks tabelist andmete võtmist tuleb tabelit veidi moderniseerida. Nimelt sisestage tabelist vasakule tühi veerg. Kasutame sildi (olgu selleks ingliskeelne täht "x") sisestamiseks selle rea vastas, kust soovime vormile andmeid lisada:

Samm 3. Tabeli ja vormi sidumine

Suhtlemiseks kasutame funktsiooni VPR(OTSING) – selle kohta saad lähemalt lugeda siit. Meie puhul tuleb andmelehelt “x”-ga märgitud makse numbri sisestamiseks vormi lahtrisse F9 sisestada lahtrisse F9 järgmine valem:

=VLOOKUP(“x”,Andmed!A2:G16)

=VLOOKUP(“x”;Andmed!B2:G16;2;0)

Need. tõlgituna “arusaadavaks”, peaks funktsioon leidma andmelehel vahemikust A2: G16 tähega “x” algava rea ​​ja andma meile selle rea teise veeru sisu ehk makse numbri.

Kõik teised vormi lahtrid täidetakse samamoodi – valemis muutub ainult veeru number.

Summa sõnades kuvamiseks kasutasin funktsiooni Enda PLEXi lisandmoodulist.

Tulemus peaks olema järgmine:

Vormide täitmine andmetega tabelist

Etapp 4. Et ei oleks kahte “x”…

Kui kasutaja sisestab “x” mitmele reale, võtab funktsioon VLOOKUP ainult esimese leitud väärtuse. Sellise ebaselguse vältimiseks paremklõpsake lehe vahekaarti kuupäev ja siis Lähtetekst (Lähtekood). Kopeerige ilmuvas Visual Basicu redaktori aknas järgmine kood:

Private Sub Worksheet_Change(ByVal Target As Range) Dim r As Long Dim str String Kui Target.Count > 1 then Exit Sub If Target.Column = 1 then str = Target.Value Application.EnableEvents = False r = Cells(Rows.Count) , 2).Lõpp(xlUp).Reavahemik("A2:A" & r).ClearContents Target.Value = str End If Application.EnableEvents = True End Sub  

See makro takistab kasutajal esimesse veergu rohkem kui ühte x-i sisestamast.

Noh, see on kõik! Nautige!

  • Funktsiooni VLOOKUP kasutamine väärtuste asendamiseks
  • Funktsiooni VLOOKUP täiustatud versioon
  • Summa sõnades (Propis funktsioon) PLEXi lisandmoodulist

 

Jäta vastus