What is IIF in Tableau?

Cody Schneider8 min read

The IIF function is one of the simplest and most useful tools in your Tableau toolkit for making your data work for you. It lets you create quick logical statements to categorize, label, or clean up your data fields right within a calculated field. This article will walk you through exactly what IIF is, how to use it, and give you practical examples you can start using today.

GraphedGraphed

Build AI Agents for Marketing

Build virtual employees that run your go to market. Connect your data sources, deploy autonomous agents, and grow your company.

Watch Graphed demo video

What Exactly is the IIF Function in Tableau?

Think of IIF as an immediate, single-line "if, then, else" statement. It checks if a condition is true, and then returns one value if it is, and another value if it's not. It's concise, easy to read, and perfect for binary (two-outcome) decisions inside your visualizations.

The syntax is straightforward:

IIF(test, then, else, [unknown])

Let’s break that down:

  • test: This is the condition you want to evaluate. It must be something that results in a TRUE or FALSE answer. For example, SUM([Sales]) > 10000, [Category] = "Office Supplies", or ISNULL([Region]).
  • then: This is the value that the function will return if your test is TRUE. This can be text (a string), a number, or another field value.
  • else: This is the value the function will return if your test is FALSE.
  • [unknown] (optional): This is the value the function returns if your test yields a NULL or unknown result. In many cases, you can leave this blank.

For example, if you wanted to label all sales orders over $500 as "Large Order," you could write a simple statement. The test would be [Sales] > 500. The then value would be the text "Large Order." And the else value would be "Small Order." All in one clean line.

IIF vs. IF-THEN-ELSEIF: What's the Difference?

If you've spent any time working with logic in Tableau, you've likely seen the classic IF/THEN/ELSE structure. So why do you need IIF if you already have that?

The primary difference is simplicity and purpose. The IIF function is designed for a single condition with two outcomes. The traditional IF/THEN/ELSEIF/ELSE/END structure is built for more complex scenarios with multiple branching conditions.

Let's look at the syntax side-by-side.

For a simple binary check:

IIF([Profit] > 0, 'Profitable', 'Not Profitable')

Using IF/THEN:

IF [Profit] > 0 THEN
'Profitable'
ELSE
'Not Profitable'
END

As you can see, for basic checks, IIF is cleaner and quicker to write. But what if you wanted to check multiple profit levels - Profitable, Breaking Even, and Unprofitable? This is where the traditional IF/THEN structure shines:

IF [Profit] > 0 THEN
'Profitable'
ELSEIF [Profit] = 0 THEN
'Breaking Even'
ELSE
'Unprofitable'
END

Trying to recreate that with IIF would require nesting multiple IIF statements inside one another, which can become difficult to read and manage:

IIF([Profit] > 0, 'Profitable', IIF([Profit] = 0, 'Breaking Even', 'Unprofitable'))

A simple rule of thumb:

  • Use IIF when you need a quick, single check that results in one of two outcomes.
  • Use IF/THEN/ELSEIF when you have more than two possible outcomes or need to check multiple conditions in sequence.

Free PDF · the crash course

AI Agents for Marketing Crash Course

Learn how to deploy AI marketing agents across your go-to-market — the best tools, prompts, and workflows to turn your data into autonomous execution without writing code.

Practical Use Cases for Tableau's IIF Function

The best way to understand IIF is to see it in action. Here are a few common, real-world examples that business owners, marketers, and analysts face every day.

Step 1: Create a Calculated Field

For all these examples, you'll start the same way: right-click in the Data pane (the left-hand sidebar) and select Create Calculated Field. This will open a window where you can name your field and type in your formula.

Use Case 1: Categorizing Sales Performance

Goal: You want to quickly group individual sales reps into two buckets: those who met their quarterly sales goal of $50,000 and those who didn't.

In your new calculated field, name it "Sales Status" and enter this formula:

IIF(SUM([Sales]) >= 50000, "Goal Met", "Below Goal")

How it works:

  • The test is SUM([Sales]) >= 50000. Tableau looks at the total sales for a given dimension (like a sales rep) and checks if it's greater than or equal to $50,000.
  • If it's TRUE, it returns the text string "Goal Met."
  • If it's FALSE, it returns "Below Goal."

Now, you can drag your "Sales Rep Name" field to Rows and drag this new "Sales Status" field to the Color mark on the Marks card. Instantly, your sales report becomes color-coded based on performance, making it simple to see who is hitting their numbers.

Use Case 2: Data Cleaning and Handling NULLs

Goal: Your dataset for customer location has some empty (NULL) values in the "City" field, and you want to replace them with something more descriptive so it doesn't mess up your maps or charts.

