在我的工作表中,我必须为需要组装的产品分配编号。 这些数字稍后将与蓝图/CAD 图纸相对应。
当有重复时,需要有相同的“cad 编号”。 另外,有些产品是订购的,因此不需要组装。
这是一个较小的列表示例:
数量 | 项目 | 长度 | 宽度 | 高度 |
---|---|---|---|---|
1号房间 | ||||
z | 桌子 | 100 | 100 | 100 |
z | 椅子 | 100 | 100 | 200 |
z | 椅子 | 100 | 100 | 100 |
灯 | 100 | 100 | 100 | |
2号房间 | ||||
z | 桌子 | 100 | 100 | 100 |
z | 桌子 | 100 | 200 | 100 |
z | 椅子 | 100 | 100 | 100 |
宏之后应该是:
数量 | 项目 | 长度 | 宽度 | 高度 |
---|---|---|---|---|
1号房间 | ||||
1 | 桌子 | 100 | 100 | 100 |
2 | 椅子 | 100 | 100 | 200 |
3 | 椅子 | 100 | 100 | 100 |
灯 | 100 | 100 | 100 | |
2号房间 | ||||
1 | 桌子 | 100 | 100 | 100 |
4 | 桌子 | 100 | 200 | 100 |
3 | 椅子 | 100 | 100 | 100 |
我使用“z”手动选择哪些产品需要组装。
我已经尝试过多列公式。 第一个连接最后 4 列。 第二列是一个带有 countif 的公式,用于发现重复项。 第三列有一个公式,用于获取前一个数字并加 1,或者如果第 2 列为 true,则“欺骗”,这样我就可以手动获取正确的数字。
基本上它省去了 4 个步骤中的 2 个。
因为我需要连接、计数并以某种方式拥有一组已使用的数字和“连接”组合,所以从头开始有点太困难了。
我真的很想学习,所以这就是为什么我尝试使用 VBA 而不是多列公式来实现这一点。还因为文件被发送给客户。
此代码根据示例表中数据的具体排列生成所需的编号
Sub sequ()
Dim ws As Worksheet
Set ws = Worksheets("Sheet5")
lastrow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
ReDim context(2 To lastrow)
For i = 2 To lastrow
If ws.Cells(i, "B") <> "" Then
context(i) = ws.Cells(i, "B") & ws.Cells(i, "C") & ws.Cells(i, "D") & ws.Cells(i, "E")
End If
Next i
counter = 1
For i = 2 To lastrow
For j = 2 To i
If context(i) = context(j) And Cells(i, "A") = "z" And context(i) <> "" And i = j Then
Cells(i, "A") = counter
counter = counter + 1
ElseIf context(i) = context(j) And context(i) <> "" Then
Cells(i, "A") = Cells(j, "A")
End If
Next j
Next i
End Sub