Avatar billede JeppeH Juniormester
07. februar 2018 - 15:14 Der er 12 kommentarer og
1 løsning

Brevflet - med tabel i variable størrelse

Jeg har to tabeller:
Tabel 1: Navn, ID og email
Her er én række er lig én person, som skal modtage en mail

Tabel 2: ID, Tillæg, Kroner
Her fremgår ID (på personen) for hvert tillæg og kroner.

Udfordring:
Hver flettet mail skal indeholde en liste over de 10 tillæg, som personen skal have. Da der er 200 tillægsstyper i alt, så jeg skal have "skjult" alle de tillæg der ikke er relevante for personen...

Nogle gode forslag?
Avatar billede falster Ekspert
07. februar 2018 - 17:38 #1
Access kan let fremstille en datakilde med personoplysninger og de 10 relevante tillæg ud fra dine 2 tabeller.

(Alternativt kan denne "ny" datakilde fremstilles med pivot-tabeller i Excel.)

Så er det blot at fremstille og benytte et hoveddokument med [personfelter]+[10 tillægsfelter].

Kigger med, om der også skulle være en direkte løsning i.f.m. selve fletningen i Word :-)
Avatar billede JeppeH Juniormester
07. februar 2018 - 22:26 #2
Ja, jeg kunne sikkert tage Acces i brug, men det er blot endnu et program mine kollegaer ikke forstår ;o)

Jeg kan vel ikke brevflette en pivottabel...? :o)
Antallet af felter varierer. Nogle gange 2, andre andre 30.

Tak for input
Avatar billede falster Ekspert
08. februar 2018 - 00:22 #3
Jeg misforstod dig måske. Hvis de 10 tillæg var et eksempel og antallet af tillæg pr. person varierer og du - naturligt nok - ikke ønsker en hel masse blanke felter i resultatet, kan mine forslag ikke bruges.

Prøv eventuelt at kigge på denne mulighed. Opret linjer til alle 200 mulige tillæg i hoveddokumentet og så se på dette (søg efter/gå ned til "Mailmerge Empty Space Suppression"):

http://www.msofficeforums.com/mail-merge/21803-mailmerge-tips-tricks.html

Jeg har ikke selv prøvet.
Avatar billede JeppeH Juniormester
10. februar 2018 - 19:16 #4
Tak for linket. Der er nogle interessante muligheder.

Umiddelbart kan jeg bruge "Mailmerge Empty Space Suppression" såfremt jeg rykker de 200 tillæg ind i arket der skal brevflette og sætter 200 kolonner på... det virker blot lidt omstændigt ;o)

Det kunne være fedt hvis man kunne "merge" en pivottabel baseret på et id... :oD

Jeg har ikke fundet løsningen endnu...
Avatar billede Tegler Mester
18. februar 2018 - 23:10 #5
Hej JeppeH
Jeg har et bud på en løsning. Den involverer Excel til at holde dine to tabeller og en makro til at generere en oversigt over tillæg for hver enkelt medarbejder. Oversigten placeres i en ny kolonne i tabellen over medarbejdere. Samtlige tillæg for en given medarbejder bliver skrevet i en og samme celle. Når oversigten er blevet oprettet, bruger du Exceltabellen over medarbejderne til at flette mails fra. Oversigten over den enkelte medarbejders tillæg kan nu indsættes som et almindeligt fletfelt.

Du kan hente det her:

https://www.dropbox.com/s/tlbr1cyp5evzknl/FletTest.xlsm?dl=0

Og tilpasse det efter behov.
Bemærk, at jeg har omdøbt de to regneark i filen og bruger navngivne områder i stedet for "B2:B100" eller lignende

Jakob
Avatar billede JeppeH Juniormester
19. februar 2018 - 12:29 #6
Hej Tegler

Tak for dit input.

Din løsning giver et samlet tillæg per medarbejder. Her kunne jeg også bruge en SUM.HVIS formel (på ID og kroner). Det løser desværre ikke problemet. Jeg skal nemlig have listen over de eksakte tillæg for hver enkelt medarbejder.

Fx har medarbejder id 101 følgende tillæg:
Tillæg    Kroner
Type1    10
Type12    81
Type21    10

mens medarbejder id 104 har følgende tillæg:
Tillæg    Kroner
Type22    90
Type4    77
Type8    91
Type21    48
Type25    58
Type10    10
Type12    68
Type10    63

