Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2381|回复: 9

[已解决]数字相应变色如何做?

[复制链接]
发表于 2014-12-28 10:09 | 显示全部楼层 |阅读模式
如图所示
最佳答案
2014-12-28 12:09
yuye1987 发表于 2014-12-28 12:03
额,那如果A列和B列的数据调过来,比如A1=01234567,如果在B1中输入123,那么A1中的数据123就自动变红色, ...

Sub dome()
    Dim ar() As String, str As String, i As Long, x As Long, y As Long
    For i = 1 To Cells(Rows.Count, 1).End(3).Row                  '循环结构,从第一行循环到最后一个非空单元格所在的行
        str = Cells(i, 1)                                         '变量str等于b列的文本,比如b1,b2..循环嘛
        ReDim ar(Len(str))                                        '重新定义数组ar的长度等于变量str的字符数
        For x = 1 To Len(str)                                      '循环这个字符串
            ar(x) = Mid(str, x, 1)                                 '把每个数字装入数组
        Next
        For y = 1 To UBound(ar)                                     '循环这个数组
            If InStr(Cells(i, 2), ar(y)) Then                           '如果数字在A列中出现,就执行下面的语句
                With Cells(i, 1).Characters(Start:=y, Length:=1).Font     '满足条件的数字,设置红色
                    .ColorIndex = 3
                End With
            End If
        Next
    Next
End Sub


QQ截图20141228100622.png

新建 Microsoft Excel 工作表.zip

2.07 KB, 下载次数: 4

发表于 2014-12-28 11:11 | 显示全部楼层
本帖最后由 qh8600 于 2014-12-28 11:14 编辑
  1. Sub dome()
  2.     Dim ar() As String, str As String, i As Long, x As Long, y As Long
  3.     For i = 1 To Cells(Rows.Count, 1).End(3).Row
  4.         str = Cells(i, 2)
  5.         ReDim ar(Len(str))
  6.         For x = 1 To Len(str)
  7.             ar(x) = Mid(str, x, 1)
  8.         Next
  9.         For y = 1 To UBound(ar)
  10.             If InStr(Cells(i, 1), ar(y)) Then
  11.                 With Cells(i, 2).Characters(Start:=y, Length:=1).Font
  12.                     .ColorIndex = 3
  13.                 End With
  14.             End If
  15.         Next
  16.     Next
  17. End Sub
复制代码
附件楼下
回复

使用道具 举报

发表于 2014-12-28 11:11 | 显示全部楼层
本帖最后由 qh8600 于 2014-12-28 11:15 编辑

新建 Microsoft Excel 工作表.rar (9.23 KB, 下载次数: 6)
回复

使用道具 举报

 楼主| 发表于 2014-12-28 11:33 | 显示全部楼层
qh8600 发表于 2014-12-28 11:11
附件楼下

这个代码翻译出来的语言是什么?该如何用,比如我现在的数据不在A列和B列中,加入我的数据在C列和D列该如何设置,具体该怎么做?谢谢了,我是个新手,不懂这些,麻烦详细点解释下
回复

使用道具 举报

发表于 2014-12-28 11:47 | 显示全部楼层
yuye1987 发表于 2014-12-28 11:33
这个代码翻译出来的语言是什么?该如何用,比如我现在的数据不在A列和B列中,加入我的数据在C列和D列该如 ...

Sub dome()
    Dim ar() As String, str As String, i As Long, x As Long, y As Long
    For i = 1 To Cells(Rows.Count, 1).End(3).Row                  '循环结构,从第一行循环到最后一个非空单元格所在的行
        str = Cells(i, 2)                                         '变量str等于b列的文本,比如b1,b2..循环嘛
        ReDim ar(Len(str))                                        '重新定义数组ar的长度等于变量str的字符数
        For x = 1 To Len(str)                                      '循环这个字符串
            ar(x) = Mid(str, x, 1)                                 '把每个数字装入数组
        Next
        For y = 1 To UBound(ar)                                     '循环这个数组
            If InStr(Cells(i, 1), ar(y)) Then                           '如果数字在A列中出现,就执行下面的语句
                With Cells(i, 2).Characters(Start:=y, Length:=1).Font     '满足条件的数字,设置红色
                    .ColorIndex = 3
                End With
            End If
        Next
    Next
End Sub


回复

使用道具 举报

 楼主| 发表于 2014-12-28 12:03 | 显示全部楼层
qh8600 发表于 2014-12-28 11:47
Sub dome()
    Dim ar() As String, str As String, i As Long, x As Long, y As Long
    For i = 1  ...

额,那如果A列和B列的数据调过来,比如A1=01234567,如果在B1中输入123,那么A1中的数据123就自动变红色,这样的代码怎么写?拜托,谢谢了!
回复

使用道具 举报

发表于 2014-12-28 12:09 | 显示全部楼层    本楼为最佳答案   
yuye1987 发表于 2014-12-28 12:03
额,那如果A列和B列的数据调过来,比如A1=01234567,如果在B1中输入123,那么A1中的数据123就自动变红色, ...

Sub dome()
    Dim ar() As String, str As String, i As Long, x As Long, y As Long
    For i = 1 To Cells(Rows.Count, 1).End(3).Row                  '循环结构,从第一行循环到最后一个非空单元格所在的行
        str = Cells(i, 1)                                         '变量str等于b列的文本,比如b1,b2..循环嘛
        ReDim ar(Len(str))                                        '重新定义数组ar的长度等于变量str的字符数
        For x = 1 To Len(str)                                      '循环这个字符串
            ar(x) = Mid(str, x, 1)                                 '把每个数字装入数组
        Next
        For y = 1 To UBound(ar)                                     '循环这个数组
            If InStr(Cells(i, 2), ar(y)) Then                           '如果数字在A列中出现,就执行下面的语句
                With Cells(i, 1).Characters(Start:=y, Length:=1).Font     '满足条件的数字,设置红色
                    .ColorIndex = 3
                End With
            End If
        Next
    Next
End Sub


评分

参与人数 1 +3 收起 理由
天棋 + 3 学习

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2014-12-28 16:49 | 显示全部楼层
qh8600 发表于 2014-12-28 12:09
Sub dome()
    Dim ar() As String, str As String, i As Long, x As Long, y As Long
    For i = 1  ...

我想补充一个:如果数据在别的单元格,代码应该如何做?比如在C列和D列呢?我试了一下,如果数据在其他的列变不了色的?怎么回事呢?
回复

使用道具 举报

发表于 2014-12-28 16:56 | 显示全部楼层
yuye1987 发表于 2014-12-28 16:49
我想补充一个:如果数据在别的单元格,代码应该如何做?比如在C列和D列呢?我试了一下,如果数据在其他的 ...

代码也有个区域的,不同区域,代码也是要改的,就是改那个cells(行,列)
回复

使用道具 举报

 楼主| 发表于 2014-12-28 17:16 | 显示全部楼层
qh8600 发表于 2014-12-28 16:56
代码也有个区域的,不同区域,代码也是要改的,就是改那个cells(行,列)

我是个新手,真不会弄这个,再次麻烦大神你了
QQ截图20141228171351.png

新建 Microsoft Excel 工作表.zip

9.5 KB, 下载次数: 2

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-15 16:04 , Processed in 0.366204 second(s), 22 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表