Arrays 从数组返回

Arrays 从数组返回,arrays,excel-formula,Arrays,Excel Formula,也许以前有人问过这个问题,但我甚至不知道该搜索什么 我在Excel中有一个包含n个项目的数组。 我还有一个包含n个项目的二进制数组,对于该二进制数组中的每一个1,我想返回该项目在原始数组中的位置。例如,假设我有:{A,B,C,D}和{0,0,1,1}。我只想返回C和D,因为这些地方都有1。 在Excel中有这样做的方法吗 谢谢 最好的 莫里斯您可以使用: =INDEX({"A","B","C","D"},N(IF({1},MODE.MULT(IF({0,0,1,1},COLUMN($A:$D)*

也许以前有人问过这个问题,但我甚至不知道该搜索什么

我在Excel中有一个包含n个项目的数组。 我还有一个包含n个项目的二进制数组,对于该二进制数组中的每一个1,我想返回该项目在原始数组中的位置。例如,假设我有:{A,B,C,D}和{0,0,1,1}。我只想返回C和D,因为这些地方都有1。 在Excel中有这样做的方法吗

谢谢

最好的

莫里斯

您可以使用:

=INDEX({"A","B","C","D"},N(IF({1},MODE.MULT(IF({0,0,1,1},COLUMN($A:$D)*{1;1})))))
根据不同的版本,在退出编辑模式时,可能需要使用Ctrl-Shift-Enter而不是Enter来确认

我的版本会自动溢出数组,因此将其放在A1中可以得到溢出的完整数组输出

您可以使用:

=INDEX({"A","B","C","D"},N(IF({1},MODE.MULT(IF({0,0,1,1},COLUMN($A:$D)*{1;1})))))
根据不同的版本,在退出编辑模式时,可能需要使用Ctrl-Shift-Enter而不是Enter来确认

我的版本会自动溢出数组,因此将其放在A1中可以得到溢出的完整数组输出


尝试以下用户定义的功能:

Public Function xtract(s1 As String, binpatrn As String) As String
    Dim arr1, arr2, i As Long
    arr1 = Split(s1, ",")
    arr2 = Split(binpatrn, ",")

    For i = LBound(arr1) To UBound(arr1)
        If arr2(i) = "1" Then
            xtract = xtract & "," & arr1(i)
        End If
    Next i
    If xtract = "" Then
        Exit Function
    Else
        xtract = Mid(xtract, 2)
    End If
End Function
我们将逗号分隔列表(不带大括号)放在A1中,将二进制列表(不带大括号)放在B1中。在C1中输入:

=xtract(A1,B1)

尝试以下用户定义的功能:

Public Function xtract(s1 As String, binpatrn As String) As String
    Dim arr1, arr2, i As Long
    arr1 = Split(s1, ",")
    arr2 = Split(binpatrn, ",")

    For i = LBound(arr1) To UBound(arr1)
        If arr2(i) = "1" Then
            xtract = xtract & "," & arr1(i)
        End If
    Next i
    If xtract = "" Then
        Exit Function
    Else
        xtract = Mid(xtract, 2)
    End If
End Function
我们将逗号分隔列表(不带大括号)放在A1中,将二进制列表(不带大括号)放在B1中。在C1中输入:

=xtract(A1,B1)

也许是这个?你可以看到,你得到了两个完全不同的答案。如果您模拟了数据集和预期的输出,显示它在工作表上的外观,以及以后在工作表上显示的内容,可能会更好。你的问题是添加这些细节。也许是这个?你可以看到,你得到了两个完全不同的答案。如果您模拟了数据集和预期的输出,显示它在工作表上的外观,以及以后在工作表上显示的内容,可能会更好。您的问题需要添加这些详细信息。