EXCEL:是否有一个像LOOKUP一样的函数/方式,但是将一个数组作为输入并返回一个数组作为结果

时间:2018-05-21 12:46:58

标签: excel excel-formula google-sheets

谷歌电子表格中是否有办法获取数组多个值以换取输入值数组?

我附上了一张图片,里面有一个想要的例子。

基本上,想要的东西是: = LOOKUP(input_array,range_with_ID_values,range_with_return_values) 返回' result_array'具有与" input_array'

中的值匹配的值数组

请帮忙! Kaustubh want a f() that works like: '=f(input,range with IDs and colors)' retrns array the return box

编辑: 正如评论所建议的,我正在阐述为什么我需要这个。我想检查是否所有相关任务都已完成。如果是,那么这个依赖任务'应该开放接受。附加图像以描述下面的场景

click to see example

在此图像中,在任务1,2,3未完成之前,任务4将始终“等待依赖性”'。一旦所有任务1,2,3完成',它将变为待定

另请注意,无需序列化任务。中间可能存在任务,这与我们需要更新状态的任务无关。例如。可能会有诸如“买杂货”,“杀死蟑螂”这样的任务。 “植物浇水”等等。 taks并不依赖

2 个答案:

答案 0 :(得分:4)

使用TEXTJOIN作为数组公式

=TEXTJOIN(",",TRUE,IF(ISNUMBER(SEARCH("," & A2:A9 & ",","," & D3 & ",")),B2:B9,""))

作为数组公式,必须在退出编辑模式时使用Ctrl-Shift-Enter而不是Enter确认。如果操作正确,那么Excel会将{}放在公式周围。

enter image description here

答案 1 :(得分:0)

在Excel中,请考虑以下用户定义函数:

Public Function MultiReturn(rng As Range, inputs As String) As String
    Dim arry1, a, outstr As String, i As Long, arry2
    arry1 = Split(Mid(inputs, 2, Len(inputs) - 2), ",")
    outstr = "{"

    arry2 = rng
    For Each a In arry1
        For i = LBound(arry2, 1) To UBound(arry2, 1)
            If CStr(a) = CStr(arry2(i, 1)) Then outstr = outstr & arry2(i, 2) & ","
        Next i
    Next a

    MultiReturn = Mid(outstr, 1, Len(outstr) - 1) & "}"
End Function

例如:

enter image description here

如您所见,第一个参数是要搜索的表,第二个参数是所需格式的输入集(用逗号分隔的列表括起来的大括号)