gpt4 book ai didi

excel - 使用 VBA 从数组中删除重复项

转载 作者:行者123 更新时间:2023-12-02 01:16:00 25 4
gpt4 key购买 nike

假设我在 Excel 2010 中有一个数据 block ,100 行 x 3 列。

C 列包含一些重复项,假设它开始为

1, 1, 1, 2, 3, 4, 5, ..... , 97, 98

使用 VBA,我想删除重复的行,这样我就剩下 98 行和 3 列。

1, 2, 3, ..... , 97, 98

我知道 Excel 2010 中有一个按钮可以执行此操作,但它随后会干扰我的其余代码并给出不正确的结果。

此外,我想在数组中执行此操作,然后将结果粘贴到工作表上,而不是诸如 Application.Worksheetfunction.countif(.....

所以类似:

Dim myarray() as Variant
myarray=cells(1,1).Currentregion.value

Dim a as Long

For a=1 to Ubound(myarray,1)

'something here to

Next a

最佳答案

I answered a similar question 。这是我使用的代码:

Dim dict As Object
Dim rowCount As Long
Dim strVal As String

Set dict = CreateObject("Scripting.Dictionary")

rowCount = Sheet1.Range("A1").CurrentRegion.Rows.Count

'you can change the loop condition to iterate through the array rows instead
Do While rowCount > 1
strVal = Sheet1.Cells(rowCount, 1).Value2

If dict.exists(strVal) Then
Sheet1.Rows(rowCount).EntireRow.Delete
Else
'if doing this with an array, then add code in the Else block
' to assign values from this row to the array of unique values
dict.Add strVal, 0
End If

rowCount = rowCount - 1
Loop

Set dict = Nothing

如果要使用数组,请使用相同的条件(if/else)语句循环遍历元素。如果字典中不存在该项目,则可以将其添加到字典中并将行值添加到另一个数组中。

老实说,我认为最有效的方法是调整从宏记录器获得的代码。您可以在一行中执行上述功能:

    Sheet1.UsedRange.RemoveDuplicates Columns:=3, Header:=xlYes

关于excel - 使用 VBA 从数组中删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11870095/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com