求助:去掉重复数字
excel吧
全部回复
仅看楼主
level 4
xunianzhi 楼主
A1:2349782705416
A1:2387054916
A1:64916382705
A1:3618270549
A1:3827054916
A1:840539163827
A1:694914916380527
如上:A1:2349782705416
去掉重复的,显示成:B1:2349780516
把重复的只显示1个,多的去掉
2010年06月18日 09点06分 1
level 10
这个花样是看得懂,可是一个难题。
如果愿意将所有 "0" 字排在后尾,则有机会可解决。
如 840539163827
排列成 8453916270
2010年06月18日 15点06分 2
level 10
=SUBSTITUTE(A1-SUM((MMULT(COLUMN(A:O)^0,(MID(A1&"abcdef",ROW($1:$15),1)=MID(A1&"ghijkl",COLUMN(A:O),1)) *(ROW($1:$15)<COLUMN(A:O)))>0)*MID(A1&"000000",COLUMN(A:O),1)*10^(LEN(A1)-COLUMN(A:O))),0,"")&N(ISERR(FIND(0,A1)))
●● Ctrl + Shift + Enter 三键连按
如2楼所说, "0" 字会掉到后尾。
如果 "0" 字要原位排列,则要等别人来了。
我是没办法的。

2010年06月18日 16点06分 3
level 6
如果每天总是弄这种东西,俺相信早晚会疯掉的。
=SUM(MID(A1,SMALL(FIND(ROW($1:$10)-1,A1&"0123456789"),ROW(INDIRECT("1:"&SUM(0+(FIND(ROW($1:$10)-1,A1&"0123456789")<=LEN(A1)))))),1)*10^(SUM(ISNUMBER(FIND(ROW($1:$10)-1,A1))+0)-(ROW(INDIRECT("1:"&SUM(ISNUMBER(FIND(ROW($1:$10)-1,A1))+0))))))
2010年06月18日 17点06分 4
我觉得这楼说的最好
2025年02月27日 03点02分
level 0
回复:4楼
厉害!赞!
~siaojuen
2010年06月19日 02点06分 5
level 6
回复:5楼
多承谬奖。
这几天电脑坏了,刚弄来一台备用机。
2010年06月21日 01点06分 6
level 10
非谬奖,
真厉害!
2010年06月21日 03点06分 7
level 13
数组公式:
=IF(-LEFT(A1),,0)&SUM(MID(0&A1,LARGE(--TEXT(FIND(ROW($1:$10)-1,A1&5^19),"[>"&LEN(A1)&"]!0")+1,ROW($1:$10)),1)*10^ROW($2:$11))%
2010年06月21日 13点06分 8
level 10
吧主大人在上
小民无礼了。
请吧主大人测试:
234978270416
2010年06月21日 13点06分 9
level 9
吧主慌神了!
结果是234978016,有什么不对吗?
2010年06月21日 14点06分 10
level 6
这个5^19有意思。有没有更贴切的?
2010年06月21日 14点06分 11
level 10
小民诬告大人,死罪死罪。
只因大家用的 excel 不同,大人的 excel 用 "]!0" ,我的 excel 用 "]\0" , 以致无法执行。
望大人判小民缓刑,待小民完成心事再行伏法。
2010年06月21日 14点06分 12
level 9
回复:11楼
5^19有点赖皮,再贴切的没找着。
回复:12楼
死罪饶过,改判无期,罚你无期在吧中服役!
2010年06月21日 14点06分 13
level 4
xunianzhi 楼主
回复:4楼
谢谢,是的,俺已经疯了,今天才出来[吐舌]
回复:3楼
谢谢,感谢你多次解答,帮助
还有上次我提的问题,我用了13个辅助格求了出来,求完俺就疯了,
可没办法,为了生活,还得接着干,还有N多这样的难题等待着,战胜它,完了再疯
2010年06月22日 06点06分 14
level 5
Function buchongfu(rng As Range) As String
Dim str1 As String, str2
str1 = CStr(rng.Value)
str2 = Mid(str1, 1, 1)
For i = 2 To Len(str1)
    For j = 1 To Len(str2)
      If Mid(str1, i, 1) = Mid(str2, j, 1) Then GoTo 1
    Next j
str2 = str2 & Mid(str1, i, 1)
1:
Next i
buchongfu = str2
End Function
用VBA的都是懒人
顺便膜拜下楼上,
以上,
自定义函数=buchongfu()
可以实现以上功能
2010年06月22日 08点06分 15
level 4
xunianzhi 楼主
回复:15楼
谢谢,
2010年06月22日 10点06分 16
level 10
用 dictionary 可以更懒
Function z(rng As Range)
Set d = CreateObject("Scripting.Dictionary")
For i = 1 To Len(rng.Value)
    k = Mid(rng.Value, i, 1)
    num = d.Count: d(k) = ""
    If num <> d.Count Then z = z & k
Next
End Function
2010年06月22日 13点06分 17
level 10
楼上程式衍生三个问题
1。
dic.add ..... 是新增字典 dic 元素,当同名元素已存在,你再新增,就出错。
dic.Add Mid(rng.Value, i, 1), ""
改用 dic(k) = "" 可免这种出错。
2。
on error resume next 对 dictionary 无效,须另设测试语法。
If dic.exists(k) Then GoTo 1
3。
Dictionary 有时候不支持关键字串用运算式(我不清楚甚麼时后支持甚麼时后不支持),用一个变量 k 可保高度可靠。
Function StrFilter(rng As Range) As String
Set dic = CreateObject("scripting.dictionary")
For i = 1 To Len(rng.Value)
    k = Mid(rng.Value, i, 1)
    If dic.exists(k) Then GoTo 1
    dic.Add k, ""
    StrFilter = StrFilter & k
1:
Next i
End Function

2010年06月23日 01点06分 19
level 10
最短是这样子了。
Function StrFilter(rng As Range) As String
Set dic = CreateObject("scripting.dictionary")
For i = 1 To Len(rng.Value)
    k = Mid(rng.Value, i, 1)
    If Not dic.exists(k) Then dic.Add k, "": StrFilter = StrFilter & k
Next i
End Function

2010年06月23日 02点06分 21
level 5
研究了一中午,发现18楼的代码如果数字只有1个重复的就可以,多余1个不行。应该是on error goto 1这个语句就执行了一次。另外on error resume next语句可以作用于dictionary,我想利用19楼的第一点,字典不能增加相同的KEY来实现。代码如下:
Function StrFilter(rng As Range)
Set dic = CreateObject("scripting.dictionary")
On Error Resume Next
For i = 1 To Len(rng.Value)
      dic.Add Mid(rng.Value, i, 1), ""
Next i
On Error GoTo 0
StrFilter = Replace(Join(dic.keys), " ", "")
End Function
2010年06月23日 06点06分 22
1 2 3 尾页