Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Serienbrief mit variabler Anzahl Einträge
zurück: WORD mit EXCEL-Daten -> leeres Adressfeld ausblenden weiter: Mit Serienbrief eine Geburtstagsliste erstellen UND ordnen Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Antwort Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
rz87
Neuling


Verfasst am:
24. Dez 2013, 08:52
Rufname:

Serienbrief mit variabler Anzahl Einträge - Serienbrief mit variabler Anzahl Einträge

Nach oben
       Version: Office 2007

Hallo Forumsuser,

ich habe folgende Datenbasis in Excel:



und möchte jetzt einen Serienbrief dazu erstellen, der in etwa so aussieht:



~
Und zwar soll sich die obere Tabelle mit Seminar variabel füllen, je nachdem welche Seminare in der Excel-Tabelle angekreuzt sind.

Bei Person 1 sind es Seminar 1001 und 1003, die da untereinander hineingehören in Zeile 2 und Zeile 3.
Bei Person 2 sind es dann Seminar 1002 und 1003.

Es kann auch vorkommen, dass eine Person keine Seminare nötig hat, dann wäre ein Platzhalter mit "Kein Seminarbedarf festgestellt" oder sowas sinnvoll in Zeile 2.

Andere könnten 4 Seminare nötig haben...

Ich hoffe Ihr könnt mir hier helfen, vielen Dank schon vorab...
Flipper7
Gast


Verfasst am:
13. Jan 2014, 19:14
Rufname:


AW: Serienbrief mit variabler Anzahl Einträge - AW: Serienbrief mit variabler Anzahl Einträge

Nach oben
       Version: Office 2007

So ich hab hier eine Lösungsmöglichkeit für dich.
Wir kopieren Tabelle1 in abgewandelter Form in Tabelle2 rein.
Diese nutzt du als Datenquelle.

Du benötigst folgenden VBA Code den du in dein Excelsheet einbaust:

Code:
Option Explicit

Sub Makro1()
'
' Makro1 Makro
'
' Tastenkombination: Strg+Ä
'

Dim Bereich As Range, i As Long, j As Long, k As Long
Dim Bereich2 As Range

'Hier den Bereich anpassen an die Größe deiner Tabelle
Set Bereich = Sheets("Tabelle1").Range("A2:D300")
Set Bereich2 = Sheets("Tabelle2").Range("A2:D300")

'Kopieren von Spalte A und B in Tabellenblatt2

        Worksheets("Tabelle1").Activate
        Worksheets("Tabelle1").Columns(1).Select
        Worksheets("Tabelle1").Columns(1).Copy
   
    Worksheets("Tabelle2").Activate
    Worksheets("Tabelle2").Columns(1).Select
    ActiveSheet.Paste
   
    Worksheets("Tabelle1").Activate
        Worksheets("Tabelle1").Columns(2).Select
        Worksheets("Tabelle1").Columns(2).Copy
   
    Worksheets("Tabelle2").Activate
    Worksheets("Tabelle2").Columns(2).Select
    ActiveSheet.Paste
   
    'Seriendruckfelder durchnummerieren, bei Bedarf um weitere Seminare erweitern
    Range("C1").Select
    ActiveCell.FormulaR1C1 = "Seminar1"
 
   
    Range("D1").Select
    ActiveCell.FormulaR1C1 = "Seminar2"

    Range("E1").Select
    ActiveCell.FormulaR1C1 = "Seminar3"
   
    Range("F1").Select
    ActiveCell.FormulaR1C1 = "Seminar4"
   
    Range("G1").Select
    ActiveCell.FormulaR1C1 = "Seminar5"
   
    Range("H1").Select
    ActiveCell.FormulaR1C1 = "Seminar6"
   
    Range("I1").Select
    ActiveCell.FormulaR1C1 = "Seminar7"
   
    Range("J1").Select
    ActiveCell.FormulaR1C1 = "Seminar8"
   
    Range("K1").Select
    ActiveCell.FormulaR1C1 = "Seminar9"
   
    Range("L1").Select
    ActiveCell.FormulaR1C1 = "Seminar10"
   
    'Weitere Nummerierungen bei Bedarf ergänzen
    'M1 und Seminar11 wäre die nächste
   
   
    'Schleifendurchlauf durch Recordset in Tabelle1 und zwar solange durchlaufen lassen bis zum Ende der Tabelle1
    'Tabellenbereich Festlegung siehe weiter oben
   
