How to Repeat Excel Items for Every Month with Dynamic Array Formulas
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.

- 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.
Ensure your spreadsheet software is up to date and supports modern dynamic array functions (like LET, SEQUENCE, and FILTER) before proceeding.
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.
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.
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)))
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 Power Query for Data Transformation
Power Query offers a simpler, visually driven alternative to complex array formulas, making it highly suitable for repeating and cross-joining records.
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. Open Your Data: Launch WPS Spreadsheet and open the workbook containing your items and target month list.
- 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. Let the Array Spill: Press Enter. WPS Spreadsheet will automatically calculate and spill the repeated month data into the adjacent cells seamlessly.

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.




