0

我正在尝试这样做:

Excel合并多行

给出的答案是“数据透视表”,但是我看不到显示单元格值(或值数组)的方法,而不是使用数据透视表时的计数、总和或其他数据聚合。

谢谢!

我的数据示例:

| ID  | Var1  | Var2 | 
|1000 | apple | null |
|1000 | null  | 8    |
|1001 | banana| null |
|1001 | null  | 17   |

我本质上想合并具有相同 ID 的行,并在同一行中显示 Var 1 和 2 数据。当 Var 1 存在时,Var 2 始终为空,反之亦然。

4

2 回答 2

0

假设数据设置如下:

Tigeravatar 合并行示例

要获取 E 列中的唯一值,请选择 A 列中的数据并转到数据 -> 高级过滤器 -> 复制到新位置 -> 选择单元格 E1 并检查“仅唯一值” -> 确定

然后在单元格 F2 中并复制下来:

=INDEX($B$2:$B$5,MATCH(1,INDEX(($A$2:$A$5=E2)*($B$2:$B$5<>"null"),),0))&", "&INDEX($C$2:$C$5,MATCH(1,INDEX(($A$2:$A$5=E2)*($C$2:$C$5<>"null"),),0))

将范围调整为您的实际范围。这是一个纯公式解决方案,其中两个结果都在同一个单元格中。如果您希望结果位于单独的单元格中,或者您希望使用 VBA 解决方案,请告诉我。

作为旁注,如果“空”单元格实际上是空白的,那么<>"null"您可以使用<>""

于 2013-11-07T18:37:20.507 回答
0

你可以在这里使用这个SUM功能吗?添加null什么都不做,所以你最终得到了想要的值。

Row Labels    Sum of Var1    Sum of Var2 
1000          7              8
1001          9              17
Grand Total   16             25

编辑:根据您的评论,我认为数据透视表不会起作用。数据透视表假定您想要聚合数据;但在您的情况下,您正在使用它来过滤数据。您的原始链接只有数值,所以这就是它在那里工作的原因。

您可以编写一个可能有帮助的简单 VBA 函数。您将首先获得唯一 ID 列表,然后使用函数提取所需的“Var”值。这是一个可能有助于您入门的功能:

Public Function getunique(rngId As Range, rngAllIds As Range, rngVar As Range)
    Dim rngeach As Range
    Dim tempVal As Variant

    Dim offset As Integer
    offset = rngVar.Column - rngAllIds.Column

    For Each rngeach In rngAllIds
        If rngeach = rngId And UCase(Trim(rngeach.offset(0, offset).Value)) <> "NULL" Then
            tempVal = rngeach.offset(0, offset)
            getunique = tempVal
            Exit Function
        End If
    Next rngeach

    getunique = "<NOT FOUND>"

End Function

以下是输入的函数:

 ID      Var1    Var2 
1000    =getUnique($F2,$A$2:$A$5,B$2:B$5)   =getUnique($F2,$A$2:$A$5,C$2:C$5)
1001    =getUnique($F3,$A$2:$A$5,B$2:B$5)   =getUnique($F3,$A$2:$A$5,C$2:C$5)

而且,使用您的测试集,结果是:

 ID      Var1    Var2 
1000    apple   8
1001    banana  17
于 2013-11-07T02:17:40.550 回答