For i = 1 To Bereich.Rows.Count

    'Startwert für Variablen festlegen um sie in Spalte C starten zu lassen
     j = 3 'für Tabelle1
     k = 3 'für Tabelle2
     
     'Wenn der Code über die Eintragung x in Tabelle1 stolpert, dann...
       
     
    If Bereich(i, j).Text = "x" Then        'in Tabelle1
    Bereich2(i, k).Select                   '...dann in Tabelle2 Seminartitel einfügen
    ActiveCell.FormulaR1C1 = "Seminar 1001" 'Seminartitel bei Bedarf anpassen
    End If
   
    j = j + 1                                'Spaltenzähler für Tabelle1 ein weiter zählen
       
    If Bereich2(i, k).Text <> "" Then       'Wenn Position Spaltenzähler Tabelle2 ungleich leer ist, dann eine Spalte weiter rücken
    k = k + 1
    End If
   
    'Nächste Spalte in Tabelle1 auf x Eintragung prüfen
    If Bereich(i, j).Text = "x" Then
    Bereich2(i, k).Select
    ActiveCell.FormulaR1C1 = "Seminar 1002" 'Seminartitel bei Bedarf anpassen
   
    End If
   
   
       
    j = j + 1
       
    If Bereich2(i, k).Text <> "" Then
    k = k + 1
    End If
   
    'Nächste Spalte in Tabelle1 auf x Eintragung prüfen
    If Bereich(i, j).Text = "x" Then
    Bereich2(i, k).Select
    ActiveCell.FormulaR1C1 = "Seminar 1003" 'Seminartitel bei Bedarf anpassen
    End If
   
   
   
    j = j + 1
       
    If Bereich2(i, k).Text <> "" Then
    k = k + 1
    End If
   
    'Nächste Spalte in Tabelle1 auf x Eintragung prüfen
    If Bereich(i, j).Text = "x" Then
    Bereich2(i, k).Select
    ActiveCell.FormulaR1C1 = "Seminar 1004" 'Seminartitel bei Bedarf anpassen
    End If
   
   
   
    j = j + 1
       
    If Bereich2(i, k).Text <> "" Then
    k = k + 1
    End If
   
    'Nächste Spalte in Tabelle1 auf x Eintragung prüfen
    If Bereich(i, j).Text = "x" Then
    Bereich2(i, k).Select
    ActiveCell.FormulaR1C1 = "Seminar 1005" 'Seminartitel bei Bedarf anpassen
    End If
   
   
   
    j = j + 1
       
    If Bereich2(i, k).Text <> "" Then
    k = k + 1
    End If
   
    'Nächste Spalte in Tabelle1 auf x Eintragung prüfen
    If Bereich(i, j).Text = "x" Then
    Bereich2(i, k).Select
    ActiveCell.FormulaR1C1 = "Seminar 1006" 'Seminartitel bei Bedarf anpassen
    End If
   
 
   
    j = j + 1
       
    If Bereich2(i, k).Text <> "" Then
    k = k + 1
    End If
   
    'Nächste Spalte in Tabelle1 auf x Eintragung prüfen
    If Bereich(i, j).Text = "x" Then
    Bereich2(i, k).Select
    ActiveCell.FormulaR1C1 = "Seminar 1007" 'Seminartitel bei Bedarf anpassen
    End If
   
 
   
    j = j + 1
       
    If Bereich2(i, k).Text <> "" Then
    k = k + 1
    End If
   
    'Nächste Spalte in Tabelle1 auf x Eintragung prüfen
    If Bereich(i, j).Text = "x" Then
    Bereich2(i, k).Select
    ActiveCell.FormulaR1C1 = "Seminar 1008" 'Seminartitel bei Bedarf anpassen
    End If
   
 
   
    j = j + 1
       
    If Bereich2(i, k).Text <> "" Then
    k = k + 1
    End If
   
    'Nächste Spalte in Tabelle1 auf x Eintragung prüfen
    If Bereich(i, j).Text = "x" Then
    Bereich2(i, k).Select
    ActiveCell.FormulaR1C1 = "Seminar 1009" 'Seminartitel bei Bedarf anpassen
    End If
   
   
   
    j = j + 1
       
    If Bereich2(i, k).Text <> "" Then
    k = k + 1
    End If
   
    'Nächste Spalte in Tabelle1 auf x Eintragung prüfen
    If Bereich(i, j).Text = "x" Then
    Bereich2(i, k).Select
    ActiveCell.FormulaR1C1 = "Seminar 1010" 'Seminartitel bei Bedarf anpassen
    End If
   
 
       
    j = j + 1
       
    If Bereich2(i, k).Text <> "" Then
    k = k + 1
    End If
   
    'Nächste Spalte in Tabelle1 auf x Eintragung prüfen
    If Bereich(i, j).Text = "x" Then
    Bereich2(i, k).Select
    ActiveCell.FormulaR1C1 = "Seminar 1011" 'Seminartitel bei Bedarf anpassen
    End If
   
    j = j + 1
       
    If Bereich2(i, k).Text <> "" Then
    k = k + 1
    End If
 
    'Bei Bedarf weitere Spalten auf x Eintragung prüfen
    'Kopier hier einfach den letzten "Nächste Spalte Code hier rein, pass den Seminartitel an
    'und vergiss auch nicht den Code für j und k
   
