Purpose

Return value

Syntax

=TEXTSPLIT(text,col_delimiter,[row_delimiter],[ignore_empty],[match_mode],[pad_with])
  • text - The text string to split.
  • col_delimiter - The character(s) to delimit columns.
  • row_delimiter - [optional] The character(s) to delimit rows.
  • ignore_empty - [optional] Ignore empty values. TRUE = ignore, FALSE = preserve. Default is FALSE.
  • match_mode - [optional] Case-sensitivity. 0 = enabled, 1 = disabled. Default is 0.
  • pad_with - [optional] Value to pad missing values in 2d arrays.

Using the TEXTSPLIT function

The TEXTSPLIT function splits a text string with a given delimiter into multiple values. The output from TEXTSPLIT is an array that will spill into multiple cells in the workbook.

Split text into columns or rows

TEXTSPLIT can split a text string into columns or rows. To use TEXTSPLIT, you will need to provide the text to split and a delimiter. You can either provide a column delimiter ( col_delimiter ) to split text into columns, or a row delimiter ( row_delimiter ) to split text into rows. For example, the formula below splits the text “red-blue-green” into separate values in columns:

=TEXTSPLIT("red-blue-green","-") // returns {"red","blue","green"}

Note that the column delimiter is provided as a hyphen ("-). If we move the hyphen ("-") to the row delimiter position, the TEXTSPLIT function will return the same values split into rows:

=TEXTSPLIT("red-blue-green",,"-") // returns {"red";"blue";"green"}

Note that both formulas above return an array of three values and the only difference is the location of the delimiter. The values in this first array will spill into separate columns , and the values in the second formula will spill into rows . The example below shows how this looks on the worksheet:

A basic example of the TEXTSPLIT function - 1

The first formula in cell D3 separates the three values into separate columns:

=TEXTSPLIT(B3,",") // returns {"Red","Blue","Green"}

The formula in cell D5 uses the same delimiter to split the text into separate rows :

=TEXTSPLIT(B3,,",") // returns {"Red";"Blue";"Green"}

In the second formula, the row_delimiter is left empty, and the same delimiter (",") appears as col_delimiter .

To summarize: provide a column delimiter if you want the results to be in separate columns and a row delimiter if you want the results to appear in separate rows.

TEXTSPLIT extracts all text separated by delimiters. Use TEXTBEFORE to extract text before a given delimiter, and TEXTAFTER to extract text after a given delimiter.

Behavior if no delimiter is found

If the provided delimiter is not found, TEXTSPLIT will return the original text unchanged. For example, if we use TEXTSPLIT on the text string “apple orange” with a period configured as the delimiter, TEXTSPLIT will return the original text:

=TEXTSPLIT("apple orange",".") // returns "apple orange"

The period (".") is not found, yet TEXTSPLIT behaves as if the delimiter was found at the end of the text. Both the TEXTBEFORE and TEXTAFTER functions have a similar feature, but it must be enabled with the match_end argument. With TEXTSPLIT, this behavior is automatic and useful .

Ignoring empty values

By default, TEXTSPLIT will include empty values in the text, where empty values are defined as two or more consecutive delimiters without a value in between. In practice, this means you will see empty cells in the worksheet when there is no value between delimiters, as you can see in the first formula below:

TEXTSPLIT example with empty values - 2

The formula in cell D3 does not include a value for ignore_empty , so empty values will appear:

=TEXTSPLIT(B3,",") // empty values will appear

To ignore (i.e., remove) empty values, set ignore_empty to TRUE, as in the second formula in cell D5:

=TEXTSPLIT(B3,",",,TRUE) // ignore empty values

In this case, TEXTSPLIT behaves as if the missing value does not exist at all. Only “Red” and “Green” are returned.

Note: you can use 1 and 0 in place of TRUE and FALSE for the ignore_empty argument.

Match mode

The fifth argument, match_mode , determines case sensitivity when looking for a delimiter. By default, TEXTSPLIT is case-sensitive and match_mode is zero (0). Supply 1 to disable case sensitivity . In the example below the delimiter is " x " and " X “. The formula in D5 sets match mode to 1 to make TEXTSPLIT ignore case. As a result, the formula works for both cases:

=TEXTSPLIT(B5," x ",,,1)
TEXTSPLIT and case sensitivity - 3

Rows and columns

TEXTSPLIT can split text into rows and columns at the same time, as seen below:

TEXTSPLIT rows and columns example - 4

In this case, an equal sign ("=”) is provided as col_delimiter and a comma (",") is provided as row_delimiter:

=TEXTSPLIT(B3,"=",",")

The resulting array from TEXTSPLIT contains 3 rows and 2 columns.

Padding

The last argument in TEXTSPLIT is pad_with. This argument is optional and will default to #N/A. Padding is used when the output contains rows and columns and a value is missing that would affect the structure of the array. In the worksheet below, “Blue” does not contain a quantity (there is no “=” delimiter). As a result, TEXTSPLIT returns #N/A where the quantity would go, to maintain the integrity of the array.

TEXTSPLIT with custom padding - 5

The formula in cell E3 contains does not specify a pad_with argument so the default value is returned:

=TEXTSPLIT(B3,"=",",") // default padding is #N/A

In cell E7, “x” is supplied for pad_with so “x” appears in cell F8 instead of #N/A.

=TEXTSPLIT(B3,"=",",",,"x")

Multiple delimiters

Multiple delimiters can be supplied to TEXTSPLIT as an array constant like {“x”,“y”} where x and y represent delimiters:

TEXTSPLIT with multiple delimiters - 6

In the worksheet above, the text in B3 is delimited by both hyphens “-” and commas (","). The formula in cell F3 is:

=TEXTSPLIT(B3,{"-",","})

Notice also that there is an extra space separating green and purple. The TRIM function can be used to clean up extra space characters that appear in the output from TEXTSPLIT. The formula in F5 is:

=TRIM(TEXTSPLIT(B3,{"-",","}))

Notice the extra space that appears before purple in cell I3 is gone in cell I5.

Array of arrays

When using TEXTSPLIT, you might run into a limitation of the Excel formula engine where the formula will not return “arrays of arrays”. When TEXTSPLIT is used on a single cell, it returns the text in a single array, and values spill onto the worksheet into multiple cells. However, when TEXTSPLIT is used on a range of cells, TEXTSPLIT returns an “array of arrays”. The result may be a truncated version of the data or in some cases an error. Example here .

Purpose

Return value

Syntax

=TOCOL(array,ignore,scan_by_column)
  • array - The array to transform.
  • ignore - Setting to ignore blanks and errors.
  • scan_by_column - Scan array by column. TRUE = by column, FALSE = by row (default).

Using the TOCOL function

The TOCOL function transforms an array or range into a single column. By default, TOCOL will scan values by row, left to right. However, TOCOL can also be configured to scan the array by column, top to bottom. TOCOL also provides options for skipping empty cells and errors.

The TOCOL function takes three arguments: array , ignore , and scan_by_column . Array is the only required argument and represents the array or range to be transformed. The ignore argument controls what values TOCOL will optionally ignore. The options for ignore are as follows:

ValuePurpose
0 (default)Keep all values
1Ignore blanks
2Ignore errors
3Ignore blanks and errors

The scan_by_column argument is a boolean value that controls how TOCOL reads values from the source array. By default, scan_by_column is FALSE and TOCOL will read values “by row” from left to right. At the end of each row, TOCOL will drop down and read values from the next row in the same order. To read values instead by column, set scan_by_column to TRUE or 1. In this mode, TOCOL will read values from top to bottom in the first column in the array, then move one column to the right, and read the next column in the same order.

Use the TOCOL function to transform an array into a single column and the TOROW function to transform an array into a single row . The TRANSPOSE function will transpose an array from horizontal to vertical and vice versa, but it won’t restructure the array.

Basic usage

By default, the TOCOL function transforms a two-dimensional array into a single column, working through the array one row at a time. In the example below, the formula in F4 is:

=TOCOL(B4:D5)
TOROW basic example - 7

TOCOL converts the 2 x 3 array in B4:D5 into the 6 x 1 array in F4:K9.

Note: In Excel, arrays map directly to ranges . Technically, the array is converted and the result lands in cell F4, where it spills into the range F4:F9.

Ignore blanks and errors

The ignore argument in TOCOL can be set to ignore blanks and/or errors like this:

=TOCOL(array) // default
=TOCOL(array,1) // ignore blanks
=TOCOL(array,2) // ignore errors
=TOCOL(array,3) // ignore blanks and errors

The screen below shows how these options work with the range B4:D7, which contains both blanks and errors.

TOCOL example - ignore blanks and errors - 8

Scan by column

By default, TOCOL will read values “by row” from left to right. To read values instead by column, set scan_by_column to TRUE or 1. The worksheet below shows the default “by row” behavior in F4. In cell H4, scan_by_column is set to TRUE:

=TOCOL(B4:D5,,TRUE)
TOCOL example - scan values by column - 9

Notice the resulting array is the same size, but the values appear in a different order. Also note the optional ignore argument has been left empty.