If you want to keep your original data and merely summarize the data somewhere else, you can use the following method.
Create a user-defined function in VB that is essentially just like CONCATENATE, but can be used in an array formula. This will allow you to stick an IF statement in for the range variable in the CONCATENATE function. Here's a quick version I threw together:
Private Function CCARRAY(rr As Variant, sep As String)
'rr is the range or array of values you want to concatenate. sep is the delimiter.
Dim rra() As Variant
Dim out As String
Dim i As Integer
On Error GoTo EH
rra = rr
out = ""
i = 1
Do While i <= UBound(rra, 1)
If rra(i, 1) <> False Then
out = out & rra(i, 1) & sep
End If
i = i + 1
Loop
out = Left(out, Len(out) - Len(sep))
CCARRAY = out
Exit Function
EH:
rra = rr.Value
Resume Next
End Function
So you could use the following in this table to summarize Items:
{=CCARRAY(IF(A1:A7="Cat1",B1:B7),", ")}
Remember to press Ctrl+Shift+Enter when entering the formula.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…