Excel 2013 - 单元格中的多个数字作为文本字符串,需要识别是否小于某个值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Excel 2013 - 单元格中的多个数字作为文本字符串,需要识别是否小于某个值相关的知识,希望对你有一定的参考价值。
我收到了大量数据(并且无法返回并要求他们以更有用的方式提供数据)。它包含同一单元格中的多个数字,以分号分隔。
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的数字,任何可以显示的东西。
不幸的是,每个单元格中不同读数的数量是无限的 - 否则,我会有嵌套公式检查第一,第二,第三等条目。
有没有人有任何想法?这完全困扰了我。
基于此answer,如果您的数字列表包含的数字小于B2
,您可以在单元格TRUE
中使用以下数组公式(不要忘记按Ctrl + Shift + Enter!)返回FALSE
或94
:
=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;...
您可以为此创建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
一种方法是使用PowerQuery(假设您是2013或更高版本)。为此,请选择数据,转到数据>从表/范围。 Power Query窗口将打开。转到“变换”>“拆分列”>“按分隔符”。您可以通过单击“格式”>“修剪”来修剪结果以删除空格。
将此列放入C,然后选择此列,使用数据 - >文本到列,并按分号拆分,这将拆分为D,E,F ...
之后,在B列写入= MIN(C1:Z1),或者您可以放置更大的单元格数。
然后在A列写入= IF(C1> 94,“是”,“否”)。然后按A列过滤。
我很确定你在2013年有FILTERXML
功能。
您可以使用它来拆分字符串,然后在数组公式中测试它:
=OR(FILTERXML("<t><s>"&SUBSTITUTE(A2,";","</s><s>")&"</s></t>","//s")<94)
由于这是一个数组公式,你需要在按下enter键的同时按住ctrl + shift来“确认”它。如果您正确执行此操作,Excel将在公式栏中观察到的公式周围放置大括号{...}
以上是关于Excel 2013 - 单元格中的多个数字作为文本字符串,需要识别是否小于某个值的主要内容,如果未能解决你的问题,请参考以下文章
求助EXCEL函数公式 将多列单元格中的数字合并成一组新数据
使用excel vba将特定文本行保留在单元格中以获取特定起始字母