这可能是一个愚蠢的问题,如果是,我道歉。我有一张excel表:
列a ...........列b
1 property1 .......问题x
2 property2 .......有问题
3 property3 ....... problemz
4 property1 ......问题a
我想知道我是否可以使用sumif(或任何类似的公式)在一个单元格中添加问题,引用某个属性。对于前: 我会
列a ...........列b
1 property1 .......问题x问题
问题是我无法弄清楚从哪里开始。我尝试使用sumif,但是我收到了一个错误。可能是因为我试图添加字符串。我试图将一个vlookup与sumif混合,但那也没有产生任何东西。我卡在这里。谢谢你的帮助!
答案 0 :(得分:0)
我不是百分百肯定,但我认为您可能需要使用VBA。您可以尝试创建以下自定义函数:
在工作表中创建命名范围属性和问题。
单击ALT + F11以打开VBA编辑器。
按Insert - >模块
编写代码
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。在另一个工作表上创建所有属性的唯一列表。列A中的属性,然后在列B中,您可以调用该过程。假设第1行用于标题,写下以下内容并向下复制。
=ConcatIF(A2,properties,problems)
请注意!!!!这段代码很快就会失控。它需要做(属性数量)x(属性/问题对的数量)比较,所以如果这个数字很大,它可能会减慢你的工作表。
可能有更快的方法,但这是我的头脑。