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

Excel 2013-单元格中的多个数字作为文本字符串,需要确定是否有小于特定值的数字,excel,excel-2013,Excel,Excel 2013,我得到了大量的数据,不能回去要求他们以更有用的方式提供。它在同一单元格中包含多个数字,用分号分隔 A +-------------------------+ 1|Sats | +-------------------------+ 2|92; 89; 94; 99; 100 | +-------------------------+ 3|95; 98; 96 | +---------------------

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

  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的数字。只是一个是/否,幸运的是我不需要比这更大的分析

或者,列出每个单元格中的最低数字。如果有一个低于94的数字,任何可以显示的东西

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


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

一种方法是假设您是2013年或更高版本的用户,使用PowerQuery。要执行此操作,请选择数据,转到数据>表格/范围。电源查询窗口将打开。转到变换>拆分列>按分隔符。您可以通过单击“格式”>“修剪”来修剪结果以删除空格。

将此列放入C,然后选择此列,使用“数据”>“文本到列”,并用分号拆分,这将拆分为D、E、F

在这之后,在B列write=MINC1:Z1,或者您可以放置更多的大单元号


然后在列write=IFC1>94,是,否。然后按列筛选。

您可以为此创建一个自定义项

在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,它将返回TRUE,否则它将返回FALSE

基于此,您可以使用下面的数组公式不要忘记Ctrl+Shift+Enter!在单元格B2中,如果数字列表中包含的数字小于94,则返回TRUE或FALSE:


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

我很确定您在2013年就有了FILTERXML函数

您可以使用它拆分字符串,然后在数组公式中测试它:

由于这是一个数组公式,您需要在按住ctrl+shift键的同时按enter键来确认它。如果操作正确,Excel将在公式栏中观察到的公式周围放置大括号{…}


你试过什么吗?文本到列?我应该说,如果可能的话,我想避免文本到列-我没有说清楚,每个单元格中的读数数量是无限的,这意味着我不能只创建一些列,我不知道要创建多少列。可能超过100列。1列的数量无关紧要2如果不是TTC,您将需要VBA。此外,我正试图在此基础上找出一些东西:IFLEFT[@Stat],SEARCH;,[@Stat]-1,Y然后使用LENLEFT[@Stat],搜索;,[@Stat]-1,用MID选择下一个数字,然后在下一个数字中重复这个数字,以此类推。。。但我不知道这是否适用于无限的数字字符串。我将尝试找出一种VBA方法。也许最后会问另一个问题,但我会尽我所能自己解决。谢谢。我不希望拆分成多个列,因为我不知道需要多少列,在同样的情况下也需要几十列。我使用的是2013,但没有PowerQuery,抱歉。@Rollway它可以从Microsoft免费下载。但是需要管理员权限,如果在工作计算机上我没有管理员权限,你可能没有。我要跟他们谈谈,看看他们的立场是什么。这正是我的目标!虽然我也将尝试学习VBA分割的东西,因为我认为这将在将来非常有用。它工作得很好。非常感谢你。而且,我没有替换空间,而是切换了;到
 =SUM(--(1*TRIM(MID(SUBSTITUTE(A2,";",REPT(" ",99)),(ROW(OFFSET($A$1,,,LEN(A2)-LEN(SUBSTITUTE(A2,";",""))+1))-1)*99+((ROW(OFFSET($A$1,,,LEN(A2)-LEN(SUBSTITUTE(A2,";",""))+1)))=1),99))<94))>0
=OR(FILTERXML("<t><s>"&SUBSTITUTE(A2,";","</s><s>")&"</s></t>","//s")<94)