A Microsoft Office (Excel, Word) forum. OfficeFrustration

If this is your first visit, be sure to check out the FAQ by clicking the link above. You may have to register before you can post: click the register link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below.

Go Back   Home » OfficeFrustration forum » Microsoft Word » Mailmerge
Site Map Home Register Authors List Search Today's Posts Mark Forums Read  

If-then-else with "or" command



 
 
Thread Tools Display Modes
  #1  
Old August 21st, 2009, 09:44 PM posted to microsoft.public.word.mailmerge.fields
Arden[_2_]
external usenet poster
 
Posts: 11
Default If-then-else with "or" command

The goal is I am wanting to use an If-then-else statement where the If is
compared to a group of 3 values and I haven't found how to do this in one
statement. For example, I think it should look like: If code = (1 or 2 or 3)
then "TEXT1" "TEXT2". I don't want to use If code = 1 "TEXT1" "If code = 2
"TEXT1" ... etc for a nested if with the same text to maintain multiple
times.

When I posed this question to an online expert, I was directed to the "=OR"
function with the COMPARE statement. It looks like it should work, but I
can't get Microsoft's example code from Help to work: { IF { = OR ( { COMPARE
{ MERGEFIELD CustomerNumber } = 4 }, { COMPARE { MERGEFIELD CustomerRating }
= 9 } ) } = 1 "Credit not acceptable" "Credit acceptable"}

What advice can you offer? Thanks!

  #2  
Old August 22nd, 2009, 12:08 AM posted to microsoft.public.word.mailmerge.fields
Doug Robbins - Word MVP
external usenet poster
 
Posts: 8,239
Default If-then-else with "or" command

Use the following construction

