仅在找到单元格中的特定字符串时显示结果,并且仅当最后一个字符是字母

时间:2015-05-15 15:15:01

标签: excel excel-formula

目前我正在使用电子表格,我必须收集英国商务总监的地址。一些董事有多个地址。英国邮政编码由两段组成,我必须忽略第一段邮政编码以W1,SW1,EC1,EC2,EC3和& EC4并以字符而非数字结尾,因为它们通常是工业地址。例如,请检查以下地址,其中地址以W1,SW1,EC1,EC2,EC3和& EC4以字母结尾,我不得不忽略收集这些内容。

3RD FLOOR 207 REGENT STREET, LONDON, W1B 3HH
42, CHARTERHOUSE SQUARE, LONDON EC1, EC1M 6EU
5, WESTMINSTER GARDENS, LONDON, MARSHAM STREET, SW1P 4JA
160, QUEEN VICTORIA STREET, LONDON, EC4V 4QQ
THE BROADGATE TOWER 20, PRIMROSE STREET, LONDON, EC2A 2RS
BAKERS' HALL 9, HARP LANE, LONDON, EC3R 6DP

另请注意,W11,W12 W13等的邮政编码不受禁止,同样适用于SW1,EC1,EC2,EC3& EC4。

现在我们正在处理批量数据,收集地址时无法注意到邮政编码。因此,我尝试使用各种公式的组合,在粘贴地址后立即在单独的列中突出显示这些提到的邮政编码的第一部分。通过这种方式,我可以在粘贴地址后立即看到禁止的邮政编码。虽然我没有成功破解它,但我接近它。我只是分享我尝试的东西,并寻找你们的紧凑解决方案。

我首先创建了一个单独的列E,当我将地址粘贴到D列时,它将显示邮政编码的第一段。这是我使用的代码:

=TRIM(LEFT(RIGHT(" "&SUBSTITUTE(TRIM(D2)," ",REPT(" ",60)),120),60))

接下来,我试图仅显示以W1,SW1,EC1,EC2,EC3和& EC4并以字母结尾。所以我创建了另一列F并为" SW1"

创建公式
=IF(NOT(ISNUMBER(VALUE(RIGHT(E2,1)))), IF(ISNUMBER(SEARCH("SW1",E2)), LEFT(E2,3), ""),"")

所以,如果我必须检查W1,EC1,EC2,EC3& EC4,我必须创建5个具有相同公式的列,只需要更改搜索功能的值。这导致我增加了6个列,我想要一个紧凑的公式来节省空间,因为我通常将浏览器和execl分开,这就是为什么我可以在电子表格上复制和粘贴数据而不会最小化电子表格的原因。这为我节省了很多时间。但是创建六个列将使我的工作更耗时,因为我必须检查所有六列的邮政编码。

问题 - 1:

我想问一下,有没有办法制作一个紧凑的公式,只在一个列中显示我想要的结果?

问题 - 2:

我们还必须忽略包含单词" floor"," house" &安培; "机场&#34 ;.我已尝试以下公式进行单一查询:

=IF(ISNUMBER(SEARCH("Floor",D2)), "Floor", "")

是否有可能梳理所有必需的公式并将结果显示在一列中?

有关问题的更新 - 1:

我尝试使用其他公式组合来显示所需的结果。但想出的只显示那些以W1,SW1,EC1,EC2,EC3和& EC4但不能修改它以限制那些最后一个字符是数字的结果。这是代码:

=IF(ISNUMBER(FIND("W1",(LEFT(E2,2)),1))=TRUE,LEFT(E2,2)&IF(NOT(ISNUMBER(VALUE(RIGHT(E2,1)))), RIGHT(E2,1),""),IF(ISNUMBER(FIND("SW1",E2,1))=TRUE,LEFT(E2,3)&IF(NOT(ISNUMBER(VALUE(RIGHT(E2,1)))), RIGHT(E2,1),""),IF(ISNUMBER(FIND("EC1",E2,1))=TRUE,LEFT(E2,3)&IF(NOT(ISNUMBER(VALUE(RIGHT(E2,1)))), RIGHT(E2,1),""),IF(ISNUMBER(FIND("EC2",E2,1))=TRUE,LEFT(E2,3)&IF(NOT(ISNUMBER(VALUE(RIGHT(E2,1)))), RIGHT(E2,1),""),IF(ISNUMBER(FIND("EC3",E2,1))=TRUE,LEFT(E2,3)&IF(NOT(ISNUMBER(VALUE(RIGHT(E2,1)))), RIGHT(E2,1),""),IF(ISNUMBER(FIND("EC4",E2,1))=TRUE,LEFT(E2,3)&IF(NOT(ISNUMBER(VALUE(RIGHT(E2,1)))), RIGHT(E2,1),""),""))))))

2 个答案:

答案 0 :(得分:0)

E栏中的公式可以将最后一个字符不是数字与邮政编码第一部分的解析结合起来,如下所示。

=IF(ISERROR(--RIGHT(A2)), TRIM(LEFT(TRIM(RIGHT(A2, 8)), 4)), "")

这使得解析依赖于英国邮政编码为7或8个字符宽,第一部分为3或4个字符。根据长度的不同,“徘徊”空间要么被拾取并修剪掉,要么根本不被拾取。

列Y列出了要忽略的邮政编码的前缀,列Z(在任何工作表中)专门用于交叉引用的例外列表,如下所示:

Postal Code Exceptions Cross-Reference table

请注意,“忽略”列表和“例外”列表中的每个条目都带有通配符星号作为后缀。这对于处理交错的比较长度是必要的。

用于A2:E999的条件格式规则的公式为

=AND(SUMPRODUCT(COUNTIF($E2, $Y$2:$Y$7)), NOT(SUMPRODUCT(COUNTIF($C2, $Z$2:$Z$4))))

对于任何应该被忽略但不在例外列表中的邮件,这个结果为TRUE。

忽略和异常的交叉引用表可能会从成为命名范围中受益,以便于参考。您可以为适用于:使用动态范围定义,例如:

=Sheet1!$Y$2:INDEX(Sheet1!$Y:$Y, MATCH("zzz", Sheet1!$Y:$Y))
=Sheet1!$Z$2:INDEX(Sheet1!$Z:$Z, MATCH("zzz", Sheet1!$Z:$Z))

答案 1 :(得分:0)

这是一个公式,用于告诉您最后一个逗号后的第一个单词是否以数字结尾。

=ISNUMBER(NUMBERVALUE(RIGHT(LEFT(TRIM(RIGHT(SUBSTITUTE(B1,",",REPT(" ",LEN(B1))),LEN(B1))),SEARCH(" ",TRIM(RIGHT(SUBSTITUTE(B1,",",REPT(" ",LEN(B1))),LEN(B1))))-1))))