Startseite

Outlook | Excel | Word | PowerPoint | Adobe Acrobat DC


Pia Bork

Diese Seite wird nicht länger aktualisiert. Ich wurde gebeten, sie als Nachschlagewerk online zu lassen und so bleibt der Stand 2020 für alle verfügbar.



 

Tipps und Tricks rund um Word

 

Seriendruckfelder mit IF und OR

Im Blog habe ich schon Artikel zu einfachen Bedingungen geschrieben - die Artikel finden Sie oben rechts. In diesem Artikel geht es darum, den Inhalt von zwei Seriendruckfeldern abzufragen und dann zu reagieren.

Ausgangssituation diese Tabelle:

 

Pro Kunde werden Broschüren, Druckschriften und Publikationen in zwei Sprachen verschickt. Der Kunde bekommt eine Auflistung seiner Lieferung.

Dabei sollen Artikel nur aufgelistet werden, wenn der Wert größer als 0 ist - für Huber sollen also die Broschüren nicht erwähnt werden und für Schulze die Druckschriften nicht.

 

Für die Artikel sieht die Bedingung so aus:

{IF {MERGEFIELD B_Deutsch} = "0" "" "Broschüre Deutsch: {MERGEFIELD B_Deutsch}"}

Wenn das Seriendruck B_Deutsch gleich 0 ist, dann schreibe nichts, sonst Broschüre Deutsch und die Anzahl. Dabei ist "schreibe nichts" durch zwei Anführungszeichen "" gekennzeichnet.

Das ist aber noch nicht ganz korrekt. Denn für leere Felder wird jetzt ein Absatz erzeugt - zwei leere Einträge für Broschüren würde also mit zwei Absatzmarken enden. Das will ich nicht. Fehlt die Gruppe "Broschüren", soll einfach mit "Druckschriften" begonnen werden.

Die Absatzmarke muss in das "Sonst"-Feld vor das schließende Anführungszeichen gesetzt werden:

{IF {MERGEFIELD B_Deutsch} = "0" "" "Broschüre Deutsch: {MERGEFIELD B_Deutsch}¶
"}{IF {MERGEFIELD B_Franz} = "0" "" "Broschüre Französisch: {Mergefield B_Franz}¶
"}

Genauso soll eine Überschrift nur erscheinen, wenn auch Broschüren versandt werden. Das heißt:

Das ist etwas komplizierter, weil in einem IF-Feld innerhalb eines Seriendruckfeldes nicht direkt mit AND oder OR gearbeitert werden kann. Wir brauchen dazu noch das Feld COMPARE (eine andere Methode wird hier mit mehr als zwei Bedingungen beschrieben) und das sieht dann so aus:

{IF { = OR ( { COMPARE {MERGEFIELD B_Deutsch} > "0" }; {COMPARE {MERGEFIELD B_Franz} > "0"} ) } = 1 "Broschüren¶
" ""}

Dröseln wird das einmal auf:

{IF Wenn
{ = OR ( entweder
{COMPARE {MERGEFIELD B_Deutsch} > "0" } der Wert für B_Deutsch größer 0 ist (Wahr = 1; Falsch = 0)
  oder
{COMPARE {MERGEFIELD B_Franz} > "0" } der Wert für B_Franz größer 0 ist (Wahr = 1; Falsch = 0)
) } = 1 das Ergebnis also Wahr = 1 ist,
"Broschüren¶
"
dann schreibe "Broschüren" mit einer Absatzmarke dahinter
"" Sonst schreibe nichts

COMPARE vergleicht, ob der Inhalt des Seriendruckfeldes größer 0 ist und liefert 1 für WAHR und 0 für FALSCH. Mit OR frage ich ab, ob eines der beiden Felder einen Wert größer Null hat.

  Anzahl WAHR / FALSCH Wert
B Deutsch > 0 0 FALSCH 0
B Franz > 0 10 WAHR 1
    Ergebnis = 1

Die Bedingung ist erfüllt, eines der beiden Felder hat einen Wert größer 0 - der Titel "Broschüren" wird geschrieben. Sind beide Werte 0 und damit das Ergebnis FALSCH (0), ist die Bedingung nicht erfüllt und es wird kein Titel geschrieben.

Sie können immer testen, ob COMPARE 0 oder 1 liefert. Lassen Sie mit ALT+F9 alle Feldfunktionen anzeigen. Markieren Sie die Funktion COMPARE und klicken Sie mit der rechten Maustaste in diese Teilfunktion. Wählen Sie "Feldfunktion ein/aus".

 

Es wird nur dieser Teil der gesamten Funktion ausgerechnet - und eine 0 oder eine 1 angezeigt. Fahren Sie mit der zweiten COMPARE-Funktion fort.

Beide COMPARE-Felder sind errechnet und liefern 1 und 0. Das Gesamtergebnis ist 1 = WAHR.

 

Hinweise:

Die gesamte Datei können Sie natürlich herunterladen und sich das Feld direkt anschauen. Der Link zum Download steht oben (Excel-Tabelle und Word-Dokument, gezippt).

03.04.2015

Achtung!

Die geschweiften Klammern nicht tippen, sondern mit STRG+F9 erzeugen. Zum Umgang mit Feldern lesen Sie hier.

Weiteres zu IF

IF mit mehreren Bedigungen

Zwei Anreden
Drei Anreden
Straße oder Postfach
Leere Absätze unterdrücken

Download

Excel-Tabelle und Word-Dokument (Gezippt)