【问题标题】:Excel: Formula to combine potentially incomplete address components into an address string with appropriate separatorsExcel:将可能不完整的地址组件组合成带有适当分隔符的地址字符串的公式
【发布时间】:2020-08-17 21:02:18
【问题描述】:

我需要按街道、城市、州和邮政编码获取美国地址数据,并按以下格式输出地址:

1502 Bruce Rd, Oreland, PA 19075

没有任何多余的空格。

地址的任何组成部分都可能丢失,因此四个元素中的每一个都存在或不存在,总共有 4 个! = 具有或不具有四个元素中的每一个的 24 种排列。排除它们都丢失的情况,剩下 23 个排列需要处理。

似乎有很多关于拆分地址的问题,但没有关于将它们重新组合在一起的问题,特别是当您需要根据后面的内容包含或排除间距时。处理这个问题的最佳方法是什么?易于扩展的方式的奖励积分(例如,如果以后我们必须在未来某个时间在街道和城市之间包含一个单位字段,我不会感到惊讶)。

【问题讨论】:

    标签: excel excel-formula


    【解决方案1】:

    在写这个问题时,我想出了几个解决方案,其中 A、B、C 和 D 列分别是街道、城市、州和邮政编码。

    首先是这个:

    =TRIM(
        IF(A1="", "", A1 & IF(B1&C1&D1="", "", ", ")) &
        IF(B1="", "", B1 & IF(   C1&D1="", "", ", ")) &
        IF(C1="", "", C1 & IF(      D1="", "", " " )) &
        IF(D1="", "", D1)
    )
    

    其工作原理如下:

    1. 查看元素是否存在,如果存在,则包含它。
    2. 如果该元素存在,请查看其后是否存在任何内容,如果存在,则添加其后的分隔符。 (这是可行的,因为间隔似乎是由间隔之前决定的。)
    3. 整个内容都包含在 TRIM 中,以消除不必要的用户输入空格。

    为了检查元素之后是否存在任何内容,我连接了以下字段并检查该连接是否为空白字符串。

    由于这里使用了串联,我觉得使用TEXTJOIN可能会更容易,于是想到了这个:

    =TEXTJOIN(" ", TRUE, TEXTJOIN(", ", TRUE, TRIM(A1), TRIM(B1), TRIM(C1)), TRIM(D1))
    

    其工作原理如下:

    1. 内部 TEXTJOIN 将前三个元素(街道、城市和州)与逗号 + 空格的常用分隔符组合在一起。
    2. 完成后,外部TEXTJOIN 将结果与邮政编码结合起来,并使用空格作为分隔符。
    3. TRIM 再次使用如上。

    这些似乎涵盖了所有 23 种情况,如果需要添加其他字段,扩展起来并不难,尽管我绝对愿意接受您可能拥有的任何更好的解决方案。

    【讨论】:

      猜你喜欢
      • 2019-11-28
      • 1970-01-01
      • 1970-01-01
      • 2020-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-24
      相关资源
      最近更新 更多