Function Problems

How to Repeat Excel Items for Every Month with Dynamic Array Formulas

Aamir Naveed AkramAamir Naveed Akram Nov 10, 2026 869 views

Question details

The user needs to dynamically repeat items in a list for every month of the year, while keeping items that already have a specific month assigned restricted to that month only.

How to Repeat Excel Items for Every Month with a Dynamic Array Formula
Product
Spreadsheet
Device & OS
not provided
Scenario
Creating a dynamic list or report where source items must be cross-joined with a list of months automatically, bypassing the need for manual copy-pasting.
Observed behavior
The goal state is an automatically updated array that replicates rows lacking a specified month across all months, retains targeted month assignments, and sorts the final list chronologically.
Before you start

Ensure your spreadsheet software is up to date and supports modern dynamic array functions (like LET, SEQUENCE, and FILTER) before proceeding.

Solution 1Recommended

Use a LET Formula to Cross-Join Items and Dates

Use a comprehensive dynamic array formula to automate the extraction, repetition, and filtering of records based on your defined months list.

This dynamic array formula uses the LET function to assign names to calculation steps, making it easier to process the logic. It isolates rows that already have a month assigned, generates repeated rows for the remaining items by cross-joining them with your dates list, and then stacks and sorts them together.

1
Define Your Ranges

Identify the main data range containing your items (for example, A2:R14) and ensure you have a separate array or range defining the target dates/months.

2
Input the Dynamic Formula

Enter the following formula into your target cell: =LET(rng,A2:R14,arr,IF(ISBLANK(rng),"",rng),hdr,TAKE(arr,1),bdy,DROP(arr,1),rId,SEQUENCE(ROWS(bdy)),dts,TOROW(dates,1),inc,ISNUMBER(XMATCH(CHOOSECOLS(bdy,4),dts)),key,FILTER(rId,(CHOOSECOLS(bdy,1)<>"")*NOT(inc)),one,TOCOL(IF(dts,key),,1),two,FILTER(rId,inc),top,CHOOSEROWS(bdy,one),all,VSTACK(HSTACK(TAKE(top,,3),TOCOL(IF(key,dts),,1),DROP(top,,4)),CHOOSEROWS(bdy,two)),VSTACK(hdr,SORTBY(all,CHOOSECOLS(all,4),1,VSTACK(one,two),1)))

3
Adjust Range Attributes

Replace the 'dates' placeholder with your actual months range. If your version of Excel or WPS Spreadsheet does not support TRIMRANGE, explicitly declare your range size like A2:R14 as shown above.

Use a LET Formula to Cross-Join Items and Dates
Handling #CALC! Errors: This formula may return a #CALC! error if there are no records in the source data, or if all records already contain perfectly matching dates without requiring repetition.

Process Dynamic Arrays Effortlessly with WPS Spreadsheet

WPS Spreadsheet is fully equipped to handle complex dynamic array formulas and robust data transformations. Whether you use nested functions like LET and FILTER or utilize the built-in data queries, WPS Spreadsheet makes automating month-by-month reports straightforward.

  1. 1. Open Your Data: Launch WPS Spreadsheet and open the workbook containing your items and target month list.
  2. 2. Apply the Formula: Select an empty cell with enough space below and to the right, then paste your LET or REDUCE dynamic array formula.
  3. 3. Let the Array Spill: Press Enter. WPS Spreadsheet will automatically calculate and spill the repeated month data into the adjacent cells seamlessly.
Seamless compatibility with Microsoft Excel dynamic array formulas like LET, VSTACK, and SEQUENCE.High performance on large datasets, reducing lag when calculations spill across multiple rows.Intuitive data tools for quick sorting, filtering, and cross-joining operations.Free and lightweight, offering a familiar UI to streamline your workflow.
microsoft office alternative - wps office

Frequently Asked Questions

Why does my dynamic array formula return a #CALC! error?

The #CALC! error typically occurs when the formula evaluates to an empty array. In this specific scenario, it happens if there are no records in the source data or if all source records already contain matching dates, leaving the FILTER function with nothing to return.

Can I use REDUCE instead of LET for repeating items?

Yes, an alternative approach is to use the REDUCE function combined with VSTACK. You can iterate through the original table and dates array, appending the respective month to items without one, retaining items with specified months, and then sorting the stacked array by date.

Why is Power Query recommended over a dynamic array formula for this task?

While dynamic array formulas are powerful, combining cross-joins, filters, and sorts in a single LET formula can become highly complex and difficult to troubleshoot. Power Query handles repeating and filtering records visually and step-by-step, making it easier to maintain.