gpt4 book ai didi

vba - 使用 VBA 在 Excel 中创建列表/数组以获取列中唯一名称的列表

转载 作者:行者123 更新时间:2023-12-02 03:06:33 24 4
gpt4 key购买 nike

我正在尝试在列中创建唯一名称的列表,但我一直不明白如何正确使用 ReDim,有人可以帮助我完成此操作并解释它是如何完成的吗?最好建议一种更好/更快的替代方法。

Sub test()
LastRow = Range("C65536").End(xlUp).Row
For Each Cell In Range("C4:C" & LastRow)
OldVar = NewVar
NewVar = Cell
If OldVar <> NewVar Then
`x =...
End If
Next Cell
End Sub

我的数据格式为:

Stack
Stack
Stack
Stack
Stack
Overflow
Overflow
Overflow
Overflow
Overflow
Overflow
Overflow
Overflow
.com
.com
.com

所以基本上一旦它有了名称,它就永远不会再在列表中弹出。

最后数组应包含以下内容:

    Stack    Overflow    .com

最佳答案

您可以尝试我的建议,以解决 Doug 的方法。
但如果你想坚持你的逻辑,你可以尝试这个:

Option Explicit

Sub GetUnique()

Dim rng As Range
Dim myarray, myunique
Dim i As Integer

ReDim myunique(1)

With ThisWorkbook.Sheets("Sheet1")
Set rng = .Range(.Range("A1"), .Range("A" & .Rows.Count).End(xlUp))
myarray = Application.Transpose(rng)
For i = LBound(myarray) To UBound(myarray)
If IsError(Application.Match(myarray(i), myunique, 0)) Then
myunique(UBound(myunique)) = myarray(i)
ReDim Preserve myunique(UBound(myunique) + 1)
End If
Next
End With

For i = LBound(myunique) To UBound(myunique)
Debug.Print myunique(i)
Next

End Sub

这使用数组而不是范围。
它还使用 Match 函数而不是嵌套的 For 循环
不过我没有时间检查时差。
所以我把测试留给你。

关于vba - 使用 VBA 在 Excel 中创建列表/数组以获取列中唯一名称的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22004091/

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