Power Query: Split Column by Delimiter into Rows (Not Columns)

Power Query Split Column into Rows feature image showing a before-and-after comparison where a cell containing "Excel, Charts, Reporting" for product P001 is expanded into three separate green-highlighted rows (one per tag), alongside the five-step process, the M code pattern using Table.ExpandListColumn, six example pills including product tags and survey multi-select, and a tip to always include a unique ID column before splitting.
When a cell holds “London, Paris, Berlin” and you need three separate rows, Split Column into Rows is the answer. Unlike Split to Columns — which creates a wide, ragged table with empty cells — splitting to rows stacks every value vertically under the same header. The result is clean, normalized data that works perfectly with PivotTables and Power Pivot relationships. This guide walks through the full five-step process, explains how to handle comma, semicolon, and line-break delimiters, shows how to remove blank rows caused by trailing delimiters, and covers six worked examples including product tag expansion, multi-select survey answers, mixed delimiter handling, and a rejoin-after-split pattern for tag popularity scoring.

A cell holds "London, Paris, Berlin". You need three separate rows — one city per row. That is the challenge Power Query’s Split Column by Delimiter into Rows solves in just a few clicks. Unlike Split to Columns, which spreads values horizontally and creates a messy variable-width table, Split to Rows stacks every value vertically under the same column header. The result is clean, normalized data that works perfectly with PivotTables, VLOOKUP, and Power Pivot relationships.

This guide walks through exactly how to perform this transformation. It covers the full step-by-step process, the difference between splitting to columns versus rows, handling multiple delimiters, dealing with blank values, and six practical worked examples. These range from splitting comma-separated product tags to expanding multi-value survey responses into an analysis-ready table.

Availability: Split Column by Delimiter into Rows is available in Power Query in Excel 365, Excel 2021, Excel 2019, and Excel 2016 (with the Get & Transform add-in). It is also available in Power BI Desktop. The steps are identical across all versions.

Why Split Into Rows Instead of Columns?

Most people’s first instinct is to split text into columns. That works when every row has exactly the same number of values. In practice, data is rarely that clean. One order may have three tags; another may have seven. Splitting to columns creates a wide table with dozens of mostly empty columns — a format that is nearly impossible to aggregate or filter.

Splitting to rows normalizes the data instead. Each value gets its own row, and all other columns in the same row repeat to preserve context. This is called a one-to-many expansion, and it transforms the multi-value cell into a proper relational structure. As a result, you can count, filter, and group by any individual tag or value without workarounds.

ApproachResult shapeBest forDrawback
Split to ColumnsWide: one new column per valueFixed-width data (dates, codes)Ragged columns; empty cells; hard to aggregate
Split to RowsTall: one new row per valueVariable-length lists; tags; categoriesRow count multiplies; need OrderID to rejoin

How to Split a Column into Rows in Power Query

1
Select your data range or Table in Excel. Go to Data → From Table/Range (or Get Data → From Table/Range) to open Power Query Editor.
2
Click the column header that contains the multi-value cells (e.g. the Tags column containing "Excel, Power Query, Charts").
3
In the ribbon, go to Home → Split Column → By Delimiter. The Split Column by Delimiter dialog opens.
4
Choose or type your delimiter (comma, semicolon, space, etc.). Then click Advanced Options to expand the section at the bottom of the dialog.
5
Under "Split into", change the selection from Columns to Rows. Click OK.
6
Power Query expands the column into multiple rows. Each original row is duplicated for every value, and the other columns repeat. Click Home → Close & Load to send the result to Excel.
Trim whitespace after splitting: After splitting by comma, values often have a leading space ("Paris" instead of "Paris"). Select the expanded column, then go to Transform → Format → Trim to remove surrounding whitespace from all values. This prevents duplicate counts from space-padded matches.

Examples 1–4: Split Column into Rows in Practice

1
Split product tags — comma-separated tags into one row per tag

An e-commerce product table has a Tags column where each product carries multiple comma-separated tags. The goal is to produce one row per tag so that a PivotTable can count how many products belong to each tag category. This is the most common split-to-rows use case.

ProductID
Name
Tags (before)
P001
Notebook Pro
Excel, Charts, Reporting
P002
Dashboard Kit
Power Query, Power BI

After splitting Tags by comma into rows (with Trim applied), the result becomes:

ProductID
Name
Tag
P001
Notebook Pro
Excel
P001
Notebook Pro
Charts
P001
Notebook Pro
Reporting
P002
Dashboard Kit
Power Query
P002
Dashboard Kit
Power BI
Power Query M code for this transformation: Split Tags by comma, expand to rows, trim whitespace. Table.TransformColumns( Table.ExpandListColumn( Table.TransformColumns(Source, {{ "Tags", Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv), type list }}), "Tags" ), {{"Tags", Text.Trim, type text}} )
2
Expand survey answers — multi-select responses into analysable rows

Survey tools often export multi-select question answers as semicolon-separated strings in a single cell. For example, a "Which tools do you use?" question might export "Excel; Power BI; Tableau" in one cell. Splitting to rows produces one answer per row, enabling you to count how many respondents selected each tool.

RespondentID column preserved through the split. Tools column split by semicolon delimiter into rows. After expanding: 1 row per tool per respondent. Steps: 1. Select Tools column. 2. Home → Split Column → By Delimiter → Semicolon. 3. Advanced Options → Split into: Rows. 4. Transform → Format → Trim (remove whitespace). 5. Close & Load. Result: 300 respondents with avg 2.3 answers = ~690 rows. PivotTable on Tool field now counts correctly.
Keep the respondent ID column: Always include a unique identifier (RespondentID, OrderID, CustomerID) in the table before splitting. This column repeats for every expanded row and lets you rejoin back to the original table if needed.
3
Handle multiple delimiters — split by comma or semicolon mixed

Real-world data frequently mixes delimiters. Some rows use commas; others use semicolons; some use both. A single delimiter split misses the other type and leaves compound values unsplit. The solution is to use a custom split with a regular expression, or to chain two splits sequentially in Power Query.

Method 1: Replace all semicolons with commas first, then split by comma. Step A: Add a custom column that replaces ";" with ",": Text.Replace([Tags], ";", ",") Step B: Split the new column by comma into rows. Method 2: Split Column → By Delimiter → Custom. Type the delimiter as: ,|; Then under Advanced Options, check "Use special characters" if available. (Power BI supports regex here; Excel Power Query may require Method 1.) Method 3: M code approach using List.Combine and splitting by each delimiter: List.Combine( List.Transform( Text.Split([Tags], ","), each Text.Split(_, ";") ) )
4
Remove blank rows — filter out empty values after splitting

When source data has trailing delimiters (e.g. "Excel, Charts, ") or double delimiters ("Excel,,Charts"), splitting produces blank rows. These blanks inflate counts and break aggregations. Filtering them out immediately after the split keeps the data clean.

After splitting Tags into rows, some rows may have blank Tag values. Filter these out using the column dropdown or M code. Using the column dropdown: Click the Tags column dropdown arrow → uncheck (blank) → OK. Using M code (more robust — works even if new blanks appear on refresh): Table.SelectRows(SplitTable, each [Tags] <> "" and [Tags] <> null) Additionally, trim whitespace before filtering so " " (space-only) rows are also caught: Table.SelectRows(TrimmedTable, each Text.Trim([Tags]) <> "")

Examples 5–6: Advanced Split-to-Rows Scenarios

5
Split line-break-separated values — multi-line cell content

Some exports separate values with line breaks (Alt+Enter in Excel, or CHAR(10)). These cells appear multi-line in Excel. In Power Query, you split them by selecting "Custom" as the delimiter and typing #(lf) — the Power Query M notation for a line feed character. This expands each line into its own row.