Altså ligger udfordringen i at antallet af tillæg er forskellig og kun dem med værdier skal medtages i brevfletningen...

Nogle forslag? ;o)
Avatar billede Tegler Mester
19. februar 2018 - 16:52 #7
Ifølge dit oprindelige spørgsmål (#1) gik udfordringen på at få en liste over tillæggene for hver enkelt medarbejder med i en brevfletning. Det burde mit forslag give dig. Nu vil du også have satserne med, det kan nok fixes. Jeg forstår ikke din bemærkning om, at mit forslag giver summen af satserne for en given medarbejder, makroen burde kun indsamle tillæggenes navne. For afklaringens skyld:
- Skal du kunne regne videre på tallene, eller medtages de bare for at modtageren kan se størrelsen af de enkelte fradrag?
- Vil du have summen af tillæggene for hver medarbejder med i din brevfletning?
- Har du prøvet at simulere en brevfletning med mit XL-ark som input, efter at du har kørt makroen?

/Tegler
Avatar billede JeppeH Juniormester
19. februar 2018 - 17:44 #8
Hej Jakob

Der var jeg vist lidt for hurtigt. Jeg svarede baseret på din tekst og ikke på test af selve makroen. Interessant løsning du har lavet, hvor alle teksterne på tillæggene samles i én celle. *thumbs up*

Men ja, jeg har brug for at bruge en oversigte over alle tillæg, inklusiv beløb på det enkelte tillæg. Kan du klare det? Også så det ser nogenlunde pænt ud i output? (Så beløb står under hinanden?)

Beklager at jeg var for hurtigt :o)
Avatar billede Tegler Mester
20. februar 2018 - 00:32 #9
Hej Jeppe
Erstat makroen med følgende kode
Sub FindTillaeg()
Dim TillaegList As String, SatsList As String
Dim cl As Range, cl2 As Range

For Each cl In Worksheets("Medarbejdere").Range("MedID")
    TillaegList = ""
    SatsList = ""
    For Each cl2 In Worksheets("Tillæg").Range("IDtillaeg")
        If cl = cl2 Then
        TillaegList = TillaegList & cl2.Offset(0, 1) & vbNewLine
        SatsList = SatsList & cl2.Offset(0, 2) & " kr" & vbNewLine
        End If
    Next
    If Len(TillaegList) > 0 Then
        TillaegList = Left(TillaegList, Len(TillaegList) - 2)
        SatsList = Left(SatsList, Len(SatsList) - 2)
    End If
    cl.Offset(0, 2).Value = TillaegList
    cl.Offset(0, 3).Value = SatsList
Next
End Sub

Så skrives satserne i kolonnen ved siden navnene på tillæggene. Hvis du ikke vil have skrevet "kr", så fjern " kr" & fra koden i linjen SatsList = SatsList & cl2.Offset(0, 2) & " kr" & vbNewLine.
Mht. formateringen, så tror jeg du skal fiddle lidt i dit Word masterdokument, hvor du indsætter fletfelterne. Måske noget med tabulatorer, så beløbene bliver højrestillede... Eller indsætte en tabel (1 række, 2 kolonner), hvor du indsætter fletfelterne for tillægsnavne og satser. Her kan du også lege med justeringen.
/Jakob
Avatar billede Tegler Mester
20. februar 2018 - 00:34 #10
PS: Husk at give kolonnen med satserne en titel, så du får et navn til fletfeltet.
/Jakob
Avatar billede JeppeH Juniormester
20. februar 2018 - 10:00 #11
Hvor er det smukt, Jakob.
Den løsning kan jeg godt bruge.
Mange tak for hjælpen! ;o)
Avatar billede JeppeH Juniormester
15. april 2018 - 12:07 #12
Hej Jakob
Jeg sidder netop og forsøger at bruge arket til at udsende en oversigt over tillæg. Jeg har brug for at få øre (altså to decimaler) med i listen over satser. Fx. skal 2000 vises som 2000,00.
Jeg antager at korrektionen skal være i linien her:
        SatsList = SatsList & cl2.Offset(0, 2) & vbNewLine
og prøvede da også uden held at bruge afrund() formlen.

Har du et bud?
Avatar billede JeppeH Juniormester
15. april 2018 - 12:12 #13
Hov! Den virkede! ;o)
        SatsList = SatsList & Format(cl2.Offset(0, 2), "#,##0.00") & vbNewLine
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester