与字符串一起使用?

时间:2015-06-16 22:12:12

标签: string excel vlookup

这可能是一个愚蠢的问题,如果是,我道歉。我有一张excel表:

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

1 property1 .......问题x

2 property2 .......有问题

3 property3 ....... problemz

4 property1 ......问题a

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

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

1 property1 .......问题x问题

问题是我无法弄清楚从哪里开始。我尝试使用sumif,但是我收到了一个错误。可能是因为我试图添加字符串。我试图将一个vlookup与sumif混合,但那也没有产生任何东西。我卡在这里。谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

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

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

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

  3. 按Insert - >模块

  4. 编写代码

  5. 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(属性/问题对的数量)比较,所以如果这个数字很大,它可能会减慢你的工作表。

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