手头的任务是在 A 列中搜索以查看我有哪些值(它们以字母的形式)并为每个唯一条目粘贴,其值在另一列中一次。
这是一个直观的解释:
我想出的是创建一个 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
中的唯一值列表,则可以使用以下宏。这实际上只是重新创建您手动查找唯一值的一种方法的步骤。不是最复杂的解决方案,但它有效
- 使用公司名称创建列的副本(使用工作表中最后可用的列)
- 删除辅助列的重复数据
- 将重复数据删除的列复制到目标位置
- 删除辅助列
假设工作表的最后一列没有被使用
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/