## Logical

All logical functions evaluate the existence of a Boolean value TRUE or FALSE value, and comprise of a logical_test based on a comparison operator.

## Comparison operators

Excel comparison operators | Description |
---|---|

= equals (eq) |
Returns TRUE if Value1 is equal to Value2. eg. Value1=Value2 |

< less than (lt) |
Returns TRUE if Value1 is less than Value2. eg. Value1<Value2 |

> greater than (gt) |
Returns TRUE if Value1 is greater than Value2. eg. Value1>Value2 |

<= less than or equals (lte) |
Returns TRUE if Value1 is less than or equal to Value2. eg. Value1<=Value2 |

>= greater than or equals (gte) |
Returns TRUE if Value1 is greater than or equal to Value2. eg. Value1>=Value2 |

<> not equal (ne) |
Returns TRUE if Value1 is not equal to Value2. eg. Value1<>Value2 |

## Logical functions

Logical functions are grouped under the Logical category in the Excel function library, and the Insert Function dialog box.

Excel logical functions | Description |
---|---|

IF |
Returns one value if the logical test is TRUE, and another value if the logical test is FALSE |

AND |
Returns TRUE if all arguments return TRUE |

OR |
Returns TRUE if any argument returns TRUE |

XOR[eXclusive OR; New in Excel 2013] |
Returns the logical Exclusive Or of all arguments |

TRUE |
Returns the logical value TRUE |

FALSE |
Returns the logical value FALSE |

NOT |
Returns the reverse of its logical argument |

## Examples

### IF function

- IF function
- SYNTAX:
`IF(logical_test, [value_if_true] [,value_if_false])`

Example: Suppose that the vector named \(Vector\) contains the series \(\{1,2,…9,10\}\) with count of 10 and average value of 5.5. We will now use a series of logical tests to determine if the values 3, and 7 are less than the average, 5.5.

**Logical**`=3<AVERAGE(Vector)`

returns TRUE`=7<AVERAGE(Vector)`

returns FALSE

The IF function has optional arguments, but is most commonly used with three arguments.

**IF (one argument)**`=IF(3<AVERAGE(Vector),)`

returns 0`=IF(7<AVERAGE(Vector),)`

returns FALSE- IF with one argument provides NO advantages compared to the simple logical operator statement above.
- In addition, IF with one argument requires a trailing comma, this is rather unusual; and if the logical_test is TRUE, the function returns 0 (ZERO), rather than the logical TRUE

**IF (two arguments)**`=IF(3<AVERAGE(Vector),"Low")`

returns the text string Low`=IF(7<AVERAGE(Vector),"Low")`

returns FALSE because the third argument has been omitted

**IF (three arguments)**`=IF(3<AVERAGE(Vector),"Low","High")`

returns the text string Low`=IF(7<AVERAGE(Vector),"Low","High")`

returns the text string High

### Nested IF functions

A example – a university handbook describes the marks and grades relationship as shown in figure 1.

Mapping marks to grades, from figure 1, using the worksheet IF function.

- In this section, the IF structure is written is ascending order – to mimic the structure of a VLOOKUP function nearest match
- Formula:
`=IF(Marks<50,"N",IF(Marks<65,"P",IF(Marks<70,"H3",IF(Marks<75,"H2B",IF(Marks<80,"H2A","H1")))))`

, as an array formula, with a test vector named Marks. The array formula for the Grades is a 13 x 1 target, based on the dimensions of the Marks array - Each nested IF structure returns the first TRUE test then exists
- Excel permits 64 levels of nesting. The marks grades example contains 5 IF functions - with 4 levels of nesting
- In general, if the statements include more than 3 or 4 nesting levels, it is easier to use a Lookup and Reference function, or use a VBA procedure

### AND function w/ the TRUE function and FALSE function

- TRUE function
- SYNTAX:
`TRUE()`

- FALSE function
- SYNTAX:
`FALSE()`

- AND function -
**ALL**TRUE - SYNTAX:
`AND(logical1, [logical2], ...)`

`=AND(TRUE(),TRUE(),TRUE()`

returns a logical TRUE`=AND(TRUE(),TRUE(),FALSE())`

returns a logical FALSE`=AND(FALSE(),FALSE(),FALSE())`

returns a logical FALSE

### OR function

- OR function -
**ANY ONE**TRUE - SYNTAX:
`OR(logical1, [logical2], ...)`

`=OR(TRUE(),TRUE(),TRUE())`

returns a logical TRUE`=OR(TRUE(),TRUE(),FALSE())`

returns a logical TRUE`=OR(FALSE(),FALSE(),FALSE())`

returns a logical FALSE

`=OR(TRUE(),TRUE())`

returns a logical TRUE`=OR(TRUE(),FALSE())`

returns a logical TRUE`=OR(FALSE(),FALSE())`

returns a logical FALSE

Logically, an OR function should return TRUE when one OR the other of two functions is TRUE. In Excel, this functionality was introduced with the XOR (Exclusive Or) function. This is shown by comparing points 1 to 3 (above) using OR, to points 4 to 6 (below) using XOR.

### XOR function

- XOR function -
**only ONE**TRUE - SYNTAX:
`OR(logical1, [logical2], ...)`

`=XOR(TRUE(),TRUE())`

returns a logical FALSE`=XOR(TRUE(),FALSE())`

returns a logical TRUE`=XOR(FALSE(),FALSE())`

returns a logical FALSE

### Comparison AND, OR, and XOR

### NOT function

The NOT function is useful when it is easier to write a particular logical test, then reverse the answer. An example is an advanced filter criteria for data filtering.

- NOT function
- SYNTAX:
`NOT(logical)`

`=NOT(TRUE())`

returns a logical FALSE`=NOT("up"="down")`

returns a logical TRUE