2

我可以对字符串使用 SumIf 函数吗?如果不是,UDF 是唯一的选择,还是有办法通过索引以某种方式潜在地实现这一点?

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

例子:

芝加哥 ----------- 是
纽约 ---------- (空白)
洛杉矶 ------ 是
孟菲斯 ---------- 是
圣弗朗西斯科——(空白)

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

4

1 回答 1

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

于 2013-10-23T21:45:19.717 回答