从具有多个值的列中提取信息

从具有多个值的列中提取信息

我在 Excel 中遇到了一个难题,很难解决。我的问题是,我试图编写一个公式,以便将一个数字(比如说 3040)连接到包含信息“3000-3091,3093-3189,3192”的单元格。

如您所见,3040 介于 3000-3091 之间,但我发现没有公式可以真正连接这两列(给出“True”,表示数字 3040 在该单元格中)。你们对我如何解决这个问题有什么见解吗?

我不太了解 VBA,但你们认为是否可以编写一个宏来读取值为“3000-3091,3093-3189,3192”的列?

使用真实值作为 Vlookup 函数中的最后一个参数不起作用 :/

提前感谢您的回答!

答案1

Public Function DoesValueInRange(val As Long, ranges As String) As Boolean
Dim tmp, temp
tmp = Split(ranges, ",")
For Each temp In tmp
    If InStr(temp, "-") Then
        If val >= CLng(Split(temp, "-")(0)) And val <= CLng(Split(temp, "-")(1)) Then
            DoesValueInRange = True
            Exit Function
        End If
    Else
        If val = CLng(temp) Then
            DoesValueInRange = True
            Exit Function
        End If
    End If
Next
End Function

用法:

  1. 打开 VBA 编辑器 (Alt-F11)
  2. 创建新的通用模块(插入-模块)
  3. 将代码插入到新模块中
  4. 关闭 VBA 编辑器
  5. 在工作表上选择一些单元格
  6. fx
  7. 选择“用户定义函数”类别
  8. 选择DoesValueInRange功能
  9. 在参数字段中

    9.1. For Val- 要测试的值或包含要测试的值的单元格地址(例如,如果 A1 单元格值为 3040,则为值3040,或单元格地址)$A$1

    9.2. For Ranges- 包含范围列表的字符串或包含范围列表的单元格地址(例如,或如果 B1 单元格值为“3000-3091,3093-3189,3192”则为3000-3091,3093-3189,3192单元格地址)$B$1

  10. 按 OK。该函数将检查该值是否在某个范围内(或等于某个单个值)。

请注意-该函数不执行其参数正确性检查。

PS. 单元格地址不必是绝对的。

相关内容