如何找到一行中包含值的所有单元格引用,并将它们显示在一个单元格中?

How can I find all cell references in a row that contain a value, and display them in one cell?

问题:

我有一个 Excel sheet 用于相当大的需求可追溯性矩阵,使用 QA 测试用例编号的列和需求的行。我提供了显示已针对单个需求使用的测试用例数量的功能,方法是在请求旁边有一个单元格,每行使用 "x" 的 COUNTIF。虽然这将显示针对该要求完成的测试数量,但它不会显示实际使用的 QA 测试用例数量。这有时需要用户滚动 left/right 以找到针对该要求使用的确切测试用例编号(在 headers 列中)。

我附上了一张截图来帮助说明我的意思。

我在找什么:

我想在 "E" 旁边添加一列(计算 x 的列),它将显示每个 QA 测试用例编号(第 headers G5:HR5 列) "X" 对于给定的 requirement/row.

Ex:要求 1.1.2 在该行中有四个 x,表示用于此要求的四个不同测试用例(QA-466、QA-467、QA-468 和 QA-470)。我想在显示 1.1.2 要求的行中的某处放置一个单元格 "QA-466 QA-467 QA-468 QA-470".

我感觉我需要多个隐藏单元格来 运行 一些公式来完成这项工作,并且我会在某个时候使用 REFERENCE 和 OFFSET.. .但是在哪里以及如何?

如果您有 OFFICE 365 Excel,请在 F9 中使用 TEXTJOIN() 作为数组公式:

=TEXTJOIN(" ",TRUE,IF(G9:HR9="x",$G:$HR,""))

作为数组公式,退出编辑模式时需要用Ctrl-Shift-Enter确认,而不是回车。如果正确完成,那么 Excel 将在公式周围放置 {}

小例子:


注意

OFFICE 365 中引入了 TEXTJOIN Excel。

如果您没有 TEXTJOIN 函数,则将以下内容放入工作簿附带的模块中。并使用上述公式:

Function TEXTJOIN(delim As String, skipblank As Boolean, arr)
    Dim d As Long
    Dim c As Long
    Dim arr2()
    Dim t As Long, y As Long
    t = -1
    y = -1
    If TypeName(arr) = "Range" Then
        arr2 = arr.Value
    Else
        arr2 = arr
    End If
    On Error Resume Next
    t = UBound(arr2, 2)
    y = UBound(arr2, 1)
    On Error GoTo 0

    If t >= 0 And y >= 0 Then
        For c = LBound(arr2, 1) To UBound(arr2, 1)
            For d = LBound(arr2, 1) To UBound(arr2, 2)
                If arr2(c, d) <> "" Or Not skipblank Then
                    TEXTJOIN = TEXTJOIN & arr2(c, d) & delim
                End If
            Next d
        Next c
    Else
        For c = LBound(arr2) To UBound(arr2)
            If arr2(c) <> "" Or Not skipblank Then
                TEXTJOIN = TEXTJOIN & arr2(c) & delim
            End If
        Next c
    End If
    TEXTJOIN2 = Left(TEXTJOIN, Len(TEXTJOIN) - Len(delim))
End Function