Excel 弦的SumIf
我是否能够对字符串使用SumIf函数?如果不是,UDF是唯一的替代方案吗?或者是否有一种方法可以通过索引实现这一点 如果对应行中的单元格设置为“是”,我将尝试连接表的值 例子: 芝加哥------是的Excel 弦的SumIf,excel,Excel,我是否能够对字符串使用SumIf函数?如果不是,UDF是唯一的替代方案吗?或者是否有一种方法可以通过索引实现这一点 如果对应行中的单元格设置为“是”,我将尝试连接表的值 例子: 芝加哥------是的 纽约-----------(空白) 洛杉矶------是的 孟菲斯------是 旧金山——(空白) 结果:在字符编码(ASCII)方面,芝加哥、洛杉矶、孟菲斯的连接不同于求和。SumIf用于求和,不能用于连接。理解其中的差异很重要 我向一位名叫Mike Rickson先生的人推荐这个UDF: F
纽约-----------(空白)
洛杉矶------是的
孟菲斯------是
旧金山——(空白)
结果:在字符编码(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
用法:
感谢您提供了UDF示例。你是怎么找到它的?我很难找到任何类似的地方。@cardern mrickerson是OzGrid上的一个OzMVP。如果可能的话,你能提供一个链接吗?在谷歌搜索“OzGrid mrickerson”只会返回两个结果,而且两个结果都没有链接到他。。。在OzGrid上搜索该用户也不会返回任何信息。看起来是mikerickson,而不是mrickerson。