No feedback found for this session
Logic in Excel
excel
advanced
Session materials
- all materials
- slides
html / pdf - exercises
.xlsx / completed exercises .xlsx
Welcome
- this session is for 🌶🌶🌶 advanced Excel users, who are confident writing formulas
Acknowledgements
Sincere thanks and appreciation to people who volunteered formulas for this session:
- Laura De Jongh (Hanover Scotland)
- Gail Young (NHS Greater Glasgow & Clyde)
- Gail Donaldson (NHS Lanarkshire)
- Matthew Hooks (Scottish Ambulance Service)
- Susanna Kirk (NHS Fife)
- Hilary Guthrie (NHS Lothian)
- Irene Ventura (NHS Lanarkshire)
- Peter Wild (NHS Ayrshire & Arran)
- Chris Spratt (NHS National Services Scotland)
Session outline
- intro to logic in Excel
- five minutes of Boolean algebra
- basic logical functions (
NOT,AND,OR) - putting logical functions to work with
IFandIFS
- using logic in Excel
- dealing with errors and missing values (
IFERROR,IFNA, and friends) - managing different data types (
ISNUMBERand friends) - conditional summarising (
SUMIF,COUNTIFS, and friends) - nesting
IFstatements and future-proofing your work
- dealing with errors and missing values (
Boolean algebra
- the standard way of working with truth-values
- found all over mathematics, logic, computer science…
- think of a statement like
"my cat is blue"- call that
Pto save writing it every time
- call that
- assume that
Pis either completelyTRUEor completelyFALSE
NOT
-
NOTgives us the opposite truth-value - if
PisFALSE, thenNOT PisTRUE - a useful shorthand: the truth table:
| P | NOT P |
|---|---|
| TRUE | FALSE |
| FALSE | TRUE |
AND
- we also have functions to understand what happens when we’re dealing with two statements
-
ANDis a great example - it’sTRUEwhen both the statements areTRUE
| P | Q | P AND Q |
|---|---|---|
| TRUE | TRUE | TRUE |
| TRUE | FALSE | FALSE |
| FALSE | TRUE | FALSE |
| FALSE | FALSE | FALSE |

OR
-
ORisTRUEwhen either of the statements areTRUE
| P | Q | P OR Q |
|---|---|---|
| TRUE | TRUE | TRUE |
| TRUE | FALSE | TRUE |
| FALSE | TRUE | TRUE |
| FALSE | FALSE | FALSE |

XOR
- For completeness, we should also talk about
XOR -
XORisTRUEwhen either of the statements - but not both - areTRUE
| P | Q | P XOR Q |
|---|---|---|
| TRUE | TRUE | FALSE |
| TRUE | FALSE | TRUE |
| FALSE | TRUE | TRUE |
| FALSE | FALSE | FALSE |

NOT in Excel
- sweet relief: please open the sample workbook for this session in Excel
- have a look at the
NOTworksheet-
NOT()function inputs in the truth-table - example use about inhalers
- note that
NOT()will treat any number asTRUE, and 0 asFALSE
- note that
-
Task
- please add a formula to decide whether a person is a non-user of inhalers or not
- it should return
TRUE/FALSEbased on the number of inhalers used
AND and OR in Excel
- have a look at the
AND / ORworksheet- have a look at the truth-table for
ANDandOR - specifically, look at the formulas and the way they use
AND()andOR()
- have a look at the truth-table for
Task
- in the hypertension/diabetes table, you’ve got several rows of data where each represents a person. Please write two formulas:
- for diet and lifestyle, you’ll want to return
TRUEif a person has either hypertension and/or diabetes - for statins, you’ll want to return
TRUEis a person has both hypertension and diabetes
- for diet and lifestyle, you’ll want to return
IF
- unfortunately our data usually doesn’t come neatly coded into
TRUEandFALSE - that mean we’ll usually need to use our basic logical functions in combination with other functions
-
IFis a great example of a function that helps you convert to logical values - here’s an example formula:
=IF(B3 > 150, "Hypertension", "No hypertension")- if the value in B3 is over 150, the formula returns
"Hypertension" - otherwise it returns
"No hypertension"
- if the value in B3 is over 150, the formula returns
- this is useful in its own right, but gets even more powerful when you return logical values
- have a look at the top table on the
IFworksheet
Task
- in the
IFworksheet, there’s an incomplete table of blood pressure values - please write a formula to return
TRUEif those values are over 150, andFALSEotherwise - there’s a named cell on this sheet called
Cutoff- please now change that 150 in yourIFformula to use the value of the named cell
TRUE and FALSE are 1 and 0
- many other tools let you add up
TRUE/FALSEvalues as if they were 1s and 0s - this can be very useful - say, to quickly count matching values
- Excel needs a minor workaround: add
--before a logical value to treat it as a number:=SUM(--Table1[Hypertension?])
IFS
-
IFSallows you to check for the presence of several conditions fairly concisely - an example:
=IFS(B4 = TRUE,"High",C4 = "CRD","High", D4 > 20,"High", TRUE,"Low")- read this horror as pairs of arguments, like
B4 = TRUE,"High" - each pair contains
- a logical test - like
B4 = TRUE - a return value if that test is
TRUE- like"High"
- a logical test - like
- the final pair of arguments are a catch-all to pick up all non-matched values
- read this horror as pairs of arguments, like
Public service announcement
- just because you can, doesn’t mean you should
-
IFSget pathologically complicated - pivot tables might be better for more complicated cases
IFNA, IFERROR, and friends
- these functions are great for dealing with errors and missing values
- that’s useful, because (understatement of the decade) Excel isn’t very good at consistently dealing with errors and missing values
IS and IF functions
-
IS****functions detect errors and missing values and returnTRUE/FALSE -
IF****functions detect, and then:- if an error is found display a message of your choice
- otherwise just repeat the value they refer to
What do they detect?

The important error messages ones
- BLANK = “There’s no value in that cell”
- ERROR = “This formula doesn’t work properly”
- #N/A = “I can’t find what I was asked to find”
- ERR = “A non-N/A error has happened”
SUMIF and COUNTIF
- basically,
IFplus summary functions - three simple-ish examples to see:
-
=SUMIF(B3:F3,">5"), which totals all values in the range greater than 5 -
=COUNTIF(A10:E10,"ramipril"), which counts all occurrences of the work “ramipril” in a range - or the close relative
=COUNTIF(A10:E10,"*prazole")which uses a wildcard to count all the words ending in “prazole” from a range
-
- there’s also the more complex
SUMIFS, which allows you to sum with multiple conditions
Example applications
-
=IF(AND(B4 >= TIMEVALUE("08:30"), B4 <= TIMEVALUE("17:00")), "In hours", "Out of hours")to determine if a time is in- or out-of-hours -
=IF(LEN(B20)=9,CONCATENATE("0",B20),TEXT(B20,"0"))to re-add a dropped leading 0 from a CHI / ISBN -
=IF(ISBLANK(B26), "", B26)to elegantly reference date values to avoid returning00/01/1900for missing values -
=IF((TODAY() > DATE(YEAR(B31) + 3, MONTH(B31), DAY(B31))), "Late", "Not late")to determine if an activity has taken place in the past three years -
=FILTER(B35:B41, (C35:C41 > 4)*D35:D41>4)to find all rows with a value more than 4 in both the C and D column -
=IF(COUNTIF(B44,"*ow*"),TRUE,FALSE).IFby itself doesn’t allow wildcard matching, so you can attempt a work-around viaCOUNTIF