Excel 2013 - 单元格中的多个数字为文本字符串,需要识别是否有小于特定值的

Excel 2013 - Multiple numbers in cell as text string, need to identify if any are less than certain value

我已经获得了大量数据(并且不能返回并要求他们以更有用的方式提供)。它在同一个单元格中包含多个数字,以分号分隔。

  A
 +-------------------------+
1|Sats                     |
 +-------------------------+
2|92; 89; 94; 99; 100      |
 +-------------------------+
3|95; 98; 96               |
 +-------------------------+
4|99                       | 
 +-------------------------+
5|88; 95                   |
 +-------------------------+
6|99; 95; 98; 98; 100; 95  |
 +-------------------------+
7|94; 92; 91; 93           |
 +-------------------------+

不知何故,我需要确定一个单元格是否包含小于 94 的数字。只是一个 yes/no,幸运的是我不需要比这更复杂的分析。

或者,列出每个单元格中的最小数字。如果数字低于 94,可以显示任何内容。

不幸的是,每个单元格中不同读数的数量是无限的 - 否则,我将使用嵌套公式检查第一个、第二个、第三个等条目。

有人有什么想法吗?这完全难倒了我。

一种方法是使用 PowerQuery(假设您是 2013 年或之后的用户)。要执行此 select 您的数据,请转到“数据”>“来自 Table/Range”。 Power Query window 将打开。转到转换>拆分列>按分隔符。您可以 trim 通过单击格式>Trim.

删除空格的结果

将此列放入C,然后选择此列,使用Data->Text to columns,用分号分割,这样就分割成D, E, F...

之后,在B列写=MIN(C1:Z1),或者你可以输入更大的单元格数。

然后在A栏写=IF(C1>94, "YES","NO")。然后按 A 列筛选。

您可以为此创建一个 UDF。

在 VBA (Alt +F11)

中创建一个新模块

然后使用下面的代码:

Public Function ParseAndSum(source As String) As Integer
       Dim tmp() As String, i As Integer
       tmp = Split(source, ";")
       For i = LBound(tmp) To UBound(tmp)
       ParseAndSum = Val(tmp(i)) < 94
       Next i
End Function

在 B2 中使用公式:

=ParseAndSum(H19)<0

如果A2中的字符串中有小于94的值,它将return TRUE,否则它将return FALSE

基于这个answer,你可以使用下面的数组公式(不要忘记Ctrl+Shift +Enter!) in cell B2 to return a TRUE or FALSE if your list of numbers contains a number less than 94:

 =SUM(--(1*TRIM(MID(SUBSTITUTE(A2,";",REPT(" ",99)),(ROW(OFFSET($A,,,LEN(A2)-LEN(SUBSTITUTE(A2,";",""))+1))-1)*99+((ROW(OFFSET($A,,,LEN(A2)-LEN(SUBSTITUTE(A2,";",""))+1)))=1),99))<94))>0

然后您可以将其向下拖动到 B 列中,它应该可以工作,但是,您可能还需要替换分隔符之间的空格 ;,以便它是每个单元格中的一个连续列表,例如92;89;...

我很确定你在 2013 年有 FILTERXML 功能。

你可以用它来拆分字符串,然后在 array 公式中测试它:

=OR(FILTERXML("<t><s>"&SUBSTITUTE(A2,";","</s><s>")&"</s></t>","//s")<94)

因为这是一个数组公式,您需要 "confirm" 按住 ctrl + shift 并点击 输入。如果您正确执行此操作,Excel 将在公式周围放置大括号 {...},如在公式栏

中观察到的那样