{ IF { COMPARE { IF { = { MERGEFIELD CustomerNumber } } = { = 4 } 1 0 } =
{ IF { = { MERGEFIELD CustomerRating } } = { = 9 } 1 0 } = 1 "Credit not
acceptable" "Credit acceptable"}


--
Hope this helps.

Please reply to the newsgroup unless you wish to avail yourself of my
services on a paid consulting basis.

Doug Robbins - Word MVP, originally posted via msnews.microsoft.com
"Arden" wrote in message
...
The goal is I am wanting to use an If-then-else statement where the If is
compared to a group of 3 values and I haven't found how to do this in one
statement. For example, I think it should look like: If code = (1 or 2 or
3)
then "TEXT1" "TEXT2". I don't want to use If code = 1 "TEXT1" "If code = 2
"TEXT1" ... etc for a nested if with the same text to maintain multiple
times.

When I posed this question to an online expert, I was directed to the
"=OR"
function with the COMPARE statement. It looks like it should work, but I
can't get Microsoft's example code from Help to work: { IF { = OR ( {
COMPARE
{ MERGEFIELD CustomerNumber } = 4 }, { COMPARE { MERGEFIELD
CustomerRating }
= 9 } ) } = 1 "Credit not acceptable" "Credit acceptable"}

What advice can you offer? Thanks!


  #3  
Old August 24th, 2009, 02:45 PM posted to microsoft.public.word.mailmerge.fields
Arden[_2_]
external usenet poster
 
Posts: 11
Default If-then-else with "or" command

Thanks for taking the time to reply. The result I get is closer, but it's not
yet complete:

Cust # 4 Cust Rate 2
{ IF { COMPARE { IF { = 4} = { = 4 } 1 0 } =
{ IF { = 2} = { = 9 } 1 0 } = 1 "Credit not
acceptable" "Credit acceptable"}

when the CustomerNumber = 4 and the CustomerRate = 2.

A little more help?


"Arden" wrote:

The goal is I am wanting to use an If-then-else statement where the If is
compared to a group of 3 values and I haven't found how to do this in one
statement. For example, I think it should look like: If code = (1 or 2 or 3)
then "TEXT1" "TEXT2". I don't want to use If code = 1 "TEXT1" "If code = 2
"TEXT1" ... etc for a nested if with the same text to maintain multiple
times.

When I posed this question to an online expert, I was directed to the "=OR"
function with the COMPARE statement. It looks like it should work, but I
can't get Microsoft's example code from Help to work: { IF { = OR ( { COMPARE
{ MERGEFIELD CustomerNumber } = 4 }, { COMPARE { MERGEFIELD CustomerRating }
= 9 } ) } = 1 "Credit not acceptable" "Credit acceptable"}

What advice can you offer? Thanks!

  #4  
Old August 24th, 2009, 03:19 PM posted to microsoft.public.word.mailmerge.fields
Graham Mayor
external usenet poster
 
Posts: 18,297
Default If-then-else with "or" command

There's a simpler way of testing for results in one of more fields. See
'Testing for a value in one of several fields' at
http://www.gmayor.com/formatting_word_fields.htm

Based on that model, to test whether a Mergefield Code contains the value of
1, 2 or 3 try the following

{ IF{ =({ IF{ MERGEFIELD Code } = "1" 1 0 } + { IF{ MERGEFIELD Code } = "2"
1 0 } + { IF{ MERGEFIELD Code } = "3" 1 0 }) } = 1 "Credit Acceptable"
"Credit Not Acceptable" }


--

Graham Mayor - Word MVP

My web site www.gmayor.com
Word MVP web site http://word.mvps.org



Arden wrote:
Thanks for taking the time to reply. The result I get is closer, but
it's not yet complete:

Cust # 4 Cust Rate 2
{ IF { COMPARE { IF { = 4} = { = 4 } 1 0 } =
{ IF { = 2} = { = 9 } 1 0 } = 1 "Credit not
acceptable" "Credit acceptable"}

when the CustomerNumber = 4 and the CustomerRate = 2.

A little more help?


"Arden" wrote:

The goal is I am wanting to use an If-then-else statement where the
If is compared to a group of 3 values and I haven't found how to do
this in one statement. For example, I think it should look like: If
code = (1 or 2 or 3) then "TEXT1" "TEXT2". I don't want to use If
code = 1 "TEXT1" "If code = 2 "TEXT1" ... etc for a nested if with
the same text to maintain multiple times.

When I posed this question to an online expert, I was directed to
the "=OR" function with the COMPARE statement. It looks like it
should work, but I can't get Microsoft's example code from Help to
work: { IF { = OR ( { COMPARE { MERGEFIELD CustomerNumber } = 4 },
{ COMPARE { MERGEFIELD CustomerRating } = 9 } ) } = 1 "Credit not
acceptable" "Credit acceptable"}

What advice can you offer? Thanks!



  #5  
Old August 24th, 2009, 03:41 PM posted to microsoft.public.word.mailmerge.fields
Peter Jamieson
external usenet poster
 
Posts: 4,550
Default If-then-else with "or" command

The original example should work, which suggests that you may not be
entering it correctly.

Typically, it's easier to insert these nested fields "by hand" using
a. ctrl-F9 to insert each pair of the special "field braces" {} (the
ordinary ones on the keyboard do not work)
b. alt-F9 to toggle between "field code" and "field results" view.
c. select one of the "nested" fields inside the IF and use shift-F9 to
toggle just that field so you can see its result.

The goal is I am wanting to use an If-then-else statement where the

If is
compared to a group of 3 values and I haven't found how to do this

in one
statement. For example, I think it should look like: If code = (1 or

2 or 3)
then "TEXT1" "TEXT2". I don't want to use If code = 1 "TEXT1" "If

code = 2
"TEXT1" ... etc for a nested if with the same text to maintain multiple
times.


{ IF { ={ COMPARE code = 1 }+{ COMPARE code = 2 }+{ COMPARE code = 3 } }
0 "code is one of 1,2, or 3" "code is none of 1,2, or 3" }


precisely what you put for "code" depends on what kind of thing "code"
is - if it's a mergefield, you would either need to use { MERGEFIELD
code } instead of code, i.e.

{ IF { ={ COMPARE { MERGEFIELD code } = 1 }+{ COMPARE { MERGEFIELD code
} = 2 }+{ COMPARE { MERGEFIELD code } = 3 } } 0 "code is one of 1,2,
or 3" "code is none of 1,2, or 3" }

or set a bookmark prior to the comparison and use that instead, e.g.

{ SET code2 { MERGEFIELD code } }{ IF { ={ COMPARE { MERGEFIELD code2 =
1 }+{ COMPARE code2 = 2 }+{ COMPARE code2 = 3 } } 0 "code is one of
1,2, or 3" "code is none of 1,2, or 3" }


Peter Jamieson
http://tips.pjmsn.me.uk

Arden wrote:
Thanks for taking the time to reply. The result I get is closer, but it's not
yet complete:

Cust # 4 Cust Rate 2
{ IF { COMPARE { IF { = 4} = { = 4 } 1 0 } =
{ IF { = 2} = { = 9 } 1 0 } = 1 "Credit not
acceptable" "Credit acceptable"}

when the CustomerNumber = 4 and the CustomerRate = 2.

A little more help?


"Arden" wrote:

The goal is I am wanting to use an If-then-else statement where the If is
compared to a group of 3 values and I haven't found how to do this in one
statement. For example, I think it should look like: If code = (1 or 2 or 3)
then "TEXT1" "TEXT2". I don't want to use If code = 1 "TEXT1" "If code = 2
"TEXT1" ... etc for a nested if with the same text to maintain multiple
times.

When I posed this question to an online expert, I was directed to the "=OR"
function with the COMPARE statement. It looks like it should work, but I
can't get Microsoft's example code from Help to work: { IF { = OR ( { COMPARE
{ MERGEFIELD CustomerNumber } = 4 }, { COMPARE { MERGEFIELD CustomerRating }
= 9 } ) } = 1 "Credit not acceptable" "Credit acceptable"}

What advice can you offer? Thanks!

  #6  
Old August 24th, 2009, 04:43 PM posted to microsoft.public.word.mailmerge.fields
Arden[_2_]
external usenet poster
 
Posts: 11
Default If-then-else with "or" command

thanks for your post and your website. I still do not seem to achieve
success, even when using your example, coding:

{ IF { =( { IF A = “A” 1 0 } + { IF A = “B” 1 0 } + { IF A = “C” 1 0 } ) }
= 1 “True” “False” }


When I run the merge, the output shows:

{ IF { =( { IF A = “A” 1 0 } + { IF A = “B” 1 0 } + { IF A = “C” 1 0 } ) }
= 1 “True” “False” }


where the A's, above, represent the data in the table. Why doesn't the
expression fully resolve and just print "True"?

Thanks.

"Peter Jamieson" wrote:

The original example should work, which suggests that you may not be
entering it correctly.

Typically, it's easier to insert these nested fields "by hand" using
a. ctrl-F9 to insert each pair of the special "field braces" {} (the
ordinary ones on the keyboard do not work)
b. alt-F9 to toggle between "field code" and "field results" view.
c. select one of the "nested" fields inside the IF and use shift-F9 to
toggle just that field so you can see its result.

The goal is I am wanting to use an If-then-else statement where the

If is
compared to a group of 3 values and I haven't found how to do this

in one
statement. For example, I think it should look like: If code = (1 or

2 or 3)
then "TEXT1" "TEXT2". I don't want to use If code = 1 "TEXT1" "If

code = 2
"TEXT1" ... etc for a nested if with the same text to maintain multiple
times.


{ IF { ={ COMPARE code = 1 }+{ COMPARE code = 2 }+{ COMPARE code = 3 } }
0 "code is one of 1,2, or 3" "code is none of 1,2, or 3" }


precisely what you put for "code" depends on what kind of thing "code"
is - if it's a mergefield, you would either need to use { MERGEFIELD
code } instead of code, i.e.

{ IF { ={ COMPARE { MERGEFIELD code } = 1 }+{ COMPARE { MERGEFIELD code
} = 2 }+{ COMPARE { MERGEFIELD code } = 3 } } 0 "code is one of 1,2,
or 3" "code is none of 1,2, or 3" }

or set a bookmark prior to the comparison and use that instead, e.g.

{ SET code2 { MERGEFIELD code } }{ IF { ={ COMPARE { MERGEFIELD code2 =
1 }+{ COMPARE code2 = 2 }+{ COMPARE code2 = 3 } } 0 "code is one of
1,2, or 3" "code is none of 1,2, or 3" }


Peter Jamieson
http://tips.pjmsn.me.uk

Arden wrote:
Thanks for taking the time to reply. The result I get is closer, but it's not
yet complete:

Cust # 4 Cust Rate 2
{ IF { COMPARE { IF { = 4} = { = 4 } 1 0 } =
{ IF { = 2} = { = 9 } 1 0 } = 1 "Credit not
acceptable" "Credit acceptable"}

when the CustomerNumber = 4 and the CustomerRate = 2.

A little more help?


"Arden" wrote:

The goal is I am wanting to use an If-then-else statement where the If is
compared to a group of 3 values and I haven't found how to do this in one
statement. For example, I think it should look like: If code = (1 or 2 or 3)
then "TEXT1" "TEXT2". I don't want to use If code = 1 "TEXT1" "If code = 2
"TEXT1" ... etc for a nested if with the same text to maintain multiple
times.

When I posed this question to an online expert, I was directed to the "=OR"
function with the COMPARE statement. It looks like it should work, but I
can't get Microsoft's example code from Help to work: { IF { = OR ( { COMPARE
{ MERGEFIELD CustomerNumber } = 4 }, { COMPARE { MERGEFIELD CustomerRating }
= 9 } ) } = 1 "Credit not acceptable" "Credit acceptable"}

What advice can you offer? Thanks!


  #7  
Old August 24th, 2009, 05:06 PM posted to microsoft.public.word.mailmerge.fields
Arden[_2_]
external usenet poster
 
Posts: 11
Default If-then-else with "or" command

Thanks for taking the time to teach me about the Ctrl F9!!!



"Arden" wrote:

thanks for your post and your website. I still do not seem to achieve
success, even when using your example, coding:

{ IF { =( { IF A = “A” 1 0 } + { IF A = “B” 1 0 } + { IF A = “C” 1 0 } ) }
= 1 “True” “False” }


When I run the merge, the output shows:

{ IF { =( { IF A = “A” 1 0 } + { IF A = “B” 1 0 } + { IF A = “C” 1 0 } ) }
= 1 “True” “False” }


where the A's, above, represent the data in the table. Why doesn't the
expression fully resolve and just print "True"?

Thanks.

"Peter Jamieson" wrote:

The original example should work, which suggests that you may not be
entering it correctly.

Typically, it's easier to insert these nested fields "by hand" using
a. ctrl-F9 to insert each pair of the special "field braces" {} (the
ordinary ones on the keyboard do not work)
b. alt-F9 to toggle between "field code" and "field results" view.
c. select one of the "nested" fields inside the IF and use shift-F9 to
toggle just that field so you can see its result.

The goal is I am wanting to use an If-then-else statement where the

If is
compared to a group of 3 values and I haven't found how to do this

in one
statement. For example, I think it should look like: If code = (1 or

2 or 3)
then "TEXT1" "TEXT2". I don't want to use If code = 1 "TEXT1" "If

code = 2
"TEXT1" ... etc for a nested if with the same text to maintain multiple
times.


{ IF { ={ COMPARE code = 1 }+{ COMPARE code = 2 }+{ COMPARE code = 3 } }
0 "code is one of 1,2, or 3" "code is none of 1,2, or 3" }


precisely what you put for "code" depends on what kind of thing "code"
is - if it's a mergefield, you would either need to use { MERGEFIELD
code } instead of code, i.e.

{ IF { ={ COMPARE { MERGEFIELD code } = 1 }+{ COMPARE { MERGEFIELD code
} = 2 }+{ COMPARE { MERGEFIELD code } = 3 } } 0 "code is one of 1,2,
or 3" "code is none of 1,2, or 3" }

or set a bookmark prior to the comparison and use that instead, e.g.

{ SET code2 { MERGEFIELD code } }{ IF { ={ COMPARE { MERGEFIELD code2 =
1 }+{ COMPARE code2 = 2 }+{ COMPARE code2 = 3 } } 0 "code is one of
1,2, or 3" "code is none of 1,2, or 3" }


Peter Jamieson
http://tips.pjmsn.me.uk

Arden wrote:
Thanks for taking the time to reply. The result I get is closer, but it's not
yet complete:

Cust # 4 Cust Rate 2
{ IF { COMPARE { IF { = 4} = { = 4 } 1 0 } =
{ IF { = 2} = { = 9 } 1 0 } = 1 "Credit not
acceptable" "Credit acceptable"}

when the CustomerNumber = 4 and the CustomerRate = 2.

A little more help?


"Arden" wrote:

The goal is I am wanting to use an If-then-else statement where the If is
compared to a group of 3 values and I haven't found how to do this in one
statement. For example, I think it should look like: If code = (1 or 2 or 3)
then "TEXT1" "TEXT2". I don't want to use If code = 1 "TEXT1" "If code = 2
"TEXT1" ... etc for a nested if with the same text to maintain multiple
times.

When I posed this question to an online expert, I was directed to the "=OR"
function with the COMPARE statement. It looks like it should work, but I
can't get Microsoft's example code from Help to work: { IF { = OR ( { COMPARE
{ MERGEFIELD CustomerNumber } = 4 }, { COMPARE { MERGEFIELD CustomerRating }
= 9 } ) } = 1 "Credit not acceptable" "Credit acceptable"}

What advice can you offer? Thanks!


  #8  
Old August 24th, 2009, 06:17 PM posted to microsoft.public.word.mailmerge.fields
Peter Jamieson
external usenet poster
 
Posts: 4,550
Default If-then-else with "or" command

{ IF { =( { IF A = “A” 1 0 } + { IF A = “B” 1 0 } + { IF A = “C” 1 0
} ) }
= 1 “True” “False” }


should be

{ IF { =( { IF A = “A” 1 0 } + { IF A = “B” 1 0 } + { IF A = “C” 1 0 } )
} 0 “True” “False” }

Peter Jamieson

http://tips.pjmsn.me.uk

Arden wrote:
thanks for your post and your website. I still do not seem to achieve
success, even when using your example, coding:

{ IF { =( { IF A = “A” 1 0 } + { IF A = “B” 1 0 } + { IF A = “C” 1 0 } ) }
= 1 “True” “False” }


When I run the merge, the output shows:

{ IF { =( { IF A = “A” 1 0 } + { IF A = “B” 1 0 } + { IF A = “C” 1 0 } ) }
= 1 “True” “False” }


where the A's, above, represent the data in the table. Why doesn't the
expression fully resolve and just print "True"?

Thanks.

"Peter Jamieson" wrote:

The original example should work, which suggests that you may not be
entering it correctly.

Typically, it's easier to insert these nested fields "by hand" using
a. ctrl-F9 to insert each pair of the special "field braces" {} (the
ordinary ones on the keyboard do not work)
b. alt-F9 to toggle between "field code" and "field results" view.
c. select one of the "nested" fields inside the IF and use shift-F9 to
toggle just that field so you can see its result.

The goal is I am wanting to use an If-then-else statement where the

If is
compared to a group of 3 values and I haven't found how to do this

in one
statement. For example, I think it should look like: If code = (1 or

2 or 3)
then "TEXT1" "TEXT2". I don't want to use If code = 1 "TEXT1" "If

code = 2
"TEXT1" ... etc for a nested if with the same text to maintain multiple
times.


{ IF { ={ COMPARE code = 1 }+{ COMPARE code = 2 }+{ COMPARE code = 3 } }
0 "code is one of 1,2, or 3" "code is none of 1,2, or 3" }


precisely what you put for "code" depends on what kind of thing "code"
is - if it's a mergefield, you would either need to use { MERGEFIELD
code } instead of code, i.e.

{ IF { ={ COMPARE { MERGEFIELD code } = 1 }+{ COMPARE { MERGEFIELD code
} = 2 }+{ COMPARE { MERGEFIELD code } = 3 } } 0 "code is one of 1,2,
or 3" "code is none of 1,2, or 3" }

or set a bookmark prior to the comparison and use that instead, e.g.

{ SET code2 { MERGEFIELD code } }{ IF { ={ COMPARE { MERGEFIELD code2 =
1 }+{ COMPARE code2 = 2 }+{ COMPARE code2 = 3 } } 0 "code is one of
1,2, or 3" "code is none of 1,2, or 3" }


Peter Jamieson
http://tips.pjmsn.me.uk

Arden wrote:
Thanks for taking the time to reply. The result I get is closer, but it's not
yet complete:

Cust # 4 Cust Rate 2
{ IF { COMPARE { IF { = 4} = { = 4 } 1 0 } =
{ IF { = 2} = { = 9 } 1 0 } = 1 "Credit not
acceptable" "Credit acceptable"}

when the CustomerNumber = 4 and the CustomerRate = 2.

A little more help?


"Arden" wrote:

The goal is I am wanting to use an If-then-else statement where the If is
compared to a group of 3 values and I haven't found how to do this in one
statement. For example, I think it should look like: If code = (1 or 2 or 3)
then "TEXT1" "TEXT2". I don't want to use If code = 1 "TEXT1" "If code = 2
"TEXT1" ... etc for a nested if with the same text to maintain multiple
times.

When I posed this question to an online expert, I was directed to the "=OR"
function with the COMPARE statement. It looks like it should work, but I
can't get Microsoft's example code from Help to work: { IF { = OR ( { COMPARE
{ MERGEFIELD CustomerNumber } = 4 }, { COMPARE { MERGEFIELD CustomerRating }
= 9 } ) } = 1 "Credit not acceptable" "Credit acceptable"}

What advice can you offer? Thanks!

 




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is Off
HTML code is Off
Forum Jump


All times are GMT +1. The time now is 05:30 PM.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright 2004-2024 OfficeFrustration.
The comments are property of their posters.