在excel VBA中,如何根据另一列中更改的值逐列增加数字
我在excel中有两列。一个是公司名称。另一列是发票编号,该编号仅应在公司名称更改时增加。应输入起始发票编号 输入起始发票编号=>1001。每次新公司出现时,增加发票编号的VBA代码是什么在excel VBA中,如何根据另一列中更改的值逐列增加数字,excel,vba,Excel,Vba,我在excel中有两列。一个是公司名称。另一列是发票编号,该编号仅应在公司名称更改时增加。应输入起始发票编号 输入起始发票编号=>1001。每次新公司出现时,增加发票编号的VBA代码是什么 Company A 1001 Company A 1001 Company A 1001 Company B 1002 Company B 1002 Company C 1003 可以通过公式或VBA代码求解 逻辑是查看您当前的公司名称单元格是否与
Company A 1001
Company A 1001
Company A 1001
Company B 1002
Company B 1002
Company C 1003
可以通过公式或VBA代码求解 逻辑是查看您当前的公司名称单元格是否与上一个单元格相同。如果它们相同,则复制上一个值。否则,将发票号增加为1 公式,从单元格C2开始:
=IF(A1=A2,C1,C1+1)
VBA代码:
您可能需要更改列号,使其适合您的数据集
Sub IncreaseNumber()
Dim ws As Worksheet
Dim lrow As Long
Dim i As Long
Set ws = Worksheets("Sheet1") 'Name the worksheet
lrow = ws.Cells(Rows.Count, "A").End(xlUp).Row 'find the lastrow in column A
For i = 2 To lrow 'Loop from second row to the last row
If ws.Cells(i - 1, "A").Value = ws.Cells(i, "A").Value Then 'If cell "i -1" and cell "i" is equal then
ws.Cells(i, "B").Value = ws.Cells(i - 1, "B").Value 'take the same value as row above
Else
ws.Cells(i, "B").Value = ws.Cells(i - 1, "B").Value + 1 'if not the same, then add 1 to the invoice number
End If
Next i
End Sub
可以通过公式或VBA代码求解 逻辑是查看您当前的公司名称单元格是否与上一个单元格相同。如果它们相同,则复制上一个值。否则,将发票号增加为1 公式,从单元格C2开始:
=IF(A1=A2,C1,C1+1)
VBA代码:
您可能需要更改列号,使其适合您的数据集
Sub IncreaseNumber()
Dim ws As Worksheet
Dim lrow As Long
Dim i As Long
Set ws = Worksheets("Sheet1") 'Name the worksheet
lrow = ws.Cells(Rows.Count, "A").End(xlUp).Row 'find the lastrow in column A
For i = 2 To lrow 'Loop from second row to the last row
If ws.Cells(i - 1, "A").Value = ws.Cells(i, "A").Value Then 'If cell "i -1" and cell "i" is equal then
ws.Cells(i, "B").Value = ws.Cells(i - 1, "B").Value 'take the same value as row above
Else
ws.Cells(i, "B").Value = ws.Cells(i - 1, "B").Value + 1 'if not the same, then add 1 to the invoice number
End If
Next i
End Sub
这可以用一个简单的公式来完成。这可以用一个简单的公式来完成。一个假设是另一个假设是公司的列表被排序。在实现上述逻辑之前,我添加了一行代码,按照公司名称对工作表进行排序。你完全正确@cknowlan。我只是假设A列已经排序,另一个假设是公司的列表已经排序。在实现上述逻辑之前,我添加了一行代码,按照公司名称对工作表进行排序。你完全正确@cknowlan。我只是假设A列已排序。