+ -
当前位置:首页 → 问答吧 → 怎样用VBA提取一列单元格中的不重复值

怎样用VBA提取一列单元格中的不重复值

时间:2004-03-16

来源:互联网

怎样用VBA提取一列单元格中的不重复值一直使我十分困惑?如:sheet1的A1至A10中依次有以下数值:一,三,二,四,三,五,四,一,一,五;其中一,三,二,四,五是不重复的值。那么,怎样通过VBA从A1至A10的单元格中提取出来,并将之赋予窗体中的或sheet1中的下拉按钮。

作者: litingxin   发布时间: 2004-03-16

用find方法,依次查找,然后判断

作者: cdrr   发布时间: 2004-03-16

感谢cdrr的回复。对不起,上面的问题是举一个知道的情况下。那么在不知道单元格中会出现什么值时,怎样来判断并提取值呢?

作者: litingxin   发布时间: 2004-03-16

一样,选定范围,依次查找并判断如取A1的值,在然后在整个表查找,如果找到,就执行一个过程(如加上一个标志什么的),如果没有查找到(就是没有重复),又执行一过程,同样在取A2的值查找。。。。。。。。。。。。

作者: cdrr   发布时间: 2004-03-16

先将单元格中的值赋给变量,再用FIND2楼也是这个意思

作者: happytel   发布时间: 2004-03-16

cdrr,对不起,刚才看了你的思路,觉得是一个办法。因我是个菜鸟,对VBA许多方法不知道怎样用,刚才,我到Execl的帮助中查找到了FIind方法,看了一下来,仍然是一头雾水,不知所云。你能针对我提出问题帮我写一个代码吗?感谢你的关心和帮助!

作者: litingxin   发布时间: 2004-03-16

用一个FOR EACH 循环加上find方法就应可以了。

作者: wangminbai   发布时间: 2004-03-16

妳好:利用 Scripting 的 Exists方法
Private Sub UserForm_Initialize()
Dim AllCells As Range, Norepeat As Object
Set Norepeat = CreateObject("Scripting.Dictionary")
Set AllCells = Worksheets("Sheet1").Range("A1:A" & Worksheets("Sheet1").[A65536].End(xlUp).Row)
For Each Cell In AllCells
If Not Norepeat.exists(Cell.Value) Then
Norepeat.Add Cell.Value, Empty
End If
Next
Me.ComboBox1.List = Norepeat.keys
End Sub
UP8BIzra.rar (10.56 KB)
UP8BIzra.rar (10.56 KB)
怎样用VBA提取一列单元格中的不重复值
下载次数: 196
2004-3-16 21:16

作者: chijanzen   发布时间: 2004-03-16

8楼的办法比FIND精练,建议楼主采用,另外关于FIND的方法参见http://club.excelhome.net/dispbbs.asp?boardid=2&star=6&replyid=137195&id=37026&skin=0&page=1

作者: cdrr   发布时间: 2004-03-16

请问chijanzen 老师,利用 scripting 的 Exists方法这是个什么方法?能请你讲解一下吗?特别是CreateObject("scripting.Dictionary")是什么意思?

[此贴子已经被作者于2004-3-16 21:26:02编辑过]

作者: cdrr   发布时间: 2004-03-16

HI,chijanzen,你好!感谢你的耐心和无微不至的帮助,为我在线编写代码。刚才,我下载后就及时进行运用,真的很不错,解决了我一个难题。再次感谢。再见。

作者: litingxin   发布时间: 2004-03-16

cdrr,感谢你指明FIND方法的使用参考处,我会好好研究,不辜负你的希望。

作者: litingxin   发布时间: 2004-03-16

以下是引用cdrr在2004-3-16 21:25:00的发言:
请问chijanzen 老师,利用 scripting 的 Exists方法这是个什么方法?能请你讲解一下吗?特别是CreateObject("scripting.Dictionary")是什么意思?
妳好:VBScript 程式語言參考 http://www.stat.fju.edu.tw/Teachonline/%E5%BB%96%E5%BB%BA%E7%BF%94/VBSdocs/vbs18.htmhttp://www.stat.fju.edu.tw/Teachonline/%E5%BB%96%E5%BB%BA%E7%BF%94/VBSdocs/http://www.stat.fju.edu.tw/Teachonline/%E5%BB%96%E5%BB%BA%E7%BF%94/VBSdocs/vbs388.htm

作者: chijanzen   发布时间: 2004-03-16

我看了最近二天的VBA帖子,chijanzen的回贴回答的很过瘾,不愧为MS的MVP。不知大家感觉如何?

作者: qwe   发布时间: 2004-03-16

晕,打不开

作者: cdrr   发布时间: 2004-03-16

能打开的,你再试试。

作者: litingxin   发布时间: 2004-03-16

Sub 抽取不重复字符2()
    Dim Arr, i#, str '提取单元格中不同的值
    Dim cel As Range
    Dim Dic As Object

    Set Dic = CreateObject("Scripting.Dictionary")
   
    For Each cel In Range("C2", [C1048576].End(3))
    For i = 1 To Len(cel)
        Dic(Right(cel, Len(cel))) = ""
    Next
    Next
    Arr = Dic.keys
    [H2].Resize(Dic.Count) = Application.Transpose(Arr)
    Set Dic = Nothing
End Sub

作者: f98968net   发布时间: 2011-08-03