Board logo

標題: 单元格内不重复字符 [打印本頁]

作者: wqfzqgk    時間: 2010-7-10 16:41     標題: 单元格内不重复字符

Sub 单元格内不重复字符()
Set d = CreateObject("scripting.dictionary")
Set e = CreateObject("scripting.dictionary")
For i = 1 To Len(ActiveCell.Value)
d(Mid(ActiveCell.Value, i, 1)) = ""
Next
On Error Resume Next
For i = 1 To Len(ActiveCell.Value)
e.Add Mid(ActiveCell.Value, i, 1), ""
If Err.Number = 457 Then d.Remove (Mid(ActiveCell, i, 1))
Err.Clear
Next
MsgBox Join(d.keys, "")
End Sub
Sub 单元格内不重复字符()
For i = 1 To Len(ActiveCell.Value)
For a = 1 To Len(ActiveCell.Value)
If Mid(ActiveCell.Value, i, 1) = Mid(ActiveCell.Value, a, 1) Then m = m + 1
Next
If m = 1 Then mm = mm & Mid(ActiveCell.Value, i, 1)
m = 0
Next
MsgBox mm
End Sub
可以改为自定义函数!
作者: GBKEE    時間: 2010-7-10 17:41

本帖最後由 GBKEE 於 2010-7-10 17:51 編輯

回復 1# wqfzqgk
請問  你所分享的  单元格内不重复字符 程序中
為何要到二 個 scripting.dictionary 物件
Set d = CreateObject("scripting.dictionary")
Set e = CreateObject("scripting.dictionary")
使用一個就足夠 如下
  1. Set d = CreateObject("scripting.dictionary")
  2. For i = 1 To Len(ActiveCell.Value)
  3. d(Mid(ActiveCell.Value, i, 1)) = ""
  4. Next
  5. MsgBox Join(d.keys, "")
複製代碼
你使用 If Err.Number = 457 Then d.Remove (Mid(ActiveCell, i, 1))
會導致 MsgBox Join(d.keys, "") 的不正確

請問如下二個迴圈的用意 可以說明一下解惑嗎?
  1. For i = 1 To Len(ActiveCell.Value)
  2. For a = 1 To Len(ActiveCell.Value)
  3. If Mid(ActiveCell.Value, i, 1) = Mid(ActiveCell.Value, a, 1) Then m = m + 1
  4. Next
  5. If m = 1 Then mm = mm Mid(ActiveCell.Value, i, 1) 這裡有錯誤
  6. m = 0
  7. Next
複製代碼

作者: wqfzqgk    時間: 2010-7-10 17:50

是去除重复的值,如11223455也只有34符合
是这么个意思
那个地方少了一个&
作者: GBKEE    時間: 2010-7-10 18:19

回復 3# wqfzqgk

原來是 [去除重复的值] 後顯示出 沒有重複過的字元
是我第一眼的觀念是錯誤  去除重复的值後  顯示出全部的的字元
作者: Hsieh    時間: 2010-7-10 20:39

  1. Sub OnlyChar()
  2. For i = 1 To Len(ActiveCell.Value)
  3.   If Len(ActiveCell) - Len(Replace(ActiveCell, Mid(ActiveCell, i, 1), "")) = 1 Then mystr = mystr & Mid(ActiveCell, i, 1)
  4. Next
  5. MsgBox mystr
  6. End Sub
複製代碼

作者: wqfzqgk    時間: 2010-7-11 16:32

这个方法不错
作者: ui123    時間: 2014-7-21 11:31

回復 2# GBKEE
大大問你喔!!
為什麼找不到重複,用下面的方法加入字典裡,紅色地方看不懂,="" 不是代表沒有東西嗎? 為什麼變成加入字典?
d(Mid(ActiveCell.Value, i, 1)) = ""




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)