gpt4 book ai didi

excel - 通过 UDF 返回一个数组

转载 作者:行者123 更新时间:2023-12-04 20:14:21 25 4
gpt4 key购买 nike

我有两个宏。其中一个基于范围创建一个数组。第二个将采用该数组,通过它并删除任何重复的条目。然后我希望第二个宏返回一个我可以在第一个宏中继续使用的数组。

这是我到目前为止所尝试的:

这是为了获取数组:

Sub array_Test()
Dim array1() As Variant
ReDim array1(1 To 10)
array1 = Range("A1:A10")
GEN_USE_Remove_Duplicates_from_Array (array1)
Dim i As Integer
Debug.Print Join(array1, "/") 'Now that array1 has had duplicates removed, print the remaining numbers. This is where I don't know what to do
For i = 0 To UBound(array1)
Range(Cells(i + 1, 2).Value) = array1(i + 1)
Next i
End Sub

这是 GEN_USE_Remove_Duplicates... 子:
Sub GEN_USE_Remove_Duplicates_from_Array(arr As Variant)
Dim Array_1
Array_1 = arr
Dim Array_2()
Dim Array_toRemove()

Dim dic As New Scripting.Dictionary
Dim arrItem, x As Long
For Each arrItem In Array_1
If Not dic.Exists(arrItem) Then
dic.Add arrItem, arrItem
End If
Next

Array_2 = dic.Keys


Debug.Print Join(Array_2, "/")

GEN_USE_Remove_Duplicates_from_Array = Array_2

End Sub

这成功地只保留了独特的值(value)。现在,如何让该结果 (Array_2) 在 array_Test 子中使用?我需要创建一个函数而不是一个子吗?

非常感谢任何建议/帮助/提示!

最佳答案

Sub不会返回值,但您可以轻松地将其交换为可以返回的函数。

function GEN_USE_Remove_Duplicates_from_Array(arr As Variant)
' lots of code stuff here ...
GEN_USE_Remove_Duplicates_from_Array = Array_2
end function

将返回的数组分配给一个数组,例如,
array1 = GEN_USE_Remove_Duplicates_from_Array(array1)

fwiw,您应该可以将其保留为潜艇并使用,
arr = array2

这也应该将作为单个参数传入的数组更改为去重数组。

关于excel - 通过 UDF 返回一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31523192/

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