在Excel中复制值N次

时间:2012-08-07 07:31:33

标签: excel copy duplicates

我有简单的清单:

  A     B
item1   3
item2   2
item3   4
item4   1

需要输出:

  A
item1
item1
item1
item2
item2
item3
item3
item3
item3
item4

2 个答案:

答案 0 :(得分:13)

以下是没有VBA的一种方法:

  1. 在A的左侧插入一列,因此您当前的A和B列现在是B和C.
  2. 1放入A1
  3. =A1+C1放入A2并复制到A5
  4. 在B5中输入一个空字符串,只需在单元格中输入单引号('
  5. 在E1中加1,在E2中加2,然后复制以获得1,2,...,10
  6. =VLOOKUP(E1,$A$1:$B$5,2)放入F1并复制下来。
  7. 它应该是这样的:

    | A  | B     | C | D | E  | F     |
    |----|-------|---|---|----|-------|
    | 1  | item1 | 3 |   | 1  | item1 |
    | 4  | item2 | 2 |   | 2  | item1 |
    | 6  | item3 | 4 |   | 3  | item1 |
    | 10 | item4 | 1 |   | 4  | item2 |
    | 11 |       |   |   | 5  | item2 |
    |    |       |   |   | 6  | item3 |
    |    |       |   |   | 7  | item3 |
    |    |       |   |   | 8  | item3 |
    |    |       |   |   | 9  | item3 |
    |    |       |   |   | 10 | item4 |
    

答案 1 :(得分:1)

这是VBA解决方案。我不太明白VBA不会动态的评论。它就像你制作它一样充满活力,就像一个公式。请注意,此宏将擦除Sheet1上的所有数据将其替换为新输出。如果您希望在不同的工作表上获得所需的输出,请将引用更改为Sheet2或您拥有的内容。

Option Explicit

Sub MultiCopy()

Dim arr As Variant
Dim r As Range
Dim i As Long
Dim currRow As Long
Dim nCopy As Long
Dim item As String

'store cell values in array
arr = Sheet1.UsedRange
currRow = 2

'remove all values
Sheet1.Cells.ClearContents
Sheet1.Range("A1") = "A"

For i = 2 To UBound(arr, 1)
    item = arr(i, 1)
    nCopy = arr(i, 2) - 1
    If nCopy > -1 Then
        Sheet1.Range("A" & currRow & ":A" & (currRow + nCopy)).Value = item
        currRow = currRow + nCopy + 1
    End If
Next

End Sub