Excel精英培训网

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

[已解决]有条件打√或×

[复制链接]
发表于 2012-11-27 15:15 | 显示全部楼层 |阅读模式
C列数据上下一样的在F列打×,E列有OK的F列一律打×,其余打√,结果如F列,F列√,×,数据每次随C列数据变动而变的。
最佳答案
2012-11-27 16:12
本帖最后由 zjdh 于 2012-11-27 16:27 编辑

F2=IF(OR(C1=C2,C2=C3,E2="OK"),"×","√") 下拉填充

或宏
Sub test()
    On Error Resume Next
    ARR = Range("C1:F" & Range("C65536").End(3).Row + 1)
    For I = 2 To UBound(ARR)
        If ARR(I - 1, 1) = ARR(I, 1) Or ARR(I, 1) = ARR(I + 1, 1) Or ARR(I, 3) = "OK" Then
        ARR(I, 4) = "×"
        Else
        ARR(I, 4) = "√"
        End If
    Next
    Range("C1").Resize(UBound(ARR) - 1, 4) = ARR
End Sub

整理顺序.rar

55.78 KB, 下载次数: 40

发表于 2012-11-27 15:22 | 显示全部楼层
上下你指的是不是相邻的上下两个数?
回复

使用道具 举报

 楼主| 发表于 2012-11-27 15:46 | 显示全部楼层
gdsgzhrsh 发表于 2012-11-27 15:22
上下你指的是不是相邻的上下两个数?

是的,谢谢!!!!
回复

使用道具 举报

发表于 2012-11-27 16:12 | 显示全部楼层    本楼为最佳答案   
本帖最后由 zjdh 于 2012-11-27 16:27 编辑

F2=IF(OR(C1=C2,C2=C3,E2="OK"),"×","√") 下拉填充

或宏
Sub test()
    On Error Resume Next
    ARR = Range("C1:F" & Range("C65536").End(3).Row + 1)
    For I = 2 To UBound(ARR)
        If ARR(I - 1, 1) = ARR(I, 1) Or ARR(I, 1) = ARR(I + 1, 1) Or ARR(I, 3) = "OK" Then
        ARR(I, 4) = "×"
        Else
        ARR(I, 4) = "√"
        End If
    Next
    Range("C1").Resize(UBound(ARR) - 1, 4) = ARR
End Sub

点评

这是VBA板块的~~~  发表于 2012-11-27 16:23
回复

使用道具 举报

 楼主| 发表于 2012-11-27 16:21 | 显示全部楼层
zjdh 发表于 2012-11-27 16:12
F2=IF(OR(C1=C2,C2=C3,E2="OK"),"×","√") 下拉填充

谢谢,再帮一下,如果C列,没有重复数据的数据也打×,谢谢!!
回复

使用道具 举报

发表于 2012-11-27 16:22 | 显示全部楼层
不知道是否符合你所要的,呵呵

整理顺序1.rar

57.29 KB, 下载次数: 13

回复

使用道具 举报

发表于 2012-11-27 16:28 | 显示全部楼层
楼主是要VBA的呢还是要函数公式?
回复

使用道具 举报

 楼主| 发表于 2012-11-27 16:33 | 显示全部楼层
gdsgzhrsh 发表于 2012-11-27 16:28
楼主是要VBA的呢还是要函数公式?

VBA谢谢你的帮忙,再加个条件如果C列不重复数F列也打×,谢谢!!!
回复

使用道具 举报

 楼主| 发表于 2012-11-27 16:35 | 显示全部楼层
zjdh 发表于 2012-11-27 16:12
F2=IF(OR(C1=C2,C2=C3,E2="OK"),"×","√") 下拉填充

或宏

再帮一下,再加一个条件如果C列,没有重复数据的数据也打×,谢谢!!
回复

使用道具 举报

发表于 2012-11-27 16:44 | 显示全部楼层
fangniuji 发表于 2012-11-27 16:21
谢谢,再帮一下,如果C列,没有重复数据的数据也打×,谢谢!!

Sub test()
    Set D = CreateObject("scripting.dictionary")
    ARR = Range("C1:F" & Range("C65536").End(3).Row + 1)
    For I = 2 To UBound(ARR) - 1
        If ARR(I - 1, 1) = ARR(I, 1) Or ARR(I, 1) = ARR(I + 1, 1) Or ARR(I, 3) = "OK" Then
            ARR(I, 4) = "×"
        Else
            ARR(I, 4) = "√"
        End If
        If Not D.exists(ARR(I, 1)) Then
            D.Add ARR(I, 1), I
        Else
            D(ARR(I, 1)) = 0
        End If
    Next
    T = D.ITEMS
    For I = 0 To UBound(T)
      If T(I) <> 0 Then ARR(T(I), 4) = "×"
    Next
    Range("C1").Resize(UBound(ARR) - 1, 4) = ARR
End Sub
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 18:32 , Processed in 0.455589 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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