Excel精英培训网

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

[已解决]依次循环查号

[复制链接]
发表于 2021-9-8 15:55 | 显示全部楼层 |阅读模式
如果T6:Y6等于T3:Y3那么Z6等于1否则为空
如果T7:Y7等于T3:Y3那么Z7等于1否则为空
...................

依次循环至T列的最后一个非空单元格

最佳答案
2021-9-8 18:25
kkll0914 发表于 2021-9-8 17:12
不好意思版主可能是我没讲清楚~应该是完全等于而不是等于其中一个

Sub demo()
   a = Range([t6], [y6].End(4))
   b = [t3:y3]
   For i = 1 To UBound(a)
      For j = 1 To 6
         If a(i, j) <> b(1, j) Then Exit For
      Next
      a(i, 1) = IIf(j < 7, "", 1)
   Next
   [z6].Resize(UBound(a)) = a
End Sub

祝順心,南無阿彌陀佛!


循环查号.zip

25.57 KB, 下载次数: 9

发表于 2021-9-8 16:52 | 显示全部楼层
Sub demo()
   a = Range([t6], [y6].End(4))
   b = [t3:y3]
   For i = 1 To UBound(a)
      For j = 1 To 6
         a(i, j) = IIf(a(i, j) = b(1, j), 1, "")
      Next
   Next
   [z6].Resize(UBound(a), UBound(a, 2)) = a
End Sub


祝順心,南無阿彌陀佛!



回复

使用道具 举报

发表于 2021-9-8 16:54 | 显示全部楼层
=IF($T$3:$Y$3=T6:Y6,1,0)(ctrl++alt+enter结束)
直接Z6写这个公式,然后向下填充不更香吗

点评

厉害  发表于 2021-9-8 17:12
学习了!  发表于 2021-9-8 16:55

评分

参与人数 1学分 +1 收起 理由
kkll0914 + 1 学习了

查看全部评分

回复

使用道具 举报

发表于 2021-9-8 16:56 | 显示全部楼层
本帖最后由 风林火山 于 2021-9-8 17:06 编辑

数组公式,下拉
=IF(SUM(SMALL($T$3:$Y$3,ROW($1:$6))-SMALL(T6:Y6,ROW($1:$6)))=0,1,"")

点评

风林,公式要不要修正一下~哈  发表于 2021-9-8 22:18

评分

参与人数 1学分 +1 收起 理由
kkll0914 + 1 学习了

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2021-9-8 17:12 | 显示全部楼层
cutecpu 发表于 2021-9-8 16:52
Sub demo()
   a = Range([t6], [y6].End(4))
   b = [t3:y3]

不好意思版主可能是我没讲清楚~应该是完全等于而不是等于其中一个



如果T6:Y6的每一个数字完全等于T3:Y3的每一个数字那么Z6等于1否则为空
如果T7:Y7的每一个数字完全等于T3:Y3的每一个数字那么Z7等于1否则为空
...................

依次循环至T列的最后一个非空单元格
回复

使用道具 举报

 楼主| 发表于 2021-9-8 17:13 | 显示全部楼层
lisongmei 发表于 2021-9-8 16:54
=IF($T$3:$Y$3=T6:Y6,1,0)(ctrl++alt+enter结束)
直接Z6写这个公式,然后向下填充不更香吗

公式很方便但是对于几十万行的数据还是代码好一点!~不过您的公式很棒谢谢您的帮忙!~
回复

使用道具 举报

 楼主| 发表于 2021-9-8 17:14 | 显示全部楼层
风林火山 发表于 2021-9-8 16:56
数组公式,下拉
=IF(SUM(SMALL($T$3:$Y$3,ROW($1:$6))-SMALL(T6:Y6,ROW($1:$6)))=0,1,"")

公式很方便但是对于几十万行的数据还是代码好一点!~不过您的公式很棒谢谢您的帮忙!~
回复

使用道具 举报

发表于 2021-9-8 18:25 | 显示全部楼层    本楼为最佳答案   
kkll0914 发表于 2021-9-8 17:12
不好意思版主可能是我没讲清楚~应该是完全等于而不是等于其中一个

Sub demo()
   a = Range([t6], [y6].End(4))
   b = [t3:y3]
   For i = 1 To UBound(a)
      For j = 1 To 6
         If a(i, j) <> b(1, j) Then Exit For
      Next
      a(i, 1) = IIf(j < 7, "", 1)
   Next
   [z6].Resize(UBound(a)) = a
End Sub

祝順心,南無阿彌陀佛!


回复

使用道具 举报

发表于 2021-9-9 08:33 | 显示全部楼层
公式不改了,想不出来了
写个字典的方法
Sub test()
    Dim i%, d, k As Long, n As Long, rng As Range
    Application.ScreenUpdating = False
    Set d = CreateObject("scripting.dictionary")
    For Each rng In Range("t3:y3")
        d(rng.Text) = ""
    Next rng
    For i = 9 To [t65536].End(3).Row
        For k = 20 To 25
            If Not d.exists(Cells(i, k).Text) Then
                Exit For
            Else
                n = n + 1
            End If
        Next k
        If n = 6 Then Cells(i, 26) = 1
        n = 0
    Next
    Application.ScreenUpdating = True
End Sub
回复

使用道具 举报

发表于 2021-9-9 11:18 | 显示全部楼层
风林火山 发表于 2021-9-9 08:33
公式不改了,想不出来了
写个字典的方法
Sub test()

哈哈~
其實只是想表達,相減後加個ABS比較保險
例如下面這種case:
2 3 4 5 6 7
1 2 3 6 7 8


祝順心,南無阿彌陀佛!

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-4 07:17 , Processed in 0.394203 second(s), 15 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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