我有以下情况我无法弄明白。有没有办法在if循环中获取计数器而不覆盖自身。
我有这段代码:
lastrow = Sheets("sheetx").Cells.SpecialCells(xlCellTypeLastCell).Row
For a = 1 To lastrow
If Sheets("sheetx").Cells(a, 1).Value = "aa" Then
Sheets("sheetx").Cells(a, 2).Value = "zz"
End If
If Sheets("sheetx").Cells(a, 1).Value = "bb" Then
Sheets("sheetx").Cells(a, 2).Value = "yy"
End If
If Sheets("sheetx").Cells(a, 1).Value = "cc" Then
Sheets("sheetx").Cells(a, 2).Value = "zz"
End If
If Sheets("sheetx").Cells(a, 1).Value = "dd" Then
Sheets("sheetx").Cells(a, 2).Value = "ww"
End If
Next a
左边的数据就是我得到的。但我希望数据在右边。当“aa”的if语句分配超过“zz”的8倍时,它必须停止(见右图)分配“zz”。有没有一种简单的方法来解决这个问题?
答案 0 :(得分:1)
您可以使用单独的计数器来计算"aa"
被替换的次数。像这样:
Dim aaCounter As Integer
lastrow = Sheets("sheetx").Cells.SpecialCells(xlCellTypeLastCell).Row
aaCounter = 1
For a = 1 To lastrow
If Sheets("sheetx").Cells(a, 1).Value = "aa" Then
If aaCounter <= 8 Then
Sheets("sheetx").Cells(a, 2).Value = "zz"
aaCounter = aaCounter + 1
End If
End If
If Sheets("sheetx").Cells(a, 1).Value = "bb" Then
Sheets("sheetx").Cells(a, 2).Value = "yy"
End If
If Sheets("sheetx").Cells(a, 1).Value = "cc" Then
Sheets("sheetx").Cells(a, 2).Value = "zz"
End If
If Sheets("sheetx").Cells(a, 1).Value = "dd" Then
Sheets("sheetx").Cells(a, 2).Value = "ww"
End If
Next a
如果您愿意,可以对其他值执行类似操作。