ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 4365|回复: 19

从前面去重复比如:12310503这个数从前面去掉重复后是:12305

[复制链接]

TA的精华主题

TA的得分主题

发表于 2007-8-13 16:37 | 显示全部楼层 |阅读模式

从前面去重复比如:12310503这个数从前面去掉重复后是:12305

这样用什么函数,急!!!!!!那位指导一下,先谢了!

TA的精华主题

TA的得分主题

发表于 2007-8-13 16:53 | 显示全部楼层

这是我以前写的,可以参考一下

将字符串"abcbcdcdefgfghj"里不重复的取出来,得到"abcdefghj"
    Dim mystring$
    Dim i%, j%
    Dim res$
    Dim isok As Boolean
    mystring = "abcbcdcdefgfghj"
    res = Mid(mystring, 1, 1)
    i = 2
    isok = True
    Do While i <= Len(mystring)
        For j = 1 To i - 1
            If Mid(mystring, i, 1) = Mid(res, j, 1) Then
                isok = False
                Exit For
            End If
        Next j
        If isok Then res = res + Mid(mystring, i, 1)
        i = i + 1
        isok = True
    Loop
    MsgBox res

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-8-13 17:23 | 显示全部楼层

非常感谢回贴,但是我对这个不懂,能否加QQ解说一下,帮帮忙好吗!

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-8-13 17:24 | 显示全部楼层

QQ224652835

车牌:     你真的知道吗?

TA的精华主题

TA的得分主题

发表于 2007-8-13 17:40 | 显示全部楼层

可以用下面的自定义函数

Function change(rg1 As Range) As String
    Dim mystring$
    Dim i%, j%
    Dim res$
    Dim isok As Boolean
    mystring = rg1.Value
    res = Mid(mystring, 1, 1)
    i = 2
    isok = True
    Do While i <= Len(mystring)
        For j = 1 To i - 1
            If Mid(mystring, i, 1) = Mid(res, j, 1) Then
                isok = False
                Exit For
            End If
        Next j
        If isok Then res = res + Mid(mystring, i, 1)
        i = i + 1
        isok = True
    Loop
    change = res
End Function

 

4vzMBe2I.rar (6.26 KB, 下载次数: 11)

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-8-13 18:15 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-8-13 21:09 | 显示全部楼层

你发给我的是好的也可以用非常感谢,我现在面临的是怎么打开VBA,找都找不到在那,还有怎么把自定义的函数,保存到我的电脑上.我想我搞懂这个就可以啦

[em17]

TA的精华主题

TA的得分主题

发表于 2007-8-13 22:32 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

回复:(addyfeng)从前面去重复比如:12310503这个数从...

A1=12310503

1、光标定位到第1行,自定义名称:

构造一个序号数组{1;2;3……},元素个数等于A1中数字的位数:

Row=ROW(INDIRECT("1:"&LEN(Sheet3!$A1)))

A1中不重复数字的个数:

Sum=SUM(--ISNUMBER(FIND(ROW(Sheet3!$1:$10)-1,Sheet3!$A1)))

2、公式:

B1=SUM(RIGHT(SMALL(IF(FIND(MID($A1,Row,1),$A1)=Row,Row*100+MID($A1,Row,1)),ROW(INDIRECT("1:"&Sum))))*10^(Sum-ROW(INDIRECT("1:"&Sum))))

 数组公式,按Ctrl+Shift+Enter结束。

公式限制:0不在数字前面。

如果存在0在前面的情况,可外层嵌套Text()函数:

B1=TEXT(SUM(RIGHT(SMALL(IF(FIND(MID($A1,Row,1),$A1)=Row,Row*100+MID($A1,Row,1)),ROW(INDIRECT("1:"&Sum))))*10^(Sum-ROW(INDIRECT("1:"&Sum)))),REPT("0",Sum))

[此贴子已经被作者于2007-8-13 22:36:11编辑过]

TA的精华主题

TA的得分主题

发表于 2007-8-14 09:40 | 显示全部楼层
QUOTE:
以下是引用addyfeng在2007-8-13 21:09:28的发言:

你发给我的是好的也可以用非常感谢,我现在面临的是怎么打开VBA,找都找不到在那,还有怎么把自定义的函数,保存到我的电脑上.我想我搞懂这个就可以啦

[em17]

1、打开你要处理的文件
2、按ALT+F11打开VBE的环境
3、“插入”-“模块”,把五楼的代码贴到右半边的空白处
4、“文件”-“关闭并返回到EXCEL”
5、保存文件后就可以使用自定义函数了

函数名:change,它需要一个参数,参数必须为一个单元格引用。
如:A1中是12310503,在B1中输入公式=change(A1)就可以得到12305

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-8-14 10:13 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
8楼的方法,我试过啦,不行,不知道错在那里,能传个附件上来吗?谢谢
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-25 00:48 , Processed in 0.041710 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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