Excel字体随机成指定不重复的颜色

2025-10-10 06:20:18

1、打开Excel工作表之后,按下【Alt+F11】组合键打开VBA编辑器。

Excel字体随机成指定不重复的颜色

2、在VBA编辑器的菜单栏里边点击【插入】、【模块】。

Excel字体随机成指定不重复的颜色

3、在模块的代码框里边输入以下程序代码:

Sub ColorChange()

Dim i, j, k, x, rn, arr1

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

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

mysheet1.Range("JJ2:JJ9").Clear  '清空单元格内容,临时借用,如有使用,则改成其他单元格范围

arr1 = Array(vbBlack, vbRed, vbGreen, vbYellow, vbBlue, vbMagenta, vbCyan, vbWhite)

'指定颜色集,颜色集里边的颜色值可以改成0-16777215(即:256*256*256-1)之间的数值

j = 1 '初始值,从第二行开始

x = 0 '初始值为0

Do

  k = arr1(Int(Rnd * 8))  '随机选择指定颜色集里边的颜色值

  i = Application.WorksheetFunction.CountIf(mysheet1.Range("JJ2:JJ9"), k)

  'i,统计颜色值在JJ2:JJ9单元格区域里边出现是次数

  

    For Each rn In mysheet1.Range("JJ2:JJ9")  '循环JJ2:JJ9单元格区域里边的每一个单元格

     If i = 0 And rn = "" Then   '如果没有出现过且单元格为空白

      rn.Value = k   '将颜色值写入该单元格里边

      j = j + 1      'j数值(行数)递增1

      mysheet1.Cells(j, 1).Font.Color = k  '单元格里边的字体颜色变更成随机指定范围的颜色

      Exit For  '退出For循环

     End If

    Next

     x = x + 1  '中间变量值递增1

    If j = 9 Or x = 200000 Then  '如果字体颜色已经变更到第9行,或x条件满足

     mysheet1.Range("JJ2:JJ9").Clear  '清空单元格内容,恢复原样

     Exit Do  '退出Do循环

    End If

Loop

End Sub

Excel字体随机成指定不重复的颜色

4、点击VBA工具栏里边的“运行”图标运行程序,每运行一次程序,A2:A9里边的字体颜色将会随机改变。

Excel字体随机成指定不重复的颜色

Excel字体随机成指定不重复的颜色

5、VBA程序函数解读:

(1)在数组函数Array里边,对应的顺序是从0开始的,如:arr1(0)对应的是Array里面的第一个(vbBlack)。

(2)Int是向下取整函数,Rnd是大于等于0且小于1的随机数,Int(Rnd * 8)的最大值将不会达到8,数组里边不会越界。

(3)使用CountIf来统计缓存的单元格区域里边同一数值的个数,再使用If函数进行判断,如:统计的个数为0且单元格为空白,则把值填到此单元格里边。

6、思路解读:

(1)随机改变字体在指定范围内不重复的颜色时,可以借助空白的单元格来记录是哪些单元格的字体颜色已经改变,然后将不再对这些进行颜色更改。

(2)使用循环来尝试求解时,应当避免死循环的出现,此时可以在程序里边加入一些条件来避免死循环,如:循环200000次之后还没能求解,则退出循环。

Excel字体随机成指定不重复的颜色

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