VBA, 同一列里, 用不同的颜色标记值不一样的单元格, 如果相同值的单元格出现一次以上, 只标注最后出现的那个单元格
时间: 2023-09-14 10:08:16 浏览: 154
可以使用 VBA 中的条件格式来实现这个目的。以下是实现步骤:
1. 打开 VBA 编辑器,新建一个模块,输入以下代码:
```
Function LastRow(ByVal col As Range) As Long
LastRow = col.Cells(col.Cells.Count).End(xlUp).Row
End Function
```
2. 在工作表中选择需要进行标记的单元格列,打开条件格式管理器(可以通过主菜单中的“开始”选项卡中的“条件格式”按钮进入),选择“使用公式确定要设置格式的单元格”,输入以下公式:
```
=AND(COUNTIF($A$1:A1,A1)=1,ROW()=LastRow(A:A))
```
其中,$A$1:A1 是你选择的单元格列的范围,A1 是当前单元格的地址。
3. 点击“格式”按钮,选择需要的填充颜色,点击“确定”按钮。
4. 点击“确定”按钮,完成条件格式的设置。
这样,相同值的单元格只会标注最后出现的那个单元格,不同值的单元格会用不同的填充颜色标记。
相关问题
VBA, 同一列里, 用不同的颜色标记值不一样的单元格, 如果相同值的单元格出现一次以上, 只对最后面出现的值相同的单元格颜色, 之前的保持不变
您可以使用VBA代码来实现这个需求,以下是一个示例:
```vb
Sub ColorCells()
Dim lastRow As Long
Dim currentVal As String
Dim prevVal As String
Dim count As Integer
lastRow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row '获取数据的行数
For i = lastRow To 1 Step -1 '从最后一行开始循环
currentVal = Cells(i, 1).Value '获取当前单元格的值
If currentVal = prevVal Then '如果当前值等于上一个值
count = count + 1 '计数器加1
Else
count = 1 '重置计数器
End If
If count = 1 Then '如果当前值是第一次出现
Cells(i, 1).Interior.ColorIndex = 3 '标记为黄色
Else
Cells(i, 1).Interior.ColorIndex = 4 '标记为绿色
End If
prevVal = currentVal '将当前值保存为上一个值
Next i
End Sub
```
这段代码会遍历第一列的所有单元格,如果当前值是第一次出现,则将其标记为黄色;如果当前值不是第一次出现,则将其标记为绿色。注意,这里使用了计数器来判断当前值是否是第一次出现。
希望这个代码示例能够帮到您!
VBA, 同一列里, 用不同的颜色标记值不一样的单元格, 相同值的单元格标记一次, 只能在最后一次出现时标上颜色
您可以通过以下步骤使用 VBA 完成您的需求:
1. 在 VBA 中选择您要标记的单元格所在的列。
2. 遍历该列中的每个单元格,比较该单元格的值与相邻单元格的值是否相等。
3. 如果相等,则跳过该单元格,继续向下遍历。
4. 如果不相等,则将该单元格标记为您所需的颜色。
5. 在遍历到该列的最后一个单元格时,如果该单元格的值与前一个单元格不相等,则将该单元格标记为您所需的颜色。
以下是一个示例代码,可以实现您的需求:
```
Sub MarkDifferentValues()
Dim lastRow As Long
Dim currentRow As Long
Dim currentValue As Variant
Dim previousValue As Variant
lastRow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row
For currentRow = 2 To lastRow
currentValue = ActiveSheet.Cells(currentRow, "A").Value
previousValue = ActiveSheet.Cells(currentRow - 1, "A").Value
If currentValue = previousValue Then
' Skip if the current value is the same as the previous value
Continue For
Else
' Mark the current cell with your desired color
ActiveSheet.Cells(currentRow, "A").Interior.Color = RGB(255, 0, 0)
End If
Next currentRow
' Mark the last cell with your desired color if it's different from the previous cell
If ActiveSheet.Cells(lastRow, "A").Value <> ActiveSheet.Cells(lastRow - 1, "A").Value Then
ActiveSheet.Cells(lastRow, "A").Interior.Color = RGB(255, 0, 0)
End If
End Sub
```
您可以将 `RGB(255, 0, 0)` 替换为您所需的颜色。并将代码中的 `ActiveSheet.Cells` 和 `"A"` 替换为您要标记的单元格所在的工作表和列。
阅读全文