Tutorial

Complete Guide to Airtable Formulas

Master Airtable formulas with practical examples and advanced techniques.

Jessica Rodriguez·Technical Writer
December 15, 2025
12 min read

Complete Guide to Airtable Formulas

Airtable formulas unlock powerful automation and calculations. This comprehensive guide covers everything from basics to advanced techniques.

Formula Basics

Syntax Rules

  • Formulas start with field references in curly braces: {Field Name}
  • Functions are written in UPPERCASE: SUM(), IF(), CONCATENATE()
  • Text strings are enclosed in single or double quotes: 'text' or "text"
  • Comments use // for single line or /* */ for multi-line

Data Types

  • String: Text values
  • Number: Numeric values (integer or decimal)
  • Boolean: TRUE or FALSE
  • Date: Date and datetime values
  • Array: Lists of values (from linked records)

Essential Functions

Text Functions

CONCATENATE() - Combine text

CONCATENATE({First Name}, ' ', {Last Name})
// Result: "John Smith"

UPPER() / LOWER() - Change case

UPPER({Email})
// Result: "[email protected]"

LEFT() / RIGHT() / MID() - Extract text

LEFT({Phone}, 3)
// Result: "555" from "555-1234"

MID({Product Code}, 4, 2)
// Extract 2 characters starting at position 4

FIND() / SEARCH() - Locate text

FIND('@', {Email})
// Returns position of @ symbol

SUBSTITUTE() - Replace text

SUBSTITUTE({Phone}, '-', '')
// Remove dashes from phone number

Numeric Functions

Basic Math

{Price} * {Quantity}
{Revenue} - {Costs}
{Total} / {Count}

ROUND() / CEILING() / FLOOR()

ROUND({Price}, 2)
// Round to 2 decimal places

CEILING({Quantity} / 12)
// Round up to nearest dozen

SUM() / AVERAGE() / MAX() / MIN()

SUM({Price}, {Tax}, {Shipping})
// Add multiple fields

AVERAGE({Q1 Revenue}, {Q2 Revenue}, {Q3 Revenue}, {Q4 Revenue})

Logical Functions

IF() - Conditional logic

IF({Status} = 'Complete', '✅', '⏳')
// Show checkmark if complete, hourglass otherwise

Nested IF()

IF({Score} >= 90, 'A',
  IF({Score} >= 80, 'B',
    IF({Score} >= 70, 'C',
      IF({Score} >= 60, 'D', 'F'))))

AND() / OR() / NOT()

IF(AND({Status} = 'Approved', {Budget} > 0), 'Proceed', 'Wait')

IF(OR({Priority} = 'High', {Urgent} = TRUE), '🔴', '🟢')

SWITCH() - Multiple conditions

SWITCH({Status},
  'New', '🆕',
  'In Progress', '⏳',
  'Complete', '✅',
  'Cancelled', '❌',
  '❓')

Date Functions

TODAY() / NOW()

TODAY()
// Current date

NOW()
// Current date and time

DATETIME_DIFF() - Calculate difference

DATETIME_DIFF({Due Date}, TODAY(), 'days')
// Days until deadline

DATETIME_DIFF({End Date}, {Start Date}, 'hours')
// Project duration in hours

DATETIME_FORMAT() - Format dates

DATETIME_FORMAT({Created}, 'MMMM D, YYYY')
// Result: "January 15, 2026"

DATETIME_FORMAT({Meeting Time}, 'h:mm A')
// Result: "2:30 PM"

DATEADD() - Add/subtract time

DATEADD({Start Date}, 30, 'days')
// Add 30 days to start date

DATEADD({Due Date}, -3, 'days')
// 3 days before due date

Advanced Techniques

Working with Linked Records

ARRAYJOIN() - Combine linked values

ARRAYJOIN({Tags}, ', ')
// Result: "Marketing, Sales, Product"

ARRAYUNIQUE() - Remove duplicates

ARRAYUNIQUE({Categories})

ARRAYFLATTEN() - Flatten nested arrays

ARRAYFLATTEN({Nested Field})

Regular Expressions

REGEX_MATCH() - Test pattern

REGEX_MATCH({Email}, '@company\.com$')
// TRUE if email ends with @company.com

REGEX_EXTRACT() - Extract pattern

REGEX_EXTRACT({Text}, '\d{3}-\d{4}')
// Extract phone number pattern

REGEX_REPLACE() - Replace pattern

REGEX_REPLACE({Phone}, '[^0-9]', '')
// Remove all non-numeric characters

Complex Calculations

Weighted Average

({Score1} * {Weight1} + {Score2} * {Weight2} + {Score3} * {Weight3}) /
({Weight1} + {Weight2} + {Weight3})

Percentage Change

IF({Previous Value} = 0, 0,
  ROUND(({Current Value} - {Previous Value}) / {Previous Value} * 100, 1) & '%')

Compound Interest

{Principal} * POWER(1 + {Rate}, {Years})

Real-World Examples

Project Status Indicator

IF({Completion %} = 100, '✅ Complete',
  IF(DATETIME_DIFF({Deadline}, TODAY(), 'days') < 0, '🔴 Overdue',
    IF(DATETIME_DIFF({Deadline}, TODAY(), 'days') < 7, '🟡 Due Soon',
      '🟢 On Track')))

Email Validation

IF(
  AND(
    FIND('@', {Email}) > 0,
    FIND('.', {Email}) > FIND('@', {Email}),
    LEN({Email}) > 5
  ),
  '✅ Valid',
  '❌ Invalid'
)

Full Name with Title

IF({Title},
  CONCATENATE({Title}, ' ', {First Name}, ' ', {Last Name}),
  CONCATENATE({First Name}, ' ', {Last Name}))

Revenue Forecast

{Monthly Revenue} * (12 - MONTH(TODAY()) + 1) + {YTD Revenue}

Performance Tips

  1. Minimize Nested Functions: Deep nesting slows calculations
  2. Use SWITCH() Instead of Multiple IFs: More efficient for many conditions
  3. Cache Calculations: Store complex formulas in separate fields
  4. Avoid Circular References: Don't reference fields that reference back
  5. Use Rollups for Aggregations: More efficient than formula calculations

Common Errors and Solutions

#ERROR!

Cause: Invalid syntax or data type mismatch Solution: Check field references and data types

Blank Result

Cause: Field is empty or formula returns empty string Solution: Add error handling with IF(field, formula, 'default')

Circular Dependency

Cause: Field references itself directly or indirectly Solution: Restructure formulas to break the loop

Conclusion

Mastering Airtable formulas transforms your bases from simple databases into powerful automation engines. Start with basic functions, gradually incorporate advanced techniques, and always test with sample data.

Need help building complex formulas for your base? Contact our team [blocked] for expert assistance.

Ready to Transform Your Workflow?

Let's discuss how custom Airtable solutions can help your business scale.