【问题标题】:Excel Formula to split address from name (=LEFT(A1,Find an Interager etc..))从名称中拆分地址的 Excel 公式 (=LEFT(A1,Find an Interager etc..))
【发布时间】:2013-12-09 17:38:49
【问题描述】:

这个公式适用于我的一些单元格,而不适用于其他单元格,我检查了格式是否不同,但什么也没找到。

我有一个例子

一个显示“Dell Computers 12150 sandy dr portland or 97229”的单元格

我想要的只是获得“戴尔计算机”本身。

我已经尝试了一些方法,对喵喵来说最明显的是:

=LEFT(A1,FIND({1,2,3,4,5,6,7,8,9,0},A1,1)-2)

这对某些人有效,对另一些人则无效(例如,如果地址中有两个 1,它会给我“Dell Computers 1”,将第二个 1 作为值)

也许是一个新手问题,但我在做什么?

【问题讨论】:

  • 示例"Dell Computers 12150 sandy dr portland or 97229" 和公式=LEFT(A1,FIND({1,2,3,4,5,6,7,8,9,0},A1,1)-2) 在我的电脑中产生了完美的结果,即Dell Computers。我也尝试了其他组合,结果也很好
  • 尝试将阵列更改为 {2,1,3,4...} - 问题是它最初是从 2 开始的,它会返回戴尔计算机 1 - 即使我希望它这样做只需找到它出现的第一个数字,它会先搜索 2,然后是 1,然后是 3。我试图避免必须为所有 10 位数字做一个 min(find.... etc。跨度>
  • 有效的是=left(A1,MIN(IFERROR(FIND(1,A1,1),10000),IFERROR(FIND(2,A1,1),10000)......,但必须有更专业的方法来做到这一点。它本质上是在寻找每个单独的数字,取最小的长度值,如果数字不存在,为这个简单的任务分配一个 10k(所以它不会是最小值)。
  • 您可以使用自定义函数还是必须是公式?
  • 在这种情况下,因为我将它展示给我不希望处于那个舒适区的人我正在寻找一个公式。但如果您有自定义功能,我很乐意看看。

标签: excel find street-address string-length


【解决方案1】:

使用this function并将单元格值设置为

=udfRegEx(A1,"^\D+")

【讨论】:

  • 完美,我会把它保存在我的“武器库”中以备将来使用。
【解决方案2】:

另外,请看看这个旧的thread。我还没有完全解析这个公式是如何工作的。但是这个公式

=LEFT(A2, MIN(FIND({1,2,3,4,5,6,7,8,9,0}, A2 & "1234567890"))-1)

适用于

  • Dell Computers 12150 sandy dr portland 或 97229
  • Dell Computers 250 sandy dr portland 或 97229
  • Dell Computers sandy dr portland 或 97229

【讨论】:

  • 我正在发布相同的链接...附加的“1234567890”可防止MIN() 函数在搜索数组{1,2,3,...} 中的一个或多个数字时抛出错误没找到。如果在要搜索的字符串中找到所有数字,则Min() 可以找到最早定位的位置。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-08-05
  • 2013-11-13
  • 2013-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多