Excel公式将地址与名称分开(=左(A1,查找中间人等))

Excel公式将地址与名称分开(=左(A1,查找中间人等)),excel,find,street-address,string-length,Excel,Find,Street Address,String Length,这个公式适用于我的一些单元格,而不适用于其他单元格。我检查了格式是否不同,但什么也找不到 例如,我有 显示“戴尔电脑12150 sandy dr portland或97229”的单元格 我想要的只是“戴尔电脑”本身 我试过几件事,对mew来说最明显的是: =LEFT(A1,FIND({1,2,3,4,5,6,7,8,9,0},A1,1)-2) 这对某些人有效,但对其他人无效(例如,对于某些人,如果地址中有两个1,则它会给我“Dell Computers 1”,将第二个1作为值) 可能是个新问题

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

例如,我有

显示“戴尔电脑12150 sandy dr portland或97229”的单元格

我想要的只是“戴尔电脑”本身

我试过几件事,对mew来说最明显的是:

=LEFT(A1,FIND({1,2,3,4,5,6,7,8,9,0},A1,1)-2)
这对某些人有效,但对其他人无效(例如,对于某些人,如果地址中有两个1,则它会给我“Dell Computers 1”,将第二个1作为值)

可能是个新问题,但我在做什么?

使用并将单元格值设置为

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

还有,一定要看看这个旧的。我还没有完全理解这个公式是如何工作的;但是这个公式

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

  • 戴尔电脑12150或97229
  • 戴尔电脑250 sandy dr portland或97229
  • 戴尔电脑sandy dr portland或97229

示例
“Dell Computers 12150 sandy dr portland或97229”
和公式
=LEFT(A1,FIND({1,2,3,4,5,6,7,8,9,0},A1,1)-2)
在我的pc中产生完美的结果,即
Dell Computers
。我也尝试过其他组合,结果都很好,也可以尝试将数组更改为{2,1,3,4…}-问题是它从2开始,最初它会返回Dell computers 1-即使我希望它只找到它遇到的第一个数字,它会先搜索2,然后搜索1,然后搜索3。我试图避免对所有10位数字都进行min(find…)等运算。有效的方法是
=left(A1,min(IFERROR)(find(1,A1,1),10000),IFERROR(find(2,A1,1),10000)……但必须有一种更专业的方法来做到这一点。它本质上是寻找每个单独的数字,取最小的长度值,如果该数字不存在,则为其分配10k(因此它将不是最小值)对于这个简单的任务有点多。你可以使用自定义函数吗?还是必须是一个公式?在这种情况下,因为我正在向一个我不希望处于舒适区的人展示它,我正在寻找一个公式。但是如果你有一个自定义函数,我很想看一看。很好,我会把它保存在我的“武库”中供将来使用。我正在发布相同的链接…如果未找到seach数组
{1,2,3,…}
中的一个或多个数字,则附加的“1234567890”可防止
MIN()
函数引发错误。如果在正在搜索的字符串中找到所有数字,则
MIN()
可以完成查找最早位置的工作。