You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:完善VBA代码以基于重复Order_Num和Cust_Num生成单元格范围

Excel VBA 实现 Cust_Num 范围生成逻辑

以下是修改后的完整代码,已加入 Cust_range 的生成逻辑,完全符合你给出的规则:

Private Sub CommandButton1_Click()

Dim ws1 As Worksheet, lastrow As Long, FirstInvoice As String, Count As Long, A As Long, Count1 As Long
Dim intComp As Integer, B As Long, currentCust As String, custStartRow As Long

Set ws1 = Sheets("Sheet1")
lastrow = ws1.Range("A:C").Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row

FirstInvoice = ws1.Cells(2, "A").Value
If FirstInvoice <> "" Then
    Count = 1
    Count1 = 2
End If

For A = 2 To lastrow + 1
    intComp = StrComp(FirstInvoice, ws1.Cells(A, "A").Value)

    If intComp = 0 Then
        Count = Count + 1
    Else
        ' 生成 Order_range
        ws1.Cells(A - 1, "D").Value = "A" & Count1 & " to " & "A" & Count

        ' --- 生成 Cust_range 逻辑开始 ---
        currentCust = ws1.Cells(Count1, "C").Value
        custStartRow = Count1

        ' 遍历当前 Order_Num 分组内的所有行
        For B = Count1 + 1 To Count
            ' 检查 Cust_Num 是否变化
            If StrComp(ws1.Cells(B, "C").Value, currentCust) <> 0 Then
                ' 写入上一个 Cust_Num 的范围
                ws1.Cells(B - 1, "E").Value = "C" & custStartRow & " to " & "C" & (B - 1)
                ' 更新当前 Cust_Num 和起始行
                currentCust = ws1.Cells(B, "C").Value
                custStartRow = B
            End If
        Next B

        ' 写入分组内最后一个 Cust_Num 的范围
        ws1.Cells(Count, "E").Value = "C" & custStartRow & " to " & "C" & Count
        ' --- 生成 Cust_range 逻辑结束 ---
        
        Count = 1
        Count1 = A
        FirstInvoice = ws1.Cells(A, "A").Value
    End If
Next A

End Sub

逻辑说明

  1. Order_range 保持原有逻辑:在每个 Order_Num 分组的最后一行写入该分组的A列范围
  2. Cust_range 生成逻辑:
    • 针对每个 Order_Num 分组,从第一行开始跟踪当前 Cust_Num 的起始行
    • 遍历分组内的后续行,当 Cust_Num 发生变化时,在变化前的最后一行写入该 Cust_Num 的C列范围
    • 遍历完分组所有行后,处理最后一个 Cust_Num 的范围并写入对应行的E列

内容的提问来源于stack exchange,提问作者Ranger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 12:15:48