Cell contains: "January: 45,200 February: 38,100 March: 52,700" (three lines separated by line breaks, stored in one cell) In the Split Column by Delimiter dialog: Delimiter: Custom Value: #(lf) ← this is the line feed character in Power Query M Split into: Rows After splitting: three rows, one per month line. Then use Split Column by Colon to separate label from value.
6
Rejoin after split — count distinct tags and merge back to original

A common pattern is to split, aggregate, and then rejoin the result back to the original table. For example: split tags into rows, count how many products use each tag, then merge that tag-count table back to the product list. This gives each product its tag popularity score without permanently expanding the original table.

Step 1: Split Tags into rows (Query A: ProductsExpanded). Step 2: In a new query, group by Tag and count rows: Home → Group By → Tag → Count Rows → name result "TagCount" Output: a Tag | TagCount table. Step 3: In the original Products query, merge with the TagCount query: Home → Merge Queries → Join on Tags = Tag → Left Outer. Expand the TagCount column. Step 4: Result: each product row now has the tag-level count as a new column without permanently expanding the product table. Note: if a product has 3 tags, the merge returns the count for each tag separately — use a second GroupBy to average if needed.

Common Issues and How to Fix Them

The "Split into: Rows" option is not visible

The Rows option only appears under Advanced Options inside the Split Column by Delimiter dialog. It is not visible in the main dialog view. Click Advanced Options at the bottom of the dialog to expand the section. If you are using an older Excel version (2016 with the Get & Transform add-in), the Advanced Options section may not be available. In that case, use the M code approach: add a custom column that applies Text.Split([Column], ",") to produce a list, then use Add Column → Expand to expand it into rows.

The row count is too high after splitting

Row multiplication is expected behaviour — each original row produces as many rows as it has values. However, if the count is higher than expected, check for: trailing delimiters (e.g. "Excel," with a trailing comma producing a blank row), blank cells in the split column (producing one empty row per blank), and double delimiters (e.g. "Excel,,Charts" producing a blank middle row). Fix by applying a filter on the expanded column to exclude null and empty-string values immediately after the split step.

Frequently Asked Questions

  • How do I split a column into rows (not columns) in Power Query?+
    Select the column you want to split. Go to Home → Split Column → By Delimiter. Choose or enter your delimiter (comma, semicolon, etc.). Click Advanced Options at the bottom of the dialog. Under "Split into", select Rows instead of Columns. Click OK. Each delimited value in the column gets its own row, and all other columns in the row repeat to preserve context. Apply Transform → Trim afterward to remove whitespace from the split values.
  • What is the difference between Split to Columns and Split to Rows?+
    Split to Columns creates new columns (one per value), keeping the same number of rows but widening the table. It works well when every row has the same fixed number of values. Split to Rows creates new rows (one per value), keeping the same columns but increasing the row count. It is the correct choice when rows have variable numbers of values, such as product tags, survey answers, or category lists. Splitting to rows produces normalized data that works cleanly with PivotTables and aggregations.
  • How do I split by a line break (Alt+Enter) into rows?+
    In the Split Column by Delimiter dialog, select Custom as the delimiter type. Type #(lf) in the delimiter box. This is Power Query’s M notation for a line feed (CHAR(10) in Excel). Then select Rows under Advanced Options and click OK. Each line in the multi-line cell becomes its own row. If the cells also contain carriage returns (CHAR(13), common in Windows line endings), type #(cr)#(lf) instead to match the Windows line break sequence.
  • How do I remove blank rows created by trailing delimiters?+
    After splitting, blank rows appear where trailing or consecutive delimiters existed. Filter them out immediately: click the dropdown arrow on the split column and uncheck (blank). Alternatively, add a filter step in M code: Table.SelectRows(table, each Text.Trim([ColumnName]) <> ""). The Trim call ensures space-only values are also treated as blank. This filter step persists on every refresh so new trailing-delimiter rows are automatically removed.