Skip to main content

Formula Functions Reference

Optional Feature

Formulas are an optional feature not available to all customers. If you're interested in using formulas for advanced pricing, BOM calculations, or dynamic values, please contact us to enable this functionality.

Mimeeq supports Excel-like formulas for dynamic calculations in pricing patterns, SKU codes, quantity fields, BOM parameters, and variables. This reference covers all supported functions, syntax, and real-world examples.

Where Formulas Are Used

Formulas are supported in fields processed on the backend:

LocationPurposeExample
Pricing PatternDynamic price code generation=CONCATENATE({color#code}, "-", {size#code})
Pricing Code QuantityCalculate quantity for price codes=IF({bulk#variable}="true", 10, 1)
Variables (Pricing & BOM)Intermediate calculations=COUNT_CHAR({embossing#inputValue})
BOM Item FieldsName, code, quantity patterns=CONCATENATE("PART-", {size#code})
BOM Row QuantityCalculate component quantities=IF({config#code}="DOUBLE", 2, 1)
BOM Custom Fields (Text)Dynamic text field values=IF({finish#code}="MATTE", "M", "G")
BundlesVarious bundle configuration fields
info

Some code input fields only support string mode (no formulas, no variables): SKU/Code structure, rules, 2D images, 2D layers in 3D, external models, download tab patterns. These fields support direct option references like {color#code} but cannot use variables or formula expressions.

Syntax Basics

Formula vs String Mode

Patterns starting with = are evaluated as formulas. Without =, the value is treated as a literal string.

=SUM(10, 20)          → 30 (formula mode)
SUM(10, 20) → "SUM(10, 20)" (string mode)

Referencing Values

Formulas can reference dynamic values using the code input syntax: {fieldName#suffix}

The suffix (e.g., #variable, #code, #bom, #inputValue) determines which field or data source is referenced. These references are resolved before the formula is evaluated. See Code Input Reference for all available suffixes.

=IF({HAS_LINING#variable}="true", "L", "N")
=CONCATENATE({color#code}, "-", {size#code})
=TEXT({coverColor#bom}, "00")

Operators

OperatorDescriptionExample
+Addition=5 + 38
-Subtraction=10 - 46
*Multiplication=6 * 742
/Division=20 / 45
^Exponentiation=2 ^ 38
&Text concatenation="Hello" & " World""Hello World"
=Equal=IF(5=5, "yes", "no")"yes"
<>Not equal=IF(5<>3, "yes", "no")"yes"
> < >= <=Comparison=IF(10>5, "bigger", "smaller")

String Comparisons

When comparing variables to string values, wrap the value in quotes:

=IF({HAS_LINING#variable}="true", "L", "N")
=IF({SIZE_FORMAT#variable}="a4", "A4", "Other")

Math Functions

ABS

Returns the absolute value of a number.

Syntax: ABS(number)

=ABS(-5)           → 5
=ABS(3.14) → 3.14

BASE

Converts a number to text in a specified base (radix).

Syntax: BASE(number, radix, [min_length])

  • radix: Base to convert to (2-36)
  • min_length: Minimum length, padded with zeros
=BASE(255, 16)      → "FF"
=BASE(10, 2) → "1010"
=BASE(10, 2, 8) → "00001010"

CEILING

Rounds a number up to the nearest multiple of significance.

Syntax: CEILING(number, significance)

=CEILING(2.5, 1)    → 3
=CEILING(4.42, 0.1) → 4.5
=CEILING(-2.5, -2) → -4

CEILING.MATH

Rounds a number up, with control over direction for negative numbers.

Syntax: CEILING.MATH(number, [significance], [mode])

  • mode: If non-zero, negative numbers round away from zero
=CEILING.MATH(6.3)        → 7
=CEILING.MATH(-6.7, 2) → -6
=CEILING.MATH(-6.7, 2, 1) → -8

CEILING.PRECISE

Rounds a number up to the nearest integer or multiple, ignoring the sign of significance.

Syntax: CEILING.PRECISE(number, [significance])

=CEILING.PRECISE(4.3)     → 5
=CEILING.PRECISE(-4.3) → -4
=CEILING.PRECISE(4.3, 2) → 6

DECIMAL

Converts a text representation in a given base to a decimal number.

Syntax: DECIMAL(text, radix)

=DECIMAL("FF", 16)   → 255
=DECIMAL("1010", 2) → 10

DEGREES

Converts radians to degrees.

Syntax: DEGREES(radians)

=DEGREES(PI())       → 180
=DEGREES(1) → 57.2957...

EXP

Returns e raised to the power of a number.

Syntax: EXP(number)

=EXP(1)              → 2.71828...
=EXP(2) → 7.38905...

FLOOR

Rounds a number down to the nearest multiple of significance.

Syntax: FLOOR(number, significance)

=FLOOR(3.7, 1)       → 3
=FLOOR(2.5, 1) → 2
=FLOOR(-2.5, -2) → -2

FLOOR.MATH

Rounds a number down, with control over direction for negative numbers.

Syntax: FLOOR.MATH(number, [significance], [mode])

=FLOOR.MATH(6.7)         → 6
=FLOOR.MATH(-6.7, 2) → -8
=FLOOR.MATH(-6.7, 2, 1) → -6

FLOOR.PRECISE

Rounds a number down to the nearest integer or multiple, ignoring sign of significance.

Syntax: FLOOR.PRECISE(number, [significance])

=FLOOR.PRECISE(4.7)      → 4
=FLOOR.PRECISE(-4.7) → -5

GCD

Returns the greatest common divisor of two or more integers.

Syntax: GCD(number1, [number2], ...)

=GCD(12, 18)         → 6
=GCD(24, 36, 48) → 12

INT

Rounds a number down to the nearest integer.

Syntax: INT(number)

=INT(8.9)            → 8
=INT(-8.9) → -9

ISO.CEILING

Rounds a number up following ISO rules (same as CEILING.PRECISE).

Syntax: ISO.CEILING(number, [significance])

=ISO.CEILING(4.3)    → 5
=ISO.CEILING(-4.3) → -4

LCM

Returns the least common multiple of integers.

Syntax: LCM(number1, [number2], ...)

=LCM(4, 6)           → 12
=LCM(5, 7, 3) → 105

LN

Returns the natural logarithm of a number.

Syntax: LN(number)

=LN(2.71828)         → 1
=LN(10) → 2.302585...

LOG

Returns the logarithm of a number to a specified base.

Syntax: LOG(number, [base])

  • base: Defaults to 10 if omitted
=LOG(100)            → 2
=LOG(8, 2) → 3

LOG10

Returns the base-10 logarithm of a number.

Syntax: LOG10(number)

=LOG10(100)          → 2
=LOG10(1000) → 3

MAX

Returns the largest value from a set of numbers.

Syntax: MAX(number1, [number2], ...)

=MAX(1, 5, 3)        → 5
=MAX(10, -20, 15) → 15

MIN

Returns the smallest value from a set of numbers.

Syntax: MIN(number1, [number2], ...)

=MIN(1, 5, 3)        → 1
=MIN(10, -20, 15) → -20

MOD

Returns the remainder after division.

Syntax: MOD(number, divisor)

=MOD(10, 3)          → 1
=MOD(7, 2) → 1

MROUND

Rounds a number to the nearest multiple.

Syntax: MROUND(number, multiple)

=MROUND(10, 3)       → 9
=MROUND(7, 2.5) → 7.5

ODD

Rounds a number up to the nearest odd integer.

Syntax: ODD(number)

=ODD(2)              → 3
=ODD(3) → 3
=ODD(-1.5) → -3

PI

Returns the value of π (pi).

Syntax: PI()

=PI()                → 3.14159265...

POWER

Returns a number raised to a power.

Syntax: POWER(number, power)

=POWER(2, 3)         → 8
=POWER(5, 2) → 25

PRODUCT

Multiplies all arguments together.

Syntax: PRODUCT(number1, [number2], ...)

=PRODUCT(2, 3, 4)    → 24
=PRODUCT(5, 10) → 50

QUOTIENT

Returns the integer portion of a division.

Syntax: QUOTIENT(numerator, denominator)

=QUOTIENT(10, 3)     → 3
=QUOTIENT(7, 2) → 3

RAND

Returns a random number between 0 and 1.

Syntax: RAND()

=RAND()              → 0.7234... (varies)

RANDBETWEEN

Returns a random integer between two values.

Syntax: RANDBETWEEN(bottom, top)

=RANDBETWEEN(1, 100) → 47 (varies)
=RANDBETWEEN(10, 20) → 15 (varies)

ROUND

Rounds a number to a specified number of digits.

Syntax: ROUND(number, num_digits)

=ROUND(2.15, 1)      → 2.2
=ROUND(2.149, 1) → 2.1
=ROUND(1234, -2) → 1200

ROUNDDOWN

Rounds a number down (toward zero).

Syntax: ROUNDDOWN(number, num_digits)

=ROUNDDOWN(3.7, 0)   → 3
=ROUNDDOWN(3.14159, 3) → 3.141

ROUNDUP

Rounds a number up (away from zero).

Syntax: ROUNDUP(number, num_digits)

=ROUNDUP(3.2, 0)     → 4
=ROUNDUP(3.14159, 3) → 3.142

SIGN

Returns the sign of a number (-1, 0, or 1).

Syntax: SIGN(number)

=SIGN(-5)            → -1
=SIGN(0) → 0
=SIGN(10) → 1

SQRT

Returns the square root of a number.

Syntax: SQRT(number)

=SQRT(16)            → 4
=SQRT(2) → 1.41421...

SUM

Adds all numbers in the arguments.

Syntax: SUM(number1, [number2], ...)

=SUM(1, 2, 3)        → 6
=SUM(10, 20, 30, 40) → 100

SUMIF

Sums values that meet a specified criteria.

Syntax: SUMIF(range, criteria, [sum_range])

=SUMIF(A1:A5, ">10")           → Sum of values > 10
=SUMIF(A1:A5, "red", B1:B5) → Sum B where A = "red"

SUMPRODUCT

Returns the sum of products of corresponding array elements.

Syntax: SUMPRODUCT(array1, [array2], ...)

=SUMPRODUCT({1,2,3}, {4,5,6})  → 32 (1*4 + 2*5 + 3*6)

SUMSQ

Returns the sum of squares of the arguments.

Syntax: SUMSQ(number1, [number2], ...)

=SUMSQ(3, 4)         → 25 (9 + 16)

TRUNC

Truncates a number to an integer by removing the decimal part.

Syntax: TRUNC(number)

=TRUNC(4.9)          → 4
=TRUNC(-4.9) → -4

Text Functions

CHAR

Returns the character for a given ASCII code.

Syntax: CHAR(number)

=CHAR(65)            → "A"
=CHAR(97) → "a"

CLEAN

Removes non-printable characters from text.

Syntax: CLEAN(text)

=CLEAN("Hello World")  → "Hello World" (removes control chars)

CODE

Returns the ASCII code of the first character.

Syntax: CODE(text)

=CODE("A")           → 65
=CODE("abc") → 97

CONCAT

Joins multiple text strings into one.

Syntax: CONCAT(text1, [text2], ...)

=CONCAT("Hello", " ", "World")  → "Hello World"

CONCATENATE

Joins multiple text strings into one (same as CONCAT).

Syntax: CONCATENATE(text1, [text2], ...)

=CONCATENATE("A", "-", "001")   → "A-001"
=CONCATENATE({color#code}, "_", {size#code})

COUNT_CHAR

Custom Function - Counts characters excluding spaces.

Syntax: COUNT_CHAR(text)

=COUNT_CHAR("Hello World")      → 10
=COUNT_CHAR("A B C") → 3
=COUNT_CHAR({embossing#inputValue})
info

This is a custom Mimeeq function not available in standard Excel.

COUNT_WORD

Custom Function - Counts the number of words in text.

Syntax: COUNT_WORD(text)

=COUNT_WORD("Hello World")      → 2
=COUNT_WORD("One two three") → 3
info

This is a custom Mimeeq function not available in standard Excel.

DOLLAR

Converts a number to text in currency format.

Syntax: DOLLAR(number, [decimals])

=DOLLAR(1234.567, 2)   → "$1,234.57"
=DOLLAR(1234.567) → "$1,234.57"

EXACT

Checks if two text strings are exactly identical (case-sensitive).

Syntax: EXACT(text1, text2)

=EXACT("Hello", "Hello")   → TRUE
=EXACT("Hello", "hello") → FALSE

FIND

Finds the position of text within another text (case-sensitive).

Syntax: FIND(find_text, within_text, [start_num])

  • Returns #VALUE! if not found
=FIND("o", "Hello World")      → 5
=FIND("o", "Hello World", 6) → 8

LEFT

Returns the leftmost characters from a text string.

Syntax: LEFT(text, [num_chars])

  • num_chars: Defaults to 1
=LEFT("Hello", 3)       → "Hel"
=LEFT("World") → "W"

LEN

Returns the length of a text string (including spaces).

Syntax: LEN(text)

=LEN("Hello World")     → 11
=LEN("ABC") → 3

LOWER

Converts text to lowercase.

Syntax: LOWER(text)

=LOWER("HELLO")         → "hello"
=LOWER("Hello World") → "hello world"

MID

Returns characters from the middle of a text string.

Syntax: MID(text, start_num, num_chars)

=MID("Hello World", 7, 5)   → "World"
=MID("ABCDEF", 2, 3) → "BCD"

NUMBERVALUE

Converts text to a number, with locale-independent formatting.

Syntax: NUMBERVALUE(text, [decimal_separator], [group_separator])

=NUMBERVALUE("1,234.56", ".", ",")   → 1234.56
=NUMBERVALUE("1.234,56", ",", ".") → 1234.56

PROPER

Capitalizes the first letter of each word.

Syntax: PROPER(text)

=PROPER("hello world")   → "Hello World"
=PROPER("JOHN DOE") → "John Doe"

REPLACE

Replaces part of a text string with different text.

Syntax: REPLACE(old_text, start_num, num_chars, new_text)

=REPLACE("Hello", 1, 2, "XX")   → "XXllo"
=REPLACE("2024", 3, 2, "25") → "2025"

REPT

Repeats text a specified number of times.

Syntax: REPT(text, number_times)

=REPT("*", 5)            → "*****"
=REPT("Ab", 3) → "AbAbAb"

Returns the rightmost characters from a text string.

Syntax: RIGHT(text, [num_chars])

=RIGHT("Hello", 3)       → "llo"
=RIGHT("World") → "d"

Finds text within another text (case-insensitive, supports wildcards).

Syntax: SEARCH(find_text, within_text, [start_num])

  • * matches any sequence of characters
  • ? matches any single character
=SEARCH("o", "Hello World")     → 5
=SEARCH("WORLD", "Hello World") → 7
=SEARCH("w*d", "Hello World") → 7

SUBSTITUTE

Replaces occurrences of old text with new text.

Syntax: SUBSTITUTE(text, old_text, new_text, [instance_num])

  • If instance_num is omitted, all occurrences are replaced (differs from Excel's default)
=SUBSTITUTE("Hello World", "World", "There")   → "Hello There"
=SUBSTITUTE("aaa", "a", "b") → "bbb"
=SUBSTITUTE("aaa", "a", "b", 2) → "aba"
Important Difference

Unlike Excel (which replaces only the first occurrence by default), Mimeeq's SUBSTITUTE replaces all occurrences when instance_num is omitted.

T

Returns the text if the value is text, otherwise returns empty string.

Syntax: T(value)

=T("Hello")           → "Hello"
=T(123) → ""
=T(TRUE) → ""

TEXT

Formats a number as text with a specified format.

Syntax: TEXT(value, format_text)

=TEXT(1234.567, "0.00")        → "1234.57"
=TEXT(0.25, "0%") → "25%"
=TEXT(5, "00") → "05"
=TEXT({coverColor#bom}, "00") → "05" (pads with zero)

Common format codes:

FormatExample InputOutput
"0"5.7"6"
"0.00"5.7"5.70"
"00"5"05"
"000"5"005"
"#,##0"1234"1,234"
"0%"0.25"25%"

TRIM

Removes leading, trailing, and excess spaces from text.

Syntax: TRIM(text)

=TRIM("  Hello   World  ")   → "Hello World"

UNICHAR

Returns the Unicode character for a given code point.

Syntax: UNICHAR(number)

=UNICHAR(65)          → "A"
=UNICHAR(8364) → "€"

UNICODE

Returns the Unicode code point of the first character.

Syntax: UNICODE(text)

=UNICODE("A")         → 65
=UNICODE("€") → 8364

UPPER

Converts text to uppercase.

Syntax: UPPER(text)

=UPPER("hello")       → "HELLO"

Logical Functions

AND

Returns TRUE if all arguments are TRUE.

Syntax: AND(logical1, [logical2], ...)

=AND(TRUE, TRUE)              → TRUE
=AND(TRUE, FALSE) → FALSE
=AND(5>3, 10>5) → TRUE
=AND({HAS_LINING#variable}="true", {HAS_POCKETS#variable}="true")

FALSE

Returns the logical value FALSE.

Syntax: FALSE()

=FALSE()              → FALSE

IF

Returns one value if a condition is TRUE, another if FALSE.

Syntax: IF(logical_test, value_if_true, [value_if_false])

=IF(5>3, "Yes", "No")                    → "Yes"
=IF({HAS_LINING#variable}="true", "L", "N")
=IF(COUNT_CHAR({embossing#inputValue})>3, 10, 3)

IFERROR

Returns a specified value if the expression results in an error.

Syntax: IFERROR(value, value_if_error)

=IFERROR(10/0, "Error")       → "Error"
=IFERROR(10/2, "Error") → 5

IFNA

Returns a specified value if the expression results in #N/A.

Syntax: IFNA(value, value_if_na)

=IFNA(MATCH("x", A1:A5, 0), "Not found")

IFS

Checks multiple conditions and returns the value for the first TRUE condition.

Syntax: IFS(condition1, value1, [condition2, value2], ...)

=IFS(
{SIZE#variable}="small", "S",
{SIZE#variable}="medium", "M",
{SIZE#variable}="large", "L",
TRUE, "Unknown"
)
tip

Use TRUE as the last condition to provide a default value (similar to "else").

NOT

Reverses the logical value of its argument.

Syntax: NOT(logical)

=NOT(TRUE)            → FALSE
=NOT(FALSE) → TRUE
=NOT({SIZE_FORMAT#variable}="a4")

OR

Returns TRUE if any argument is TRUE.

Syntax: OR(logical1, [logical2], ...)

=OR(TRUE, FALSE)              → TRUE
=OR(FALSE, FALSE) → FALSE
=OR({SIZE_FORMAT#variable}="xl", {SIZE_FORMAT#variable}="")

TRUE

Returns the logical value TRUE.

Syntax: TRUE()

=TRUE()               → TRUE

Date & Time Functions

DATE

Creates a date from year, month, and day components.

Syntax: DATE(year, month, day)

=DATE(2024, 12, 25)   → December 25, 2024
=DATE(2024, 13, 1) → January 1, 2025 (auto-adjusts)

DATEDIF

Calculates the difference between two dates.

Syntax: DATEDIF(start_date, end_date, unit)

UnitReturns
"Y"Complete years
"M"Complete months
"D"Days
"MD"Days ignoring months and years
"YM"Months ignoring years
"YD"Days ignoring years
=DATEDIF(DATE(2020,1,1), DATE(2024,6,15), "Y")   → 4
=DATEDIF(DATE(2020,1,1), DATE(2024,6,15), "M") → 53

DATEVALUE

Converts a date string to a serial number.

Syntax: DATEVALUE(date_text)

=DATEVALUE("2024-12-25")   → 45651

DAY

Returns the day of the month (1-31).

Syntax: DAY(date)

=DAY(DATE(2024, 12, 25))   → 25
=DAY(TODAY()) → (current day)

DAYS

Returns the number of days between two dates.

Syntax: DAYS(end_date, start_date)

=DAYS(DATE(2024,12,31), DATE(2024,1,1))   → 365

EDATE

Returns a date a specified number of months before or after a date.

Syntax: EDATE(start_date, months)

=EDATE(DATE(2024,1,15), 3)    → April 15, 2024
=EDATE(DATE(2024,1,15), -1) → December 15, 2023

EOMONTH

Returns the last day of a month, a specified number of months away.

Syntax: EOMONTH(start_date, months)

=EOMONTH(DATE(2024,1,15), 0)   → January 31, 2024
=EOMONTH(DATE(2024,1,15), 1) → February 29, 2024

HOUR

Returns the hour (0-23) from a time value.

Syntax: HOUR(time)

=HOUR(TIME(14, 30, 0))   → 14

ISOWEEKNUM

Returns the ISO week number for a date.

Syntax: ISOWEEKNUM(date)

=ISOWEEKNUM(DATE(2024,1,1))   → 1

MINUTE

Returns the minute (0-59) from a time value.

Syntax: MINUTE(time)

=MINUTE(TIME(14, 30, 45))   → 30

MONTH

Returns the month (1-12) from a date.

Syntax: MONTH(date)

=MONTH(DATE(2024, 12, 25))   → 12
=MONTH(TODAY()) → (current month)

NETWORKDAYS

Returns the number of working days between two dates.

Syntax: NETWORKDAYS(start_date, end_date, [holidays])

=NETWORKDAYS(DATE(2024,1,1), DATE(2024,1,31))   → 23

NETWORKDAYS.INTL

Returns working days with custom weekend specification.

Syntax: NETWORKDAYS.INTL(start_date, end_date, [weekend], [holidays])

WeekendDays Off
1Saturday, Sunday
2Sunday, Monday
11Sunday only
17Saturday only

NOW

Returns the current date and time.

Syntax: NOW()

=NOW()   → Current date and time

SECOND

Returns the second (0-59) from a time value.

Syntax: SECOND(time)

=SECOND(TIME(14, 30, 45))   → 45

TIME

Creates a time value from hours, minutes, and seconds.

Syntax: TIME(hour, minute, second)

=TIME(14, 30, 0)   → 2:30 PM

TIMEVALUE

Converts a time string to a decimal number.

Syntax: TIMEVALUE(time_text)

=TIMEVALUE("6:00 AM")   → 0.25

TODAY

Returns the current date.

Syntax: TODAY()

=TODAY()   → Current date

WEEKDAY

Returns the day of the week for a date.

Syntax: WEEKDAY(date, [return_type])

Return TypeSundayMonday...Saturday
1 (default)12...7
271...6
360...5
=WEEKDAY(DATE(2024,12,25))   → 4 (Wednesday)

WEEKNUM

Returns the week number of a date.

Syntax: WEEKNUM(date, [return_type])

=WEEKNUM(DATE(2024,1,15))   → 3

WORKDAY

Returns a date a specified number of working days away.

Syntax: WORKDAY(start_date, days, [holidays])

=WORKDAY(DATE(2024,1,1), 10)   → January 15, 2024

WORKDAY.INTL

Returns a workday with custom weekend specification.

Syntax: WORKDAY.INTL(start_date, days, [weekend], [holidays])

YEAR

Returns the year from a date.

Syntax: YEAR(date)

=YEAR(DATE(2024, 12, 25))   → 2024
=YEAR(TODAY()) → (current year)

YEARFRAC

Returns the fraction of the year between two dates.

Syntax: YEARFRAC(start_date, end_date, [basis])

=YEARFRAC(DATE(2024,1,1), DATE(2024,7,1))   → 0.5

Statistical Functions

AVERAGE

Returns the arithmetic mean of numbers.

Syntax: AVERAGE(number1, [number2], ...)

=AVERAGE(1, 2, 3, 4, 5)   → 3
=AVERAGE(10, 20) → 15

AVERAGEA

Returns the average, including text (as 0) and logical values.

Syntax: AVERAGEA(value1, [value2], ...)

=AVERAGEA(1, 2, TRUE, FALSE)   → 1 (TRUE=1, FALSE=0)

AVERAGEIF

Returns the average of cells that meet a criteria.

Syntax: AVERAGEIF(range, criteria, [average_range])

=AVERAGEIF(A1:A10, ">5")
=AVERAGEIF(A1:A10, "red", B1:B10)

COUNT

Counts how many numbers are in the arguments.

Syntax: COUNT(value1, [value2], ...)

=COUNT(1, 2, "text", 4)   → 3

COUNTIF

Counts cells that meet a criteria.

Syntax: COUNTIF(range, criteria)

Criteria options:

  • ">10" - Greater than 10
  • "<>0" - Not equal to 0
  • "red" - Equals "red"
  • "*text*" - Contains "text"
=COUNTIF(A1:A10, ">5")
=COUNTIF(A1:A10, "red")

UNIQUE_COUNT

Custom Function - Counts unique values in a range.

Syntax: UNIQUE_COUNT(value1, [value2], ...)

=UNIQUE_COUNT("a", "b", "a", "c")   → 3
=UNIQUE_COUNT(1, 2, 2, 3, 3, 3) → 3
info

This is a custom Mimeeq function not available in standard Excel.


Information Functions

ISBLANK

Returns TRUE if the cell is empty.

Syntax: ISBLANK(value)

=ISBLANK("")          → TRUE
=ISBLANK("text") → FALSE

ISERR

Returns TRUE if the value is any error except #N/A.

Syntax: ISERR(value)

=ISERR(1/0)           → TRUE
=ISERR(#N/A) → FALSE

ISERROR

Returns TRUE if the value is any error.

Syntax: ISERROR(value)

=ISERROR(1/0)         → TRUE
=ISERROR(#N/A) → TRUE

ISEVEN

Returns TRUE if the number is even.

Syntax: ISEVEN(number)

=ISEVEN(4)            → TRUE
=ISEVEN(5) → FALSE

ISLOGICAL

Returns TRUE if the value is a logical value (TRUE or FALSE).

Syntax: ISLOGICAL(value)

=ISLOGICAL(TRUE)      → TRUE
=ISLOGICAL("TRUE") → FALSE

ISNA

Returns TRUE if the value is the #N/A error.

Syntax: ISNA(value)

=ISNA(#N/A)           → TRUE
=ISNA(#VALUE!) → FALSE

ISNONTEXT

Returns TRUE if the value is not text.

Syntax: ISNONTEXT(value)

=ISNONTEXT(123)       → TRUE
=ISNONTEXT("text") → FALSE

ISNUMBER

Returns TRUE if the value is a number.

Syntax: ISNUMBER(value)

=ISNUMBER(123)        → TRUE
=ISNUMBER("123") → FALSE

ISTEXT

Returns TRUE if the value is text.

Syntax: ISTEXT(value)

=ISTEXT("hello")      → TRUE
=ISTEXT(123) → FALSE

Engineering Functions

DELTA

Tests whether two values are equal.

Syntax: DELTA(number1, [number2])

Returns 1 if equal, 0 otherwise.

=DELTA(5, 5)          → 1
=DELTA(5, 4) → 0

GESTEP

Tests whether a number is greater than or equal to a threshold.

Syntax: GESTEP(number, [step])

Returns 1 if number >= step, otherwise 0.

=GESTEP(5, 4)         → 1
=GESTEP(3, 4) → 0

Real-World Examples

Example 1: Character Count Pricing

Calculate embossing price based on character count:

=IF(COUNT_CHAR({embosingbrc#inputValue})>3, 10, 3)

If embossing text has more than 3 characters (excluding spaces), charge 10; otherwise charge 3.

Example 2: Complex Product Code Logic

Determine product code based on multiple conditions:

=IF(
{HAS_LINING#variable}="false",
IF(
{HAS_POCKETS#variable}="false",
IF({IS_A5_A6#variable}="true", "lp", "lc"),
"lp"
),
IF(
AND(
{HAS_POCKETS#variable}="false",
OR(
{SIZE_FORMAT#variable}="xl",
{SIZE_FORMAT#variable}="",
{SIZE_FORMAT#variable}="a4"
)
),
"lc",
"lp"
)
)

Example 3: Conditional Character Counter

Count characters only if field has content:

=IF(
{embosingbrca6pocket#inputValue}="",
0,
COUNT_CHAR({embosingbrca6pocket#inputValue})
)

Example 4: Multi-Field Selection

Select the first non-empty embossing value from multiple fields:

=IF(
{CORNER_A4_CHAR_COUNT#variable}>0,
{embosingbrca4#inputValue},
IF(
{CORNER_POCKET_CHAR_COUNT#variable}>0,
{embosingbrca6pocket#inputValue},
IF(
{CORNER_CHAR_COUNT#variable}>0,
{embosingbrc#inputValue},
""
)
)
)

Example 5: Dynamic Code Generation with TEXT Formatting

Generate padded codes with conditional suffixes:

=IF(
AND({SIZE_FORMAT#variable}="a4", {FLAP_A4_LINE2_CHAR_COUNT#variable}>0),
CONCATENATE({embosingcolourflapa4#code}, "04"),
IF(
AND(
OR({SIZE_FORMAT#variable}="", {SIZE_FORMAT#variable}="a6"),
{FLAP_A6_LINE2_CHAR_COUNT#variable}>0
),
CONCATENATE({embosingcolourflapa6#code}, "04"),
IF(
AND(
{FLAP_LINE2_CHAR_COUNT#variable}>0,
NOT({SIZE_FORMAT#variable}="a4"),
NOT({SIZE_FORMAT#variable}=""),
NOT({SIZE_FORMAT#variable}="a6")
),
CONCATENATE({embosingcolourflap#code}, "04"),
""
)
)
)

Example 6: BOM Item Code with Zero-Padded Numbers

Generate BOM codes with formatted numeric values:

=IF(
{leftpocket#code}="PB",
CONCATENATE("lp", {SIZE_FORMAT#variable}, "_", TEXT({Bpocketcolour#bom}, "00"), "_B_nom"),
IF(
{leftpocket#code}="PE",
CONCATENATE("lp", {SIZE_FORMAT#variable}, "_", TEXT({Bpocketcolour#bom}, "00"), "_B"),
""
)
)

Example 7: Conditional Thread Color Code

Include thread color only when lining or pockets are present:

=IF(
OR({HAS_LINING#variable}="true", {HAS_POCKETS#variable}="true"),
{chooseyourthreadscolour#code},
""
)

Example 8: Double Ribbon Configuration

Generate secondary ribbon code only for double ribbon option:

=IF(
{numberofribbonsinside#code}="double",
CONCATENATE(
{chooseyourribboncolourinside2#code},
"_",
{INTERNAL_ELASTIC_LENGTH#variable}
),
""
)

Example 9: Complex SKU Assembly

Build a complete SKU with conditional parts:

=IF(
{NEEDS_SPLIT#variable}="true",
IF(
OR({SIZE_FORMAT#variable}="", {SIZE_FORMAT#variable}="xl"),
CONCATENATE(
{BASE_PREFIX#variable},
{SIZE_FORMAT#variable},
TEXT({chooseyourcovercolour#bom}, "00"),
IF({NEEDS_A_SUFFIX#variable}="true", "_A", ""),
{FEATURES_CODE#variable},
"_as"
),
CONCATENATE(
{BASE_PREFIX#variable},
{SIZE_FORMAT#variable},
"_",
TEXT({chooseyourcovercolour#bom}, "00"),
IF({NEEDS_A_SUFFIX#variable}="true", "_A", ""),
{FEATURES_CODE#variable},
"_as"
)
),
""
)

Testing & Debugging Formulas

The Admin Panel provides built-in debuggers to test and verify your formulas before publishing.

Pricing Debugger

Located in Product Preview → Pricing Debugger, this tool shows:

  • Input PatternOutput Pattern: See how your pricing pattern resolves
  • Input QuantityOutput Quantity: Verify quantity formula results
  • Variables: View input patterns and resolved output values for each variable
  • Additional Price Codes: See all extracted price codes

Use the Pricing Debugger to verify that your pricing patterns and variables produce the expected codes for different product configurations.

BOM Debugger

Located in Product Preview → BOM Debugger, this tool shows:

  • Name PatternOutput Name: Verify BOM item name formulas
  • Item Code PatternOutput Item Code: Check code generation
  • Input QuantityOutput Quantity: Test quantity calculations
  • Variables: View input and output values
  • Sub-components: Inspect nested BOM items
  • Custom Fields: See resolved custom field values

Use the BOM Debugger to ensure your Bill of Materials generates correctly for all product configurations.

tip

Always test your formulas with multiple product configurations to ensure they handle all edge cases correctly.


Tips & Best Practices

Nesting IF Statements

For multiple conditions, consider:

  1. Using IFS() for cleaner syntax
  2. Breaking complex logic into separate variables
  3. Using AND() and OR() to combine conditions

String Comparisons

Always use quotes around string values in comparisons:

✓ =IF({variable#variable}="true", ...)
✗ =IF({variable#variable}=true, ...)

Handling Empty Values

Check for empty strings before processing:

=IF({field#inputValue}="", 0, COUNT_CHAR({field#inputValue}))

Number Formatting

Use TEXT() to ensure consistent number formatting in codes:

=TEXT({color#bom}, "00")   → "05" instead of "5"

Case Sensitivity

  • FIND() is case-sensitive
  • SEARCH() is case-insensitive
  • String comparisons (=, <>) are case-sensitive

Error Reference

ErrorCause
#VALUE!Wrong data type (e.g., text where number expected)
#DIV/0!Division by zero
#NAME?Unknown function or variable name
#NUM!Invalid numeric value
#N/AValue not found (in lookup functions)
#REF!Invalid reference

See Also