G'Day,
我还有一个更多的问题要帮助自己了解Excel的数组公式(Control + Shift + Enter)如何将每个单元格动态读取到公式中。
我做了一个简化的例子,向您展示我的意思。
我创建了一个小型的虚拟农场,里面有一些动物,并按名称列出来,并提供动物的声音。在下一列中,我创建了一个名为MakesSound的用户定义函数,该函数接收该动物是什么动物的输入,并响应该动物发出的声音。如下图快照所示。

不幸的是,我以为arrayformula可能会发现我有不同的单元格列出了这些动物,而结果却像快照一样结束了。

所以我怎样才能让arrayformula识别出B列中有不同的细胞,因为我知道Quacks不能解决其他动物的问题。 :-)
这是另一个快照,显示了数组公式旁边的公式,用于比较和我也使用的代码。

Public Function MakesSound(AnimalName As String) As Variant
    Select Case AnimalName
        Case Is = "Duck"
            MakesSound = "Quack!"
        Case Is = "Cow"
            MakesSound = "Moo!"
        Case Is = "Bird"
            MakesSound = "Tweet!"
        Case Is = "Sheep"
            MakesSound = "Ba-Ba-Ba!"
        Case Is = "Dog"
            MakesSound = "Woof!"
        Case Else
            MakesSound = "Eh?"
    End Select
End Function
我愿意提出建议。
谢谢,
彼得

最佳答案

您需要使您的数组函数将数据读入数组,对其进行处理并创建一个输出数组。然后,需要使用ctrl-shift-enter将数组函数输入到多单元格数组公式(D3:D7)中。

Public Function MakesSound(AnimalName As Range) As Variant
Dim Ansa() As Variant
Dim vData As Variant
Dim j As Long
vData = AnimalName.Value2
ReDim Ansa(1 To UBound(vData), 1 To 1)
For j = 1 To UBound(vData)
    Select Case vData(j, 1)
    Case Is = "Duck"
        Ansa(j, 1) = "Quack!"
    Case Is = "Cow"
        Ansa(j, 1) = "Moo!"
    Case Is = "Bird"
        Ansa(j, 1) = "Tweet!"
    Case Is = "Sheep"
        Ansa(j, 1) = "Ba-Ba-Ba!"
    Case Is = "Dog"
        Ansa(j, 1) = "Woof!"
    Case Else
        Ansa(j, 1) = "Eh?"
    End Select
Next j
MakesSound = Ansa
End Function

10-05 21:02
查看更多