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

问题描述 投票:-1回答:5

我收到了大量数据(并且无法返回并要求他们以更有用的方式提供数据)。它包含同一单元格中的多个数字,以分号分隔。

  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的数字,任何可以显示的东西。

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

有没有人有任何想法?这完全困扰了我。

excel excel-2013
5个回答
1
投票

基于此answer,如果您的数字列表包含的数字小于B2,您可以在单元格TRUE中使用以下数组公式(不要忘记按Ctrl + Shift + Enter!)返回FALSE94

 =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

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


1
投票

您可以为此创建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,则返回TRUE,否则返回FALSE


0
投票

一种方法是使用PowerQuery(假设您是2013或更高版本)。为此,请选择数据,转到数据>从表/范围。 Power Query窗口将打开。转到“变换”>“拆分列”>“按分隔符”。您可以通过单击“格式”>“修剪”来修剪结果以删除空格。


0
投票

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

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

然后在A列写入= IF(C1> 94,“是”,“否”)。然后按A列过滤。


0
投票

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

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

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

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

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.