Excel精英培训网

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

怎么写if循环语句

[复制链接]
发表于 2019-1-15 20:32 | 显示全部楼层 |阅读模式
1学分
本帖最后由 as619970983 于 2019-1-16 10:27 编辑

现在有一整列个位数,从第6位开始,我想取前3个相邻数组成新的3位数,要求假如第一个数等于第二个数,那就取第三个数,以此类推直到取出3个不同的数组成3位数,例如图中我第一个3位数是302,就是要求当我在第11格的时候,从第10格开始取数,取3格不同的数组成3位数,这个怎么写循环语句的,求帮助

]2}XRJ(Y7SBD~BWR[5E7P{D.png

工作簿2.zip

176.27 KB, 下载次数: 8

最佳答案

查看完整内容

Sub test() Dim A, i Sheets(1).Select Range("b:b").ClearContents A = Range("A1:B" & Cells(Rows.Count, 1).End(xlUp).Row) For i = 7 To UBound(A) A(i, 2) = f(A, i - 1, 2) Next i Sheets(2).Select Range("b:b").NumberFormat = "@" Cells.ClearContents Range("a1").Resize(UBound(A), UBound(A, 2)) = A End Sub Function f(A, x, y) Dim B(9), ...
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2019-1-15 20:32 | 显示全部楼层
Sub test()
    Dim A, i
    Sheets(1).Select
    Range("b:b").ClearContents
    A = Range("A1:B" & Cells(Rows.Count, 1).End(xlUp).Row)
    For i = 7 To UBound(A)
        A(i, 2) = f(A, i - 1, 2)
    Next i

    Sheets(2).Select
    Range("b:b").NumberFormat = "@"
    Cells.ClearContents
    Range("a1").Resize(UBound(A), UBound(A, 2)) = A
End Sub


Function f(A, x, y)
    Dim B(9), i, s, temp, num
    For i = x To y Step -1
        If s = 3 Then Exit For
        num = A(i, 1)
        If B(num) = "" Then
            B(num) = num
            s = s + 1
            temp = temp & num
        ElseIf B(num) <> num Then
            s = s + 1
            temp = temp & num
        End If
    Next i
    f = IIf(s < 3, -1, temp)
End Function
2.rar (730.25 KB, 下载次数: 1)
回复

使用道具 举报

发表于 2019-1-15 23:43 | 显示全部楼层
回复

使用道具 举报

发表于 2019-1-16 09:02 | 显示全部楼层
建议上传附件
用函数不行吗
回复

使用道具 举报

 楼主| 发表于 2019-1-16 09:25 | 显示全部楼层
本帖最后由 as619970983 于 2019-1-16 09:27 编辑

就是要求当我在第11格的时候,从第10格开始取数,取3格不同的数组成3位数,就是592,依次类推,这个循环判断语句怎么写
回复

使用道具 举报

 楼主| 发表于 2019-1-16 09:26 | 显示全部楼层
爱疯 发表于 2019-1-16 09:02
建议上传附件
用函数不行吗

上传了,函数也是可以的啊,就是我不会
回复

使用道具 举报

发表于 2019-1-16 09:37 | 显示全部楼层
as619970983 发表于 2019-1-16 09:25
就是要求当我在第11格的时候,从第10格开始取数,取3格不同的数组成3位数,就是592,依次类推,这个循环 ...

你看懂我的问题了吗?
回复

使用道具 举报

 楼主| 发表于 2019-1-16 10:27 | 显示全部楼层
望帝春心 发表于 2019-1-16 09:37
你看懂我的问题了吗?

=IF(A6<>A5,A6&A5,IF(A6=A5,FALSE())),我只会最基础的2个数对比,而且还会输出false,我需要全部输出真值怎么解决呢?
回复

使用道具 举报

发表于 2019-1-16 10:45 | 显示全部楼层
as619970983 发表于 2019-1-16 10:27
=IF(A6A5,A6&A5,IF(A6=A5,FALSE())),我只会最基础的2个数对比,而且还会输出false,我需要全部输出真值 ...

回答我前面的问题,不要自说自话了
回复

使用道具 举报

 楼主| 发表于 2019-1-16 10:52 | 显示全部楼层
望帝春心 发表于 2019-1-16 10:45
回答我前面的问题,不要自说自话了

你最前面的问题是0位置圈起来的是输出什么?我回答了啊592
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 00:36 , Processed in 1.060528 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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