VBA, 同一列里, 用不同的颜色标记值不一样的单元格, 如果相同值的单元格出现一次以上, 只标注最后出现的那个单元格
时间: 2023-09-14 14:08:16 浏览: 38
可以使用 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 完成您的需求:
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"` 替换为您要标记的单元格所在的工作表和列。
VBA, 同一列里, 用不同的颜色标记值不一样的单元格, 单元格值相同的, 只标注最后面的那个单元格之
可以使用VBA中的条件格式来实现这个功能。以下是一个基本的代码示例:
```VBA
Sub ColorCells()
Dim lastRow As Long
lastRow = Range("A" & Rows.Count).End(xlUp).Row '获取最后一行的行数
Dim i As Long
Dim currentCellValue As Variant
Dim previousCellValue As Variant
previousCellValue = ""
For i = 1 To lastRow
currentCellValue = Range("A" & i).Value '获取当前单元格的值
If currentCellValue <> previousCellValue Then '如果当前单元格的值和前一个单元格的值不同
Range("A" & i).Interior.ColorIndex = 6 '则将当前单元格的背景颜色设置为黄色
previousCellValue = currentCellValue '并将前一个单元格的值更新为当前单元格的值
End If
Next i
End Sub
```
该代码假设你要标记第一列中的单元格。它会遍历整个列,并将值不同的单元格的背景颜色设置为黄色。
请注意,这个代码只会标记最后出现的相同值的单元格。如果你想要标记所有单元格,可以将条件改为 `currentCellValue = previousCellValue`。