gpt4 book ai didi

arrays - 我正在尝试返回 Excel UDF 的值数组。我最终只得到第一个值,没有其他值,为什么?

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

我希望我的 UDF 接受列输入并返回一个字符串数组,我可以将其用作数组公式。该函数使用集合和 Resume next 来构建唯一值的集合(这有效),然后我循环遍历该集合并将这些唯一字符串添加到字符串数组中(这也有效)。代码如下:

Function FindUniqueValues(columnToCheck As Range) As Variant
'****************************************************************
'** builds a string array of unique values to output somewhere **
'****************************************************************
Dim Col As New Collection
Dim CallerRows As Long
Dim CallerCols As Long
Dim itm
Dim i As Long
Dim CellVal As Variant
Dim stringArray() As String

For i = 1 To columnToCheck.Rows.Count
CellVal = columnToCheck.Rows(i).Value
On Error Resume Next
Col.Add CellVal, Chr(34) & CellVal & Chr(34)
On Error GoTo 0
Next i

ReDim stringArray(1 To Col.Count) As String
i = 1
For Each itm In Col
stringArray(i) = itm
i = i + 1
Next

FindUniqueValues = Application.WorksheetFunction.Transpose(stringArray)
End Function

我已经设置了调试点,并且 stringArray 中有正确的值。我已经阅读了“我的列中只有一个值”问题,并且广泛接受的解决方案是转置它,以便数组作为列而不是行输出 - 这修复了它一次。它起作用了,尽管只列出了 7 个唯一字符串,然后重复它们(尽管字符串数组包含 33 个条目),然后当我再次尝试在电子表格上输入公式时,它就不再起作用了。

输入是表列,因此函数调用为 {=FindUniqueValues([table[someColumn])}。

最佳答案

你的代码有效! (将其粘贴到标准模块中):

enter image description here

我首先高亮显示了B1B9。然后单击公式栏,然后输入数组:

=FindUniqueValues(A1:A9)

数组公式必须使用 Ctrl + Shift + Enter 输入,而不仅仅是 Enter 键。如果正确完成此操作,公式将在公式栏中出现并带有大括号。

诀窍是突出显示 B 单元格,然后输入公式。不要将公式放在单个单元格中并尝试​​向下复制!

关于arrays - 我正在尝试返回 Excel UDF 的值数组。我最终只得到第一个值,没有其他值,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48434413/

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