gpt4 book ai didi

excel - 将多个来源合并到一个 ComboBox 列表中并仅显示唯一项

转载 作者:行者123 更新时间:2023-12-02 15:43:29 25 4
gpt4 key购买 nike

我试图将两个不同的列表组合成一个 ComboBox.list,但有些值是相同的,我不希望它们出现两次。

不幸的是,我对 VBA 不太熟悉,而且错误消息非常普遍,所以我不确定为什么我的尝试不起作用。

我在网上找到了一个代码,可以很好地将两者结合起来,但是当我添加 unique 函数时,它没有任何区别。它很好地组合了列表,但它似乎忽略了独特的功能,因此有很多重复项。

这是我一直在使用的代码:

Sub Combo()

Set rng1 = sheet14.Range("Range_1")
Set rng2 = sheet14.Range("Range_2")

For Each cl In rng1
If arStr = "" Then
arStr = cl.Value
Else
arStr = arStr & "," & cl.Value
End If
Next cl

For Each cl In rng2
If arStr = "" Then
arStr = cl.Value
Else
arStr = arStr & "," & cl.Value
End If
Next cl

sheet13.SupplierCmb.List = WorksheetFunction.unique(Split(arStr, ","))

End Sub

我已经通过仅在其中一个范围内使用 unique 函数来测试它是否有效,并且效果很好。

最佳答案

我不知道 Unique 函数的确切规范,但可以确认一维数组存在问题。

我建议使用字典来获取列表 - 这也适用于旧版本的 Excel(但不适用于 Mac)。您可以通过创建范围的并集来简化代码,这样您就只有一个循环。

Dim dict As New Dictionary

Dim rng As Range, cell As Range
Set rng = Union(sheet14.Range("Range_1"), sheet14.Range("Range_2"))

For Each cell In rng
dict(cell.Value) = ""
Next
sheet13.SupplierCmb.List = dict.Keys

请注意,这是使用早期绑定(bind),因此您需要设置对脚本运行时的引用。如果您不想这样做,请像这样定义字典:

Dim dict As Object
Set dict = CreateObject("Scripting.Dictionary")

关于excel - 将多个来源合并到一个 ComboBox 列表中并仅显示唯一项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75243685/

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