Create a calculated field named "City (Cleaned)" and use this formula:

IIF(ISNULL([City]), "Unknown", [City])

How it works:

  • This formula uses another function, ISNULL(), as its test. ISNULL([City]) checks if the "City" field for a particular row is empty.
  • If it's TRUE (meaning the field is null), it returns the string "Unknown."
  • If it's FALSE (meaning there's already a city name), it returns the original value from the [City] field.

Now, when you build a visualization using "City (Cleaned)" instead of the original "City" field, all those empty data points will be neatly grouped into a single "Unknown" category instead of throwing errors or appearing as a blank spot in your dashboard.

GraphedGraphed

Build AI Agents for Marketing

Build virtual employees that run your go to market. Connect your data sources, deploy autonomous agents, and grow your company.

Watch Graphed demo video

Use Case 3: Creating Boolean Flags for Filtering

Goal: You want to create a simple TRUE/FALSE flag to identify high-value orders defined as those greater than $1,000. These kinds of flags are incredibly handy for creating filters.

Create a calculated field named "Is High-Value Order?" and enter the formula:

IIF([Sales] > 1000, TRUE, FALSE)

Pro Tip: Technically, you could just write [Sales] > 1000, as that expression returns TRUE or FALSE on its own. Using IIF makes your code more explicit and easier for others on your team to read and understand.

How it works:

This is a classic flagging formula. If an individual order's sales amount is over $1,000, it assigns the value TRUE, otherwise, it assigns FALSE. You can now drag this "Is High-Value Order?" field to your Filters shelf and select "True" to focus your entire dashboard on only your most valuable transactions.

Use Case 4: Making Dynamic Labels

Goal: You have a bar chart showing sales by category. You want to label the bars with their total sales amount, but only for categories that sold more than a certain amount (e.g., $100,000) to avoid a cluttered view.

Create a calculated field called "Big Sales Label" and use this formula:

IIF(SUM([Sales]) > 100000, SUM([Sales]), NULL)

How it works:

  • The test checks if a category's total sales exceeds $100,000.
  • If TRUE, it returns the actual SUM([Sales]) value.
  • If FALSE, it returns NULL. Tableau doesn't display labels for NULL values, making the label disappear.

Now, drag this Big Sales Label field onto the Label mark on your Marks card. The sales figures will only appear on the bars representing your top-performing categories, cleaning up your visualization instantly.

Common IIF Mistakes and How to Fix Them

When you're starting out, it's easy to run into a few common errors. Here are the main ones to watch out for.

Free PDF · the crash course

AI Agents for Marketing Crash Course

Learn how to deploy AI marketing agents across your go-to-market — the best tools, prompts, and workflows to turn your data into autonomous execution without writing code.

1. Mismatched Data Types

Tableau requires the then and else parts of an IIF statement to be the same data type. You can't return a text string for a TRUE result and a number for a FALSE result.

Incorrect Formula:

IIF(SUM([Sales]) > 5000, "Big Sale", [Record Count])

This will cause an error because "Big Sale" is a string, and [Record Count] is a number (integer).

Solution: Ensure both outputs are the same type. If you need to include a number as a string, wrap it in the STR() function.

IIF(SUM([Sales]) > 5000, "Big Sale", STR([Record Count]))

2. Aggregation Errors

Forgetting to use aggregations (like SUM, AVG, MIN, MAX) in your test condition can lead to an error that complains about mixing aggregate and non-aggregate values.

Incorrect Formula:

IIF([Sales] > 50000, SUM([Profit]), SUM([Shipping Cost]))

This fails because [Sales] is used as a non-aggregate (row-level) value in the test, while the outputs are aggregated. Tableau gets confused about whether you're trying to perform the calculation for each row or for a rolled-up view.

Solution: If you're comparing against an aggregate, make sure your test condition is also aggregated.

IIF(SUM([Sales]) > 50000, SUM([Profit]), SUM([Shipping Cost]))

Final Thoughts

Mastering Tableau's IIF function is a great step towards creating smarter, more dynamic dashboards. It's a quick and efficient tool for binary categorizations, data hygiene, and dynamic labeling that reduces complexity and saves you time. By understanding when to use IIF versus a more complex IF/THEN block, you're well on your way to faster, cleaner analysis.

Learning these formulas is a critical part of building compelling dashboards from scratch. But we know that sometimes you need answers fast without getting bogged down in syntax. That’s why we built Graphed. We turn hours of manual dashboard building into 30-second conversations. You simply connect your data sources, ask questions in plain English like "Show me sales performance by rep compared to a $50,000 goal," and Graphed builds the report for you in real-time.

Related Articles