提取特定数值范围内的值

提取特定数值范围内的值

我有一个 Excel 电子表格,其中有一列“AP”,其中每个单元格包含如下值

5358  161043   22344   8444   103145  69221044 

“5358 161043 22344 8444 103145 69221044”都是一个单元格,在本例中是 AP2。我知道这很乱,但我从别人那里继承了它,正在努力清理它。

我需要某种方法来提取 6623 到 12756 之间的数值范围内的值。我可以使用搜索和替换命令来删除此范围之外的所有值,或者使用将相关值复制到另一列的函数。

答案1

我编造了一些虚拟数据并将其放在工作表的 A 列中。在 B 列中,我使用了以下公式:

=IF(AND(A1>=$L$35,A1<=$L$36),"Yes","No")

这是一个简单的过滤器,对目标范围内的值返回“是”(我将它们放在单元格 L35 和 L36 中)。

在此处输入图片描述

接下来,选择这两列并打开过滤器。

在此处输入图片描述

现在,在“主页”选项卡上,转到“编辑”功能区并选择“查找和选择”。选择“转到特殊...”选项

选择“仅可见单元格”选项,然后按“确定”。

按复制或使用 CTRL-C。这样应该只会选择包含所需数据的行。

现在,如果您粘贴空白表,则只会粘贴与所需日期范围相对应的数据。注意:在我的示例中,我没有将第 1 行留空作为标题,因此当我应用过滤器时,最后只剩下一个“否”。您可以删除落后者,或者在开头留一个空白行,这样就不会发生这种情况。

答案2

首先在标准模块中输入以下用户定义函数:

Public Function GrabData(r As Range) As String
    Dim cel As Range, v As String, a, d As Double

    GrabData = ""

    For Each cel In r
        v = cel.Text
        arr = Split(v, " ")
            For Each a In arr
                If IsNumeric(a) Then
                    d = CDbl(a)
                    If d > 6622 And d < 12757 Then GrabData = GrabData & " " & a
                End If
            Next a
        Next cel
End Function

那么如果你有数据AP1通过AP3,选择另一个单元格并输入:

=GrabData(AP1:AP3)

例如:

在此处输入图片描述

如您所见,这些值以用空格隔开字符串,就像输入一样。

相关内容