SumIf 与字符串?

SumIf with Strings?

这可能是一个愚蠢的问题,如果是,我深表歉意。我在 excel 中有一个 table:

a 列.............b 列

1 属性1......问题x

2 属性2.......问题

3 属性3......问题

4 属性1......问题一

我想知道是否可以使用 sumif(或任何类似的公式)在一个单元格中添加问题,指的是某个 属性。例如: 我会

a 列.............b 列

1 属性1......问题x问题a

问题是我不知道从哪里开始。我尝试使用 sumif 但出现错误。可能是因为我正在尝试添加字符串。我尝试将 vlookup 与 sumif 混合使用,但这也没有产生任何结果。我被困在这里了。感谢您的帮助!

我不是 100% 确定,但我认为您可能需要为此使用 VBA。您可以尝试创建以下自定义函数:

  1. 在 sheet 中创建命名范围属性和问题。

  2. 单击 ALT+F11 打开 VBA 编辑器。

  3. 按插入 --> 模块

  4. 写代码

'

Function ConcatIF(Property As String, PropertyRange As Range, ProblemRange As Range) As String
    Dim counter As Integer

    Dim result As String
    result = ""

    Dim row As Range
    counter = 1
    For Each row In PropertyRange.Rows            
        If (Property = row.Cells(1,1).Value) Then
            result = result + ProblemRange.Cells(counter,1).Value + " "
        End If
        counter = counter +1
    Next row
    ConcatIF = result
End Function

因为我在写这篇文章的机器上没有excel,我只能在另一台机器上测试它,因此这段代码中可能存在拼写错误。

确保你在创建的模块中编写代码,不能写在Sheet的代码中,必须是模块。

此函数可以像 sum、average 和 if 一样作为常规函数调用。在另一个 sheet 上创建一个包含您所有属性的唯一列表。 A 列中的属性,然后在 B 列中可以调用函数。假设第 1 行用于标题,写下以下内容并复制下来。

=ConcatIF(A2,properties,problems)

注意!!!!这段代码很快就会失控。它需要进行(属性数量)x(property/problem 对数量)比较,所以如果这个数字很大,它可能会减慢你的 sheet.

可能有更快的方法,但这是我的想法。