Innhold
Formulering av problemet
Vi har en database (liste, tabell – kall det hva du vil) med informasjon om betalinger på et ark Data:
Oppgave: skriv raskt ut en kontantkvittering (betaling, faktura ...) for enhver ønsket oppføring valgt fra denne listen. Gå!
Trinn 1. Lag et skjema
På et annet ark av boken (la oss kalle dette arket Form) opprette et tomt skjema. Du kan gjøre det selv, du kan bruke ferdige skjemaer, hentet for eksempel fra nettsidene til Chief Accountant magazine eller Microsofts nettsted. Jeg fikk noe sånt som dette:
I tomme celler (Konto, Beløp, Mottatt fra etc.) vil hente data fra betalingstabellen fra et annet ark – litt senere skal vi behandle dette.
Trinn 2: Klargjør betalingstabellen
Før du tar data fra tabellen for skjemaet vårt, må tabellen moderniseres litt. Sett inn en tom kolonne til venstre for tabellen. Vi vil bruke til å skrive inn en etikett (la det være den engelske bokstaven "x") på motsatt side av linjen som vi vil legge til data i skjemaet:
Trinn 3. Koble sammen tabellen og skjemaet
For kommunikasjon bruker vi funksjonen VPR(VISNING) – du kan lese mer om det her. I vårt tilfelle, for å sette inn nummeret på betalingen merket "x" fra dataarket i celle F9 på skjemaet, må du angi følgende formel i celle F9:
=OPSLAKK(“x”,Data!A2:G16)
=SØK OPP(“x”;Data!B2:G16;2;0)
De. oversatt til "forståelig", skal funksjonen finne i området A2: G16 på dataarket en linje som begynner med tegnet "x" og gi oss innholdet i den andre kolonnen på denne linjen, dvs. betalingsnummer.
Alle andre celler i skjemaet fylles ut på samme måte - bare kolonnenummeret endres i formelen.
For å vise mengden i ord brukte jeg funksjonen Egen fra PLEX-tillegget.
Resultatet skal være følgende:
Trinn 4. Slik at det ikke er to "x" ...
Hvis brukeren skriver inn "x" mot flere linjer, vil VLOOKUP-funksjonen kun ta den første verdien den finner. For å unngå slik tvetydighet, høyreklikk på arkfanen Data og deretter Kildetekst (Kildekode). I Visual Basic-redigeringsvinduet som vises, kopierer du følgende kode:
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
Denne makroen hindrer brukeren i å skrive inn mer enn én "x" i den første kolonnen.
Vel, det er alt! Nyt!
- Bruk av OPSLAKK-funksjonen for å erstatte verdier
- En forbedret versjon av VLOOKUP-funksjonen
- Beløp i ord (Propis-funksjon) fra PLEX-tillegget