Excel如何基于单元格值X次重复多个值

时间:2017-05-26 17:34:14

标签: excel vba copying

对任何可以提供帮助的人......提前致谢。

项目编号,包装和尺寸的每一行都需要在单独的工作表中重复多次,具体取决于列中的数字"标签数量"

请注意:标签数量仅用于测试目的,不需要增加

表1如下

Item #  Pack    Size    Number of Labels
12545   20      1.8oz   1
56010   6       4PK     2
70091   6       7oz     3
61816   24      1.6oz   4

4

我希望第2页输出如下内容:

Item #  Pack    Size
12545   20      1.8oz
56010   6        4PK
56010   6        4PK
70091   6        7oz
70091   6        7oz
70091   6        7oz
61816   24       1.6oz
61816   24       1.6oz
61816   24       1.6oz
61816   24       1.6oz

我找到了以下代码,但我希望修复单元格输入范围并且不使用对话框我需要帮助修改我找到的代码以便处理我给定的问题。我需要以下代码来输出多个colomns。 : (我在这里得到了代码:https://www.extendoffice.com/documents/excel/1897-excel-repeat-cell-value-x-times.html#a2

Sub CopyData()
'Update 20140724
Dim Rng As Range
Dim InputRng As Range, OutRng As Range
xTitleId = "KutoolsforExcel"
Set InputRng = Application.Selection
Set InputRng = Application.InputBox("Range :", xTitleId, InputRng.Address, Type:=8)
Set OutRng = Application.InputBox("Out put to (single cell):", xTitleId, Type:=8)
Set OutRng = OutRng.Range("A1")
For Each Rng In InputRng.Rows
    xValue = Rng.Range("A1").Value
    xNum = Rng.Range("B1").Value
    OutRng.Resize(xNum, 1).Value = xValue
    Set OutRng = OutRng.Offset(xNum, 0)
Next
End Sub

我试图做的黑客行为不起作用任何帮助都会很棒。

背景:我必须在我的工作中为新产品创建许多标签。我必须在Word中手动键入每个标签。我发现我可以使用Words Mail合并操作来导入excel数据。我有这些部件工作,但现在我需要能够获得每个项目所需的标签数量。

1 个答案:

答案 0 :(得分:1)

Private Sub hereyago()

    Dim arr As Variant
    Dim wsO As Worksheet
    Dim this As Integer

    arr = ThisWorkbook.Sheets("Sheet1").UsedRange
    Set wsO = ThisWorkbook.Sheets("Sheet2")

    For i = LBound(arr, 1) To UBound(arr, 1)
        If IsNumeric(arr(i, 4)) Then
            this = arr(i, 4)
            For h = 1 To this
                wsO.Cells(wsO.Rows.count, 1).End(xlUp).Offset(1, 0).Value = arr(i, 1)
                wsO.Cells(wsO.Rows.count, 1).End(xlUp).Offset(0, 1).Value = arr(i, 2)
                wsO.Cells(wsO.Rows.count, 1).End(xlUp).Offset(0, 2).Value = arr(i, 3)
                wsO.Cells(wsO.Rows.count, 1).End(xlUp).Offset(0, 3).Value = arr(i, 4)
            Next h
        End If
    Next i
End Sub