Excel表格相同的数值改成红色

2025-11-11 00:38:06

1、在Excel表格的菜单栏上面点击【开发工具】、【Visual Basic】打开VBA编辑器,或者使用【Alt+F11】组合键打开VBA编辑器。

Excel表格相同的数值改成红色

2、在左侧的“工程资源管理器”下方双击“Sheet1(Sheet1)”,在“Sheet1”的代码窗口里面输入以下VBA程序代码,再按【F5】键运行程序。

Sub ValueColorChange()

Dim h, c, i1, i2, i3, i4, i5, i6, i7, i8, i9, My1Array(100, 100), My2Array(100, 100), My3Array(100, 100)

On Error Resume Next  '忽略运行过程中可能出现的错误

Set mysheet1 = ThisWorkbook.Worksheets("Sheet1")  '定义工作表

For h = 2 To 1000  '从第2行到第1000行

 For c = 1 To 2    '从第1列到第2列

  If mysheet1.Cells(h, c) <> "" Then  '如果单元格不是空白,则

   i1 = 0  'i1初始化为0

   i2 = 0

   i3 = Len(mysheet1.Cells(h, c))  '获取单元格字符长度

   i4 = 0

   Do

    i1 = i1 + 1  '每执行一次,递增1;也是累计单元格里面含有多少个数值

    i2 = i4      '把上一次逗号的位置赋给i2

    i4 = InStr(i2 + 1, mysheet1.Cells(h, c), ",")  '获取单元格里面逗号的位置

    If i4 = 0 Then  '如果找不到逗号(,),则

   摸央救  i5 = i3 - i2   '计算字符个数

    Else

     i5 = i4 - i2 - 1

    End If

    My1Array(i1, c) = Mid(mysheet1.Cells(h, c), i2 + 1, i5) '截取单元格里面的数值

    My2Array(i1, c) = i2 + 1   '把数值(字符)的起始位置赋给数组

    My3Array(i1, c) = i5       '把数值个数赋给数组

    If i1 >= 20000 Or i4 = 0 Then  '如果循环次数超过2万或已经找不到逗号(,),则退出循环

     Exit Do

    End If

    Loop

   i7 = i6  '把第一次单元格里面数值个数赋给i7

   i6 = i1  '把第二次单元格里面数值个数赋给i6

  End If

 Next

 For i8 = 1 To i7  '第一次单元格含有的数值个数逐一循环

  For i9 = 1 To i6 '第二次单元格含有的数值个数逐一循环

   If My1Array(i8, 1) = My1Array(i9, 2) Then  '如果数组里面的数值相同,则相应的数值填充成红色

    mysheet1.Cells(h, 1).Characters(My2Array(i8, 1), My3Array(i8, 1)).Font.Color = RGB(255, 0, 0)

    mysheet1.Cells(h, 2).Characters(My2Array(i9, 2), My3Array(i9, 2)).Font.Color = RGB(255, 0, 0)

   End If

  Next

 Next

 For i8 = 1 To i7   '逐一清空数组里面的值

  My1Array(i8, 1) = ""

 Next

 For i9 = 1 To i6

  My1Array(i9, 1) = ""

 Next

Next

End Sub

Excel表格相同的数值改成红色

3、如果左侧没有“工程资源管理器”,在菜泉贪单栏上面的【视图】下拉菜单里面选择“工程资源管理器”即可,或者使用【Ctrl+R】快捷键调出。(如果已有“工程资源管理器”,则可以忽略此步)

Excel表格相同的数值改成红色

4、回到工作表界面,将会看到程序的执行结果。

Excel表格相同的数值改成红色

5、VBA程序代码解读:

(1)Len函数是获取单元格里面字符串的长度,要获取最后一个数值的长度,只能使用单元格字符串长度减去最后一个逗号所在的位置娃栗。

(2)InStr函数是查找字符所在的位置,即:InStr(起始位置,要查找的字符串,查找的字符),如果找不着,则为0,之后就可以退出Do循环了。

(3)Mid函数是截取字符串的函数,主要是把截取的字符串转存到到二维数组My1Array(i1, c)里面。

(4)My1Array(100, 100)是二维数组,刚使用也有点难,不过可以节约一些函数定义。在使用过程中,可以按下【F8】键逐行运行,之后在“本地窗口”里面查看二维数组对应的结果,以便加深理解。

(5)每执行完一行,应当对数组里面的值清空,以免后续的计算出错。

Excel表格相同的数值改成红色

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