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