我经常要负责从其他来源提取信息,并接收没有大小单位的信息。大小或数量在说明中,并希望能够使用以下逻辑编写一个excel公式:
如果单元格包含胶囊,片剂,液体等,则使该单元格也相等胶囊,片剂,液体等+之前的数字
一些示例项目:
PhoneEntity
如果下面的说明中有说明,请在下面的栏中输入“平板电脑”或“计数”。
我尝试使用if和then语句,但是不知道如何将它们组合起来以创建'or'和'and'
期望上面示例中的列如下所示:
phones
答案 0 :(得分:1)
如果值在A列中,则公式将如下所示:
=+IF(ISERROR(VALUE(RIGHT(LEFT(A3,SEARCH(IF(ISERROR(SEARCH("Tablets",A3)),IF(ISERROR(SEARCH("Capsules",A3)),IF(ISERROR(SEARCH("Count",A3)),"","Count"),"Capsules"),"Tablets"),$A3)-1),4))),0,VALUE(RIGHT(LEFT(A3,SEARCH(IF(ISERROR(SEARCH("Tablets",A3)),IF(ISERROR(SEARCH("Capsules",A3)),IF(ISERROR(SEARCH("Count",A3)),"","Count"),"Capsules"),"Tablets"),$A3)-1),4)))&" "&IF(ISERROR(SEARCH("Tablets",A3)),IF(ISERROR(SEARCH("Capsules",A3)),IF(ISERROR(SEARCH("Count",A3)),"","Count"),"Capsules"),"Tablets")
由于公式很长,请参见下面的两个不同的单元格,第一个搜索我们要查找的项目(片剂,胶囊或计数)并返回它,第二个搜索上一个数字:
+IF(ISERROR(SEARCH("Tablets",A4)),IF(ISERROR(SEARCH("Capsules",A4)),IF(ISERROR(SEARCH("Count",A4)),"","Count"),"Capsules"),"Tablets")
+IF(ISERROR(VALUE(RIGHT(LEFT(A4,SEARCH(B4,$A4)-1),4))),0,VALUE(RIGHT(LEFT(A4,SEARCH(B4,$A4)-1),4)))
该公式对于数字的获取有一个限制,并且限制为9999,这比该公式对结果进行中继更重要。同样,对于数字1到9,公式可能会返回错误#value。如果需要,可以通过更改第二个公式来解决。
答案 1 :(得分:0)
我会做这样的事情:
IF(-test-, -true-, -false-)
...FIND("Tablet",A2)...
,但是这里的问题是,如果找不到“ Tablet”,它将引发错误,因此我将对此进行错误校验,例如...IFERROR(Find("Tablet",A2), FALSE)...
,如果没有“ Tablet”,则返回FALSE在单元格A2中找到。...OR( IFERROR(Find("Tablet",A2), FALSE), IFERROR(Find("Count",A2), FALSE) )
一起使用,以便将结果或在一起(如果找到“ Tablet”或“ Count” ,此函数将返回一个数字(由于它是一个数字,因此将其读取为TRUE!)""
这时,我将拥有一个完整的方程式,该方程式将检查“ Count”或“ Tablet”并吐出我的-true-方程式中的所有内容。否则,该单元格将保持空白:
IF(OR( IFERROR(Find("Tablet",A2), FALSE), IFERROR(Find("Count",A2), FALSE) ), "Count/Tablet", "")
答案 2 :(得分:0)
这是使用RegExp进行了经过严格测试的UDF:
Function Amounts(txt)
Dim re As Object, allMatches, m, rv, sep
Set re = CreateObject("VBScript.RegExp")
re.Pattern = "(\d+\s?(tablets|tablet|count|liquid))"
re.ignorecase = True
re.MultiLine = True
re.Global = True
Set allMatches = re.Execute(txt)
For Each m In allMatches
rv = rv & sep & m
sep = ","
Next m
Amounts = IIf(rv <> "", rv, "(none)")
End Function
用法:
=Amounts(A2)