excel VBA 提取范围中唯一值
时间: 2023-11-29 16:54:56 浏览: 53
要在 Excel VBA 中提取范围中的唯一值,你可以使用集合对象。以下是一个示例代码:
```VBA
Sub UniqueValues()
Dim inputRange As Range
Dim uniqueValues As New Collection
Dim cellValue As Variant
Set inputRange = Range("A1:A10") ' 范围可以更改为你需要的范围
For Each cellValue In inputRange
On Error Resume Next ' 忽略重复值的错误
uniqueValues.Add cellValue, CStr(cellValue)
On Error GoTo 0
Next cellValue
' 输出唯一值
For i = 1 To uniqueValues.Count
Debug.Print uniqueValues(i)
Next i
End Sub
```
该代码将输入范围中的唯一值添加到集合中,并输出唯一值。请注意,这里使用了 On Error Resume Next 语句来忽略重复值的错误。
相关问题
2016EXCELVBA提取word信息
可以使用VBA代码通过Microsoft Word对象模型来提取Word文档中的信息。下面是一个简单的示例,演示如何提取Word文档中的文字内容并将其输出到Excel表格中:
```vb
Sub ExtractWordContent()
Dim wdApp As Object 'Word.Application
Dim wdDoc As Object 'Word.Document
Dim rng As Object 'Word.Range
Dim i As Long
Dim j As Long
'创建Word对象
Set wdApp = CreateObject("Word.Application")
'打开Word文档
Set wdDoc = wdApp.Documents.Open("C:\Path\To\Your\Word\File.docx")
'设置Range对象,指定要提取的文本范围
Set rng = wdDoc.Range
'遍历Range对象,提取文本内容
For i = 1 To rng.Paragraphs.Count
For j = 1 To rng.Paragraphs(i).Range.Words.Count
'输出到Excel表格中
Cells(i, j).Value = rng.Paragraphs(i).Range.Words(j)
Next j
Next i
'关闭Word文档和对象
wdDoc.Close
wdApp.Quit
Set wdDoc = Nothing
Set wdApp = Nothing
End Sub
```
请注意,在运行此代码之前,您需要添加对Microsoft Word对象库的引用。方法是打开VBA编辑器,选择“工具”->“引用”,然后勾选“Microsoft Word XX.X Object Library”。
希望这可以帮助您开始提取Word信息!
Excel用代码提取多列中的唯一值
Excel 中提取多列中的唯一值可以使用“高级筛选”功能。以下是具体步骤:
1. 将数据放在同一工作表中,并确保每列都有标题行。
2. 在任意单元格中,输入要提取唯一值的列标题,例如 A1、B1、C1。
3. 在数据区域选中整个表格,包括标题行。
4. 点击“数据”选项卡,然后选择“高级”。
5. 在“高级筛选”对话框中,选择“复制到其他位置”选项。
6. 在“列表范围”中输入整个表格的范围,包括标题行。
7. 在“条件区域”中输入标题行的范围,例如 A1:C1。
8. 确保选中“唯一记录”复选框,并在“复制到”框中输入唯一值的起始单元格,例如 F1。
9. 点击“确定”,即可在 F1 开始的单元格中提取多列中的唯一值。
如果你想使用 VBA 代码来提取多列中的唯一值,可以使用以下代码:
```vba
Sub ExtractUniqueValues()
Dim ws As Worksheet
Dim lastRow As Long
Dim uniqueValues As Variant
Dim i As Long, j As Long
Dim dict As Object
Set dict = CreateObject("Scripting.Dictionary") ' 创建一个字典对象
Set ws = ThisWorkbook.Worksheets("Sheet1") ' 更改为你的工作表名称
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row ' 获取最后一行
For i = 2 To lastRow ' 从第二行开始循环
' 使用字典对象来存储唯一值
If Not dict.exists(ws.Cells(i, 1).Value & "|" & ws.Cells(i, 2).Value & "|" & ws.Cells(i, 3).Value) Then
dict.Add ws.Cells(i, 1).Value & "|" & ws.Cells(i, 2).Value & "|" & ws.Cells(i, 3).Value, ""
End If
Next i
' 将唯一值写入新的工作表中
j = 1
For Each uniqueValues In dict.keys
ws.Cells(j, 6).Value = Split(uniqueValues, "|")(0)
ws.Cells(j, 7).Value = Split(uniqueValues, "|")(1)
ws.Cells(j, 8).Value = Split(uniqueValues, "|")(2)
j = j + 1
Next uniqueValues
End Sub
```
这将提取 A、B、C 列中的唯一值,并将它们写入新的工作表中的 D、E、F 列中。