excel - 从列中获取唯一值

标签 excel vba

手头的任务是在 A 列中搜索以查看我有哪些值(它们以字母的形式)并为每个唯一条目粘贴,其值在另一列中一次。

这是一个直观的解释:

Visual example of the table and action I need

我想出的是创建一个 For 循环,该循环通过列 A 发起并创建一个条件,如果它找到某个值,那么它将在该范围内插入该值。代码如下:

For i = 1 to 26

if cells(i,26).value= "A" Then

Range ("C1")= "A"

Elseif cells(i,26).value = "B" then
Range ("C2").value = "B"
ElseIf (i,26).value = "C" then 
Range ("C3").value = "C"
EndIf
Next i
end sub 

我想缩短这个过程,因为我的数据集非常大,包含很多公司名称。有什么建议吗?我相信必须有一种方法来了解这些值(value)观,而不必自己查看所有值(value)观。

最佳答案

如果目标只是获取 Column A 输出到 Column C 中的唯一值列表,则可以使用以下宏。这实际上只是重新创建您手动查找唯一值的一种方法的步骤。不是最复杂的解决方案,但它有效

  1. 使用公司名称创建列的副本(使用工作表中最后可用的列)
  2. 删除辅助列的重复数据
  3. 将重复数据删除的列复制到目标位置
  4. 删除辅助列

假设工作表的最后一列没有被使用


Sub Unique()

Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheet1")
Dim lr As Long, lc As Long

'Determine Range Size
lr = ws.Range("A" & ws.Rows.Count).End(xlUp).Row
lc = ws.Cells(1, ws.Columns.Count).Column

'Copy Company Names To Helper Column/Remove Duplicates
ws.Range("A2:A" & lr).Copy ws.Cells(1, lc)
ws.Columns(lc).RemoveDuplicates Columns:=1, Header:=xlNo
lr = ws.Cells(ws.Rows.Count, lc).End(xlUp).Row

'Output Unique Values From Helper Column
ws.Range(ws.Cells(1, lc), ws.Cells(lr, lc)).Copy
ws.Range("C2").PasteSpecial xlPasteValues

'Delete Helper Column
ws.Columns(lc).Delete

End Sub

注意我对帖子的评论。这里可能根本不需要 VBA

关于excel - 从列中获取唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66337908/

相关文章:

excel - 如何在 VBA 中获取一系列的 x 和 y 范围?

excel - Excel 密码保护的 Powershell 测试

PHP_XLSXWriter_plus大型Mysql数据集缺失数据

c# - 无法使用 openxml 在 excel 中设置所需的背景颜色

excel - 如何有条件地合并/连接 Excel 工作表?

javascript - 使用VBA抓取实时数据

excel - 使用宏计算条件格式单元格的数量

excel - 检查单元格范围没有范围名称后为其命名

javascript - 如何在 Excel VBA 中使用 Selenium Webdriver 滚动下拉菜单

c# - 自定义 Excel 右键单击​​上下文菜单被快速分析默认值覆盖