2

问题:

我有一个 Excel 表,我正在使用它来生成一个相当大的需求可追溯性矩阵,其中使用 QA 测试用例编号的列和需求的行。我提供了显示针对单个需求使用的测试用例数量的能力,方法是在 req 旁边有一个单元格,对每一行使用 COUNTIF 表示“x”。虽然这将显示针对该要求完成的测试数量,但它不显示实际使用的 QA 测试用例数量。这有时需要用户向左/向右滚动以找到针对该要求使用的确切测试用例编号(在列标题中)。

  • 例如: Req 2.1.1 显示“5”作为针对它的测试用例数。用户必须向右滚动,直到在一个单元格中找到所有 X,并在其所在的列中写下/记住 QA 编号。

我已经包含了一个屏幕截图来帮助说明我的意思。 RTM 示例

我在寻找什么:

我想在“E”旁边添加一列(计算 x 的列),它将显示给定要求/行的每个 QA 测试用例编号(列标题 G5:HR5)。

例如:要求 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 ......但是在哪里以及如何?

4

1 回答 1

3

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

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

作为一个数组公式,退出编辑模式时需要使用 Ctrl-Shift-Enter 确认,而不是 enter。如果做得正确,那么 Excel 将{}围绕公式。

小例子:

在此处输入图像描述


笔记

TEXTJOIN 是在 OFFICE 365 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
于 2017-02-10T15:17:49.273 回答