Excel:检索范围内的文本。基于第二范围

时间:2018-01-31 16:12:12

标签: excel excel-formula array-formulas

我想确定一系列单元格是否包含多个字符串中的一个。 该系列字符串存储在第二个单元格范围内。

为了确定字符串是否在范围单元格中,我找到了几个地方的答案: (例如:https://exceljet.net/formula/cell-contains-one-of-many-things

除了上面的链接,我想做的是让forumla返回找到的字符串值,大概是使用Mid。在这种情况下,字符串值的长度始终为5个字符。

1 个答案:

答案 0 :(得分:0)

尝试这个小的用户定义函数:

Public Function CaptureSubStrings(r1 As Range, r2 As Range) As String
    Dim s As String, r As Range

    s = r1(1).Text
    For Each r In r2
        If InStr(1, s, r.Value) > 0 Then CaptureSubStrings = CaptureSubStrings & "," & r.Value
    Next r

    CaptureSubStrings = Mid(CaptureSubStrings, 2)
End Function

例如:

enter image description here

如果找到多个子字符串,则返回连接的子列表。

用户定义函数(UDF)非常易于安装和使用:

  1. ALT-F11调出VBE窗口
  2. ALT-I ALT-M打开了一个新模块
  3. 粘贴内容并关闭VBE窗口
  4. 如果保存工作簿,UDF将随之保存。 如果您在2003年之后使用的是Excel版本,则必须保存 该文件为.xlsm而不是.xlsx

    删除UDF:

    1. 按上述方式调出VBE窗口
    2. 清除代码
    3. 关闭VBE窗口
    4. 从Excel使用UDF:

      =CaptureSubString(A1,E$1:E$3)
      

      要了解有关宏的更多信息,请参阅:

      http://www.mvps.org/dmcritchie/excel/getstarted.htm

      http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

      有关UDF的详细信息,请参阅:

      http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx

      必须启用宏才能使其生效!