Excel:如何将特定单元格数据(邮政编码)复制到新列中

Excel:如何将特定单元格数据(邮政编码)复制到新列中,excel,Excel,我有两列单元格,它们的地址格式不规则 我需要: 1) 只需将要复制到新列中的邮政编码 2) 不包含邮政编码的行将突出显示或为空,以便我可以轻松确定缺少哪些邮政编码 这似乎很简单,但我不知道如何让Excel只查找5个连续数字的所有实例。目前,它们被格式化为文本,以便显示零。非常感谢您的帮助 普通Excel中没有正则表达式。要做到这一点,您必须进入VBA。然而,对于您的情况,有一个简单的模式:注意邮政编码在最后一个空格之后,并且总是5位数长?接下来的挑战是找到最后一个空格的索引并提取后面的5个

我有两列单元格,它们的地址格式不规则

我需要:

1) 只需将要复制到新列中的邮政编码

2) 不包含邮政编码的行将突出显示或为空,以便我可以轻松确定缺少哪些邮政编码

这似乎很简单,但我不知道如何让Excel只查找5个连续数字的所有实例。目前,它们被格式化为文本,以便显示零。非常感谢您的帮助


普通Excel中没有正则表达式。要做到这一点,您必须进入VBA。然而,对于您的情况,有一个简单的模式:注意邮政编码在最后一个空格之后,并且总是5位数长?接下来的挑战是找到最后一个空格的索引并提取后面的5个字符。如果你把它们分成两个公式,会更清楚

// C3 (index of last space character):
=FIND("|",SUBSTITUTE(B3," ","|",LEN(B3)-LEN(SUBSTITUTE(B3," ",""))))

// D3, the 5 characters after that.
// Return an empty string if the address doesn't match the pattern
=IFERROR(MID(B3,C3+1,5),"")

佐夫·迪诺写作的另一种方法是将其稍作突破,如下所示:

  • 在单元格C3中,输入您在公式栏中看到的公式
  • 将其向下拖动到行集合上,并在1列上拖动(这样它也会在B列上运行)
  • 在列中使用以下公式:
    =IF(和(C3=”,D3=”,“”,IF(C3=”,D3,C3))
    并将其向下拖动
  • 这将解释你所展示的所有可能的情况,而不是错误(除非出现其他模式)

    然后,您可以使用条件格式突出显示没有邮政编码的行,如图所示:


    这是
    正则表达式的完美任务C3中有一个很好的公式需要知道——首先取一个单元格的总长度。如果将一个字符的所有实例(如“”)替换为零,则取单元格的长度。找出这些数字之间的差异。这会告诉您该字符出现的次数。然后,使用“替换”将该字符的第n个实例替换为通常不使用的任何字符(例如“|”)。现在,您可以使用FIND(或SEARCH)确定“|”在单元格中的位置。在这种情况下,您可以使用D3中的公式,拾取以“I”开头的5个字符。很好的公式和方法,但如果按原样应用,将有一些严重的错误