如何通过VBA提取excel的某一列中所包含的不同的值。

比如这一列中有aa,bb,aa,cc,aa,dd,我只想得到aa,bb,cc,dd,就是取出包含的所以的值但是只取一次。

用数据字典,dictionary value,item 。 value不允许重复。
Sub test()
Dim name()
Set dic = CreateObject("Scripting.Dictionary")
a = [a65536].End(xlUp).Row
For Each Cell In Worksheets("Sheet1").Range("A1:A" & a)
If Not dic.exists(Cell.Value) Then
dic.Add Cell.Value, Cell.Value
On Error Resume Next
End If
Next
name = dic.items
For i = 1 To dic.Count
Worksheets("Sheet1").Cells(i, 2) = name(i - 1)
Next
End Sub追问

执行的效果是我想要的,但是小妹菜鸟啊,大师能不能解释一下代码哈。理解不了就不能活用,麻烦注释哈,感谢。

追答

你去搜搜 vba 数据字典 看看 就知道了 ,很好理解

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-09-03
用字典法啊追问

什么是字典法啊?

追答

楼下用的就是。

如何通过VBA提取excel的某一列中所包含的不同的值。
用数据字典,dictionary value,item 。 value不允许重复。Sub test()Dim name()Set dic = CreateObject("Scripting.Dictionary")a = [a65536].End(xlUp).Row For Each Cell In Worksheets("Sheet1").Range("A1:A" & a)If Not dic.exists(Cell.Value) Then dic.Add Cell.Value, Cell.Valu...

Excel表如何通过VB 获取一列中有哪些不重复的项?
最快,最简单的方法就是用字典 代码及注释如下:Sub main()Set dic = CreateObject("scripting.dictionary") '后期绑定字典 arr = Range("A1:A" & Range("A65536").End(3).Row) '将A列非空单元格全部复制给数组arr For i = 1 To UBound(arr) '循环 dic(arr(i, 1)) = "" '将A列...

Excel使用VBA宏查询包含指定内容的值
Sub main()x = Range("A65536").End(xlUp).Row ReDim arr(1 To x, 1 To 5)brr = Range("A1:E" & x)For i = 2 To UBound(brr)If Left(Cells(i, 5).Value, 4) = "2002" Then k = k + 1 For j = 1 To 5 arr(k, j) = brr(i, j)Next j End If Next i Rang...

EXCEL中,用什么公式或VBA办法,能够分别提取一个单元格中一组不同长度...
1、选中B列,数据选项卡,分列。2、分列依据选择空格,把其它的对勾都删掉,点击确定。3、分列完成。

vba如何读取excel中某单元格的行数或列数
1、将单元格所选单元格的行号和列号,分别用VBA显示在下面的两个单元格中,如下图所示:2、按下Alt+F11,打开VBA编辑界面,选择当前工作表编写代码,如下图所示:3、下面代码是得到当前单元格的行号并放到当前单元格下一个单元格中:4、下面代码是得到当前单元格的列号并放到当前单元格下面第二个...

Excel如何通过 vba从一组数据中选择5个显示出来?
Sub 范围内随机取()a = Split(范围内随机取不重复(5, Range("g1:g8")), "|", -1, 1)For i = 0 To 4 Cells(i + 1, 1) = a(i) Cells(i + 1, 2) = Application.VLookup(Cells(i + 1, 1), Range("g1:h8"), 2, 0)NextEnd SubFunction 范围内随机取不重复(nu...

excel中如何用VBA提取单元格中的数字?
请查收附件。代码如下。Sub tq()Dim r, n As LongDim rg As RangeDim BGArrr = Range("A" & Rows.Count).End(xlUp).RowBGArr = Range("B1:G" & r)n = Mid(Range("A" & r), 2, 1)For Each rg In Range("A1:A" & r) BGArr(rg.Row, 1) = --Left(rg, 1) BG...

excel用VBA调取一列中出现三次以上的数据
1 To 10) i = 1 For Each x In d.keys If d(x) > 3 Then arr(i, 1) = x i = i + 1 End If Next x i = i - 1 Range("b2").Resize(i, 1) = arr MsgBox "找到" & i & "个,耗时" & ((Now - t) * 24 * 3600) & "秒"End...

excel如何使用VBA提取列的值呢?
Sub test() Dim rng As Range Dim j As Integer Set rng = Range("a1:g1").Find("列3") j = rng.Column Range(Cells(2, j), Cells(5, j)).Copy Range("j2:j5")End Sub

excel中用VBA提取某一个单元格内包含某关键字符串的一行内容前的整数...
答:右键工作表标签,选择查看代码,复制下面代码进去。然后可以在B列输入关键字,就会得到结果。Private Sub Worksheet_Change(ByVal Target As Range) Dim Cell As Range Dim TempStr As String On Error Resume Next If Target.Column = 2 Then Set Cell = Cells(Target.Cells(1...

相似回答