Function Problems

How to Fix Excel CONCAT Not Combining Arrays Row by Row

Natalie TaylorNatalie Taylor Oct 15, 2026 870 views

Question details

The user needs to combine corresponding cells from two or more array ranges row by row, but the CONCAT function aggregates all elements into a single text string instead of performing pairwise concatenation.

How to Fix Excel CONCAT Not Combining Arrays Row by Row
Product
Excel
Device & OS
not provided
Scenario
Attempting to merge data from corresponding cells across multiple columns or arrays to create a new, combined array of text.
Observed behavior
Using the CONCAT function on multiple arrays merges every single value into one continuous text block rather than returning a new array structured row by row.
Before you start

Check your spreadsheet software version to confirm if it supports dynamic arrays (like Microsoft 365, Office 2021, or newer), as older versions require legacy array formula execution.

Solution 1Recommended

Use the Ampersand (&) Operator for Dynamic Arrays

The most effective way to combine corresponding cells from two arrays row by row is to use the ampersand operator instead of the CONCAT function.

Unlike the CONCAT function, which squashes all array items together indiscriminately, the ampersand (&) operator forces the spreadsheet to evaluate the text concatenation pairwise, outputting an array of the same dimensions.

1
Select the target cell

Click on the cell in your worksheet where you want the first combined text string to appear.

2
Enter the dynamic array formula

Type the formula using the ampersand operator, referencing your two arrays. For example, type =D1:D7&F1:F7.

3
Execute the formula

Press Enter. The results will automatically spill down the column, perfectly combining the text row by row.

Adding Spaces or Separators: To add a space or delimiter between the array values, include it in quotation marks within the formula, like this: =D1:D7&" "&F1:F7.
Advanced Spreadsheet Features

Easily Combine Array Data with WPS Spreadsheet

WPS Spreadsheet natively supports modern dynamic arrays, allowing you to quickly combine large datasets row by row without complex legacy formulas. Simply use the ampersand operator and let the software spill the results automatically.

  1. 1. Open your workbook: Launch WPS Office Spreadsheet and open the file containing the arrays you need to merge.
  2. 2. Enter the pairwise formula: Select the top cell of your destination column and type your array formula using the ampersand, such as =A1:A10&B1:B10.
  3. 3. Generate the results instantly: Press Enter. WPS Spreadsheet will automatically spill the concatenated strings row by row, accurately pairing your data.
100% compatible with Microsoft Excel formulas like CONCAT and CONCATENATEBuilt-in support for dynamic array spilling to handle massive datasets row by rowLightweight, fast, and completely free to use for everyday office tasks
microsoft office alternative - wps office

Frequently Asked Questions

Why does the Excel CONCAT function merge all cells into one string?

The CONCAT function is designed to aggregate all provided text arguments into a single continuous string. When given an array or range, it processes every cell in the range sequentially and joins them together, rather than evaluating the operation pairwise.

What is the difference between CONCAT and CONCATENATE?

CONCAT is a newer function that can accept entire ranges (like A1:A5) and merge them into one large text block. CONCATENATE only accepts individual cell references or explicit strings (like A1, A2) and does not inherently process whole ranges.

What does it mean if my dynamic array formula returns a #SPILL! error?

A #SPILL! error occurs when a dynamic array formula needs to output results across multiple cells, but one or more of those target cells already contain data. To fix this, clear the cells where the formula intends to place the resulting text.

Can I use the TRANSPOSE function to combine arrays row by row?

Yes, in certain nested scenarios, formulas like =CONCAT(TRANSPOSE(D1:D7), TRANSPOSE(F1:F7)) might be suggested, but they can produce unexpected blocks of text depending on array dimensions. Using the direct ampersand operator (=D1:D7&F1:F7) is much simpler and more reliable.