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:
- Sind Werte für Deutsch und Französisch angegeben, erscheint der Titel darüber
- Ist nur ein Wert angegeben, erscheint der Titel darüber
- Ist weder ein Wert für Deutsch noch für Französisch angegeben, erscheint kein Titel und auch kein leerer Absatz.
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:
- IF mit MERGEFIELD kann für sich alleine direkt verwendet
- IF mit MERGEFIELD und AND/OR kann nicht direkt verwendet werden
- bei zwei Bedingungen eignet sich COMPARE als Hilfsfunktion
- bei mehr als zwei Bedingungen kann COMPARE nicht verwendet werden - dafür gibt es hier ein Beispiel
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