我有一个 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)
例如:
如您所见,这些值以用空格隔开字符串,就像输入一样。