SumIf为string

我能够使用SumIf函数的string? 如果不是,UDF是唯一的select还是有办法通过索引以某种方式来完成这个潜在的?

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

例:

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

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

当涉及到字符编码(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