SumIf表示字符串

时间:2013-10-23 21:31:44

标签: excel

我可以将SumIf函数用于字符串吗?如果没有,UDF是唯一的替代方案,还是有办法以某种方式通过索引实现这一目标?

如果相应行中的单元格设置为“是”,我试图连接表的值。

实施例

芝加哥-----------是的 纽约----------(空白)
洛杉矶------是的 孟菲斯----------是的 旧金山---(空白)

结果:芝加哥,洛杉矶,孟菲斯

1 个答案:

答案 0 :(得分:3)

连接与字符编码(ASCII)的求和不同。 SumIf用于求和,你不能用它来连接。了解差异非常重要。

我推荐Mike Rickson先生的这个UDF:

Function ConcatIf(ByVal compareRange As Range, ByVal xCriteria As Variant, _
    Optional ByVal stringsRange As Range, Optional Delimiter As String) As String
    Dim i As Long, j As Long, criteriaMet As Boolean

    Set compareRange = Application.Intersect(compareRange, _
    compareRange.Parent.UsedRange)

    If compareRange Is Nothing Then Exit Function
    If stringsRange Is Nothing Then Set stringsRange = compareRange
    Set stringsRange = compareRange.Offset(stringsRange.Row - compareRange.Row, _
    stringsRange.Column - compareRange.Column)

    For i = 1 To compareRange.Rows.Count
        For j = 1 To compareRange.Columns.Count
            If (Application.CountIf(compareRange.Cells(i, j), xCriteria) = 1) Then
                ConcatIf = ConcatIf & Delimiter & CStr(stringsRange.Cells(i, j))
            End If
        Next j
    Next i
    ConcatIf = Mid(ConcatIf, Len(Delimiter) + 1)
End Function

用法:

1

2