I’ve been looking for it everywhere but I can’t seem to find the answer although it seems an regular problem.

I’m trying to automate the duplication of cells in excel.

I have two lists: list 1 with values 1,2,3,4 and the second list is with values a,b,c,d.

Now I want to have a file where for every value in list 1, the values in list two are duplicated in excel. So:

```
1 - a
1 - b
1 - c
1 - d
2 - a
2 - b
2 - c
2 - d
3 - a
...
```

I’m wondering if there’s a function within excel or if not a macro that I could use to solve this? For this short list it is of course easy to do with autofill, but when the list consists of a few hundred values, it gets more complicated…

This should be really easy to understand …

Open VBE `ALT`+`F11` and right click VBA project. Insert a Module and copy-paste the below code. Hit `F5` to run

```
Sub Main()
Dim number As Range
Dim letter As Range
For Each number In Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row)
For Each letter In Range("B1:B" & Range("B" & Rows.Count).End(xlUp).Row)
With Sheet2
.Range("A" & .Range("A" & Rows.Count).End(xlUp).Row + 1) = number
.Range("B" & .Range("b" & Rows.Count).End(xlUp).Row + 1) = letter
End With
Next
Next
End Sub
```

The above code assumes that your sheet1 looks like this

and the results will be on Sheet2 like this

### Answer：

You can do this also with a few formulas/support columns without VBA:

Let’s assume your first category is in column A, starting in A2 and your category is in column B.

- Determine the record count for each category, e.g. in C1:
`=COUNTA($A:$A)-1`

(assuming a header row) and C2 equivalent - Place two support column, e.g. in E and F) – E will hold the row for the first category and F the Id for the second category. Place the following formula in E2:
`=IF(ISTEXT(E1),1,IF(F2=1,E1+1,E1))`

and this in F2:`=IF(ISTEXT(F1),1,IF(F1=$C$2,1,F1+1))`

- Add two more columns for the final result – G for category one with formula
`=INDEX(A:A,E2+1)`

and H for category 2 with the formula`=INDEX(B:B,F2+1)`

. - Now simply copy the formulas for the columns E:H down for a many rows as required (number of rows required is
`=C1*C2`

In the end it’ll look something like this:

You can download the file here.

Tags: excel, excelarrays, list