'Nächsten Mitarbeiter bearbeiten, Variable j (Tabelle1) und k (Tabelle2)werden 'wieder auf 3 (Spalte C) gesetzt - siehst du oben beim Schleifenstart
    Next i
   
End Sub


Bau ihn zunächst mal ein, erweitere ihn bei Bedarf / benenne Seminartitel um etc.
Ich habe kommentiert wo du anpassen musst/kannst.
Dann führ ihn aus, indem du ihn mit einem Button kombinierst oder indem du über Entwicklertools dein Makro startest. (Die Entwicklerttols Registerkarte ist eventuell ausgeschaltet, du findest sie unterm Office Button/Optionen/Häufig verwendet)

So du hast nun in Tabellenblatt2 Namen/Vornamen gefolgt von den Seminartiteln ohne Lücken für jeden ausgeschrieben eingetragen in den Spalten Seminar1-10 (wie gesagt bei Bedarf hast dus erweitert).

In deine Tabelle setzt du diese Seriendruckfelder nun ein:

{if Mergefield Seminar1} <>"" "{Mergefield Seminar1}" ""}

Nächste Tabellenzeile: {if Mergefield Seminar2} <>"" "{Mergefield Seminar2}" ""}

Nächste Tabellenzeile: {if Mergefield Seminar3} <>"" "{Mergefield Seminar3}" ""}

Nächste Tabellenzeile: {if Mergefield Seminar4} <>"" "{Mergefield Seminar4}" ""}

Nächste Tabellenzeile: {if Mergefield Seminar5} <>"" "{Mergefield Seminar5}" ""}

Nächste Tabellenzeile: {if Mergefield Seminar6} <>"" "{Mergefield Seminar6}" ""}

Nächste Tabellenzeile: {if Mergefield Seminar7} <>"" "{Mergefield Seminar7}" ""}

Nächste Tabellenzeile: {if Mergefield Seminar8} <>"" "{Mergefield Seminar8}" ""}

Nächste Tabellenzeile: {if Mergefield Seminar9} <>"" "{Mergefield Seminar9}" ""}

Nächste Tabellenzeile: {if Mergefield Seminar10} <>"" "{Mergefield Seminar10}" ""}

etc.

Hoffe du steigst durch, ich habs gerade fertig gestellt, auf den ersten Blick scheint alles zu funktionieren, ob ichs in VBA jetzt super effektiv programmiert hab weiß ich nicht, vielleicht könnte man den Code noch dynamischer gestalten, aber ich denke es ist brauchbar. Die Bereichsgröße kannst du jeweils großzügig angeben, wenn die Schleife keine Einträge mehr findet, kann sie auch nichts mehr übertragen. Viel Spaß damit, würd mich freuen, wenns bei dir läuft.
Flipper7
Gast


Verfasst am:
13. Jan 2014, 19:25
Rufname:

AW: Serienbrief mit variabler Anzahl Einträge - AW: Serienbrief mit variabler Anzahl Einträge

Nach oben
       Version: Office 2007

P.S. Du darfst natürlich nur kleine x'e in Tabelle1 drin haben, keine großen
sonst funktsten die if Blocks womöglich nicht richtig. Oder falls das vorkommen kann müsstest du dementsprechend das mit weiteren if Blocks die auf große X'e testen, abfangen. Hab zuerst versucht auf Eintrag/Leer zu reagieren, aber hatte so meine Schwierigkeiten mit isnull/istnotnull, =""/<> "".
Flipper7
Gast


Verfasst am:
13. Jan 2014, 19:31
Rufname:

AW: Serienbrief mit variabler Anzahl Einträge - AW: Serienbrief mit variabler Anzahl Einträge

Nach oben
       Version: Office 2007

ach so kleiner Praxistipp:

Änderungen führst du wie gewohnt in Tabelle 1 durch.

Du musst halt nur Tabelle2 wieder die Eintragungen löschen z.B. mit Strg +A und Entf.

Makro erneut ausführen und du bekommst die neusten Daten übertragen.
Flipper7
Gast


Verfasst am:
13. Jan 2014, 19:34
Rufname:

AW: Serienbrief mit variabler Anzahl Einträge - AW: Serienbrief mit variabler Anzahl Einträge

