Excel VBA 代码使用单元格的值作为单元格值的行号位置

问题描述 投票:0回答:1

我有一个 Excel 电子表格,其中包含导出的销售信息。我想将信息汇总到另一个选项卡上。基本上,摘要表 A 列将列出客户姓名,然后列出他们购买的商品。然后是下一个客户和他们购买的商品,在同一列中。

我能够弄清楚如何提取所有客户姓名以及他们出现的频率。但我不知道如何复制他们的名字,同时为他们的项目在他们的名字下列出留出空间。

我已经弄清楚了第 1 步,但需要第 2 步的帮助
enter image description here

我正在考虑使用一个函数,让我循环遍历列表,并在粘贴客户名称时使用 B 列中的值作为行位置。

类似的东西

Dim i As Long
Dim j As Long
Dim NumRows As Long

NumRows = Range("A1", Range("A1").End(xlDown)).Rows.Count

Cells(1,4).Value = Cells(1,1).Value

j="B1"

For i=2 To NumRows

    Cells([j+3],4).Value = Cells("A[i]",1).Value

    j=j+"B[i]"+2

Next i
excel vba cell
1个回答
0
投票
    Dim CustomerRange As Range ' CustomerName-StartPosition
    Dim GoalRange As Range     ' Range, where it is Printed
    Dim NumRows As Long        ' Number of Customers
    Dim i As Long              ' For CustomerNames
    Dim j As Long              ' For CustomerAmount
    Dim k As Long              ' For Whole offset of GoalRange

    Set CustomerRange = Range("A1")
    Set GoalRange = Range("D1")
    NumRows = Range(CustomerRange, CustomerRange.End(xlDown)).Rows.Count

    CustomerRange.Offset(NumRows, 1).Value = CustomerRange.Value ' Dont know why you want this but here it is

    For i = 0 To NumRows - 1
        GoalRange.Offset(i + k, 0).Value = CustomerRange.Offset(i, 0).Value
        k = k + 1
        For j = 1 To CustomerRange.Offset(i, 1).Value
            GoalRange.Offset(i + k, 0).Value = CustomerRange.Offset(i, 0).Value & " Item " & j
            k = k + 1
        Next
    Next
© www.soinside.com 2019 - 2024. All rights reserved.