【问题标题】:EXCEL: Is there a function / way that works like LOOKUP, but takes an array as input and returns an array as resultsEXCEL:是否有类似 LOOKUP 的函数/方式,但将数组作为输入并返回数组作为结果
【发布时间】:2018-05-21 12:46:58
【问题描述】:

在谷歌电子表格中有没有办法获取数组多个值以返回输入值数组?

我附上一张图片,其中包含所需的示例。

基本上,想要的东西是: =LOOKUP(输入数组,range_with_ID_values,range_with_return_values) 它返回一个“result_array”,其中包含一个与“input_array”中的值匹配的值数组

请帮忙! Kaustubh

编辑: 正如评论所建议的那样,我正在详细说明我为什么需要这个。我想检查所有相关任务是否已完成。如果是,那么这个“依赖任务”应该开放接受。附上一张图片来描述下面的场景

click to see example

在此图像中,在任务 1、2、3 未“完成”之前,任务 4 将始终处于“等待依赖关系”状态。一旦所有任务 1、2、3 都“完成”,它将变为待处理

还要注意,任务不需要序列化。中间可能有任务,这些任务与我们需要更新状态的任务无关。例如。可能有诸如“买杂货”、“杀死蟑螂”等任务,而“植物的水”并不依赖于这些任务

【问题讨论】:

  • 是的,尽管“数组”将存储在“公式”中,例如根据需要进一步操作,而不是作为分隔列表解析为单个单元格。也许你应该澄清你在寻找什么。
  • 您的输入是一个单元格中的逗号分隔列表吗?您的输出是一个单元格中的逗号分隔列表吗?或者您希望输出用于另一个数组公式?
  • 是的,我的列表将在一个单元格中以逗号分隔。但是,它不需要用大括号或任何括号括起来。我确实想进一步使用结果。我想检查所有“结果值”是否为“真”。如果是,则另一个单元格应转换为“真”。如果数组中的任何这些值是“假”,它应该返回假

标签: excel excel-formula google-sheets


【解决方案1】:

使用 TEXTJOIN 作为数组公式

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

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

【讨论】:

    【解决方案2】:

    在 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
    

    例如:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-01
      • 2023-03-14
      • 1970-01-01
      • 2017-03-09
      • 2018-11-13
      • 2014-03-06
      • 2015-08-26
      相关资源
      最近更新 更多