Nach oben
       Version: Office 2007

Noch was: die Exceldatei wirst du als .xlsm künftig führen müssen. (Exceldatei mit Makro)
Aber das ist das geringfügigste Problem. Speichern unter, Dateityp Excel mit Makro .xlsm und fertig.
Flipper7
Gast


Verfasst am:
14. Jan 2014, 13:07
Rufname:


AW: Serienbrief mit variabler Anzahl Einträge - AW: Serienbrief mit variabler Anzahl Einträge

Nach oben
       Version: Office 2007

ach so ich seh gerade du wollts ja eine Textausgabe falls jemand gar kein x hat, machst du so:

{if Mergefield Seminar1} <>"" "{Mergefield Seminar1}" "Kein Seminarbedarf festgestellt"}

Nächste Tabellenzeile: {if Mergefield Seminar2} <>"" "{Mergefield Seminar2}" ""}

Nächste Tabellenzeile: {if Mergefield Seminar3} <>"" "{Mergefield Seminar3}" ""}

Nächste Tabellenzeile: {if Mergefield Seminar4} <>"" "{Mergefield Seminar4}" ""}

Nächste Tabellenzeile: {if Mergefield Seminar5} <>"" "{Mergefield Seminar5}" ""}

Nächste Tabellenzeile: {if Mergefield Seminar6} <>"" "{Mergefield Seminar6}" ""}

Nächste Tabellenzeile: {if Mergefield Seminar7} <>"" "{Mergefield Seminar7}" ""}

Nächste Tabellenzeile: {if Mergefield Seminar8} <>"" "{Mergefield Seminar8}" ""}

Nächste Tabellenzeile: {if Mergefield Seminar9} <>"" "{Mergefield Seminar9}" ""}

Nächste Tabellenzeile: {if Mergefield Seminar10} <>"" "{Mergefield Seminar10}" ""}

etc.
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Word Serienbriefe: Leerzeilen im Serienbrief 1 Gaby 3948 15. Apr 2005, 16:59
Betty2004 Leerzeilen im Serienbrief
Keine neuen Beiträge Word Serienbriefe: Datum wird verdreht im Serienbrief eingefügt 1 oldy-teddy 10335 24. Feb 2005, 23:31
Amethyst Datum wird verdreht im Serienbrief eingefügt
Keine neuen Beiträge Word Serienbriefe: Serienbrief Abfrage nach Geburtsdatum 0 FrankLutti 2014 22. Feb 2005, 13:14
FrankLutti Serienbrief Abfrage nach Geburtsdatum
Keine neuen Beiträge Word Serienbriefe: Postleitzahlen in Excel für Serienbrief! 2 minitux 5360 20. Feb 2005, 21:08
minitux Postleitzahlen in Excel für Serienbrief!
Keine neuen Beiträge Word Serienbriefe: Serienbrief findet Datenquelle nicht nach Filterung d. Daten 12 excelent 7078 14. Feb 2005, 12:58
Azubine Serienbrief findet Datenquelle nicht nach Filterung d. Daten
Keine neuen Beiträge Word Serienbriefe: Verwendeter Treiber bei Serienbrief Word-Outlook 0 Office_s 1407 07. Feb 2005, 13:19
Office_s Verwendeter Treiber bei Serienbrief Word-Outlook
Keine neuen Beiträge Word Serienbriefe: Serienbrief: Drucken dauert extrem lange 1 musikus69 2944 01. Feb 2005, 18:54
McSunny Serienbrief: Drucken dauert extrem lange
Keine neuen Beiträge Word Serienbriefe: Serienbrief mit Formular verbinden 0 m.s. 1205 26. Jan 2005, 13:39
m.s. Serienbrief mit Formular verbinden
Keine neuen Beiträge Word Serienbriefe: Serienbrief drucken 4 JensSchäfer 2034 24. Jan 2005, 10:26
Gast Serienbrief drucken
Keine neuen Beiträge Word Serienbriefe: Datenquelle für Serienbrief speichern??? 0 UCADexter 1201 21. Jan 2005, 14:13
UCADexter Datenquelle für Serienbrief speichern???
Keine neuen Beiträge Word Serienbriefe: Betrag 0.00 in Serienbrief 0 shine 19 1835 02. Dez 2004, 18:43
shine 19 Betrag 0.00 in Serienbrief
Keine neuen Beiträge Word Serienbriefe: Daten aus mySQL in Word Serienbrief benutzen! 7 boennchen 15530 01. Dez 2004, 16:44
KillaServe Daten aus mySQL in Word Serienbrief benutzen!
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: CSS Forum