默认Excel:查找匹配值并在单行中提及

默认Excel:查找匹配值并在单行中提及,excel,excel-formula,Excel,Excel Formula,我有数据,任务是用公式把数据排成一行。例如: 请注意:此数据需要在一行中我假设名称始终为一个单词。所以单元格中的第一个字是名字,最后一个字是收入,名字和收入之间的所有东西都是城市 选项1: 好的,如果您可以将文本拆分为三个不同的列,即名称、城市和收入,然后使用这些列来获得所需的结果,这会更好 要从单元格中获取名称,请在单元格B2中输入以下公式 =LEFT(A2,(FIND(" ",A2,1)-1)) 然后要获得城市请在单元格C2中使用以下公式 =TRIM(MID(A2,FIND(" ",A

我有数据,任务是用公式把数据排成一行。例如:


请注意:此数据需要在一行中

我假设名称始终为一个单词。所以单元格中的第一个字是名字,最后一个字是收入,名字和收入之间的所有东西都是城市


选项1: 好的,如果您可以将文本拆分为三个不同的列,即
名称
城市
收入
,然后使用这些列来获得所需的结果,这会更好

要从单元格中获取名称,请在单元格B2中输入以下公式

=LEFT(A2,(FIND(" ",A2,1)-1))
然后要获得城市请在
单元格C2中使用以下公式

=TRIM(MID(A2,FIND(" ",A2,1)+1,FIND("|",SUBSTITUTE(A2," ","|",LEN(A2)-LEN(SUBSTITUTE(A2," ",""))))-FIND(" ",A2,1)-1))
对于收入,在
单元格D2
中输入公式

=TRIM(RIGHT(SUBSTITUTE(A2," ",REPT(" ",LEN(A2))),LEN(A2)))
现在,在单元格B12中输入以下公式以获得第一次查询的结果,即

查找所有居住在纽约或德里的人

这是一个数组公式,请按Ctrl+Shift+Enter键提交它。根据需要拖动/复制

在单元格B14中输入以下公式进行第二次查询,即

查找所有居住在德里且收入超过1200英镑的人

这也是一个数组公式。根据需要拖动/复制。请参阅图片以获取参考


选项2: 如果不希望在不同的列中打断文本,则可以使用以下公式获得所需的结果。这些公式很难看,但会给你你想要的

在单元格B12中输入以下公式

=IFERROR(INDEX(LEFT($A$2:$A$9,(FIND(" ",$A$2:$A$9,1)-1)), SMALL(IF((TRIM(MID($A$2:$A$9,FIND(" ",$A$2:$A$9,1)+1,FIND("|",SUBSTITUTE($A$2:$A$9," ","|",LEN($A$2:$A$9)-LEN(SUBSTITUTE($A$2:$A$9," ",""))))-FIND(" ",$A$2:$A$9,1)-1))="New York")+(TRIM(MID($A$2:$A$9,FIND(" ",$A$2:$A$9,1)+1,FIND("|",SUBSTITUTE($A$2:$A$9," ","|",LEN($A$2:$A$9)-LEN(SUBSTITUTE($A$2:$A$9," ",""))))-FIND(" ",$A$2:$A$9,1)-1))="Delhi"), ROW($A$2:$A$9)-1, ""), COLUMN(B$1)-COLUMN($A$1))),"")
然后在单元格B14中输入

=IFERROR(INDEX(LEFT($A$2:$A$9,(FIND(" ",$A$2:$A$9,1)-1)), SMALL(IF((TRIM(MID($A$2:$A$9,FIND(" ",$A$2:$A$9,1)+1,FIND("|",SUBSTITUTE($A$2:$A$9," ","|",LEN($A$2:$A$9)-LEN(SUBSTITUTE($A$2:$A$9," ",""))))-FIND(" ",$A$2:$A$9,1)-1))="Delhi")*(TRIM(RIGHT(SUBSTITUTE($A$2:$A$9," ",REPT(" ",LEN($A$2:$A$9))),LEN($A$2:$A$9)))*1>1200), ROW($A$2:$A$9)-1, ""), COLUMN(B$1)-COLUMN($A$1))),"")
以上两个公式都是数组公式,所以请按Ctrl+Shift+Enter。根据需要拖动/复制


您好,请阅读和,以了解如何正确提问,从而更好地获得积极和有用的答案的技巧。没有任何关于你的问题的详细信息,这里没有人能真正帮助你。如果你发布你已经尝试过的东西,这也会有所帮助。看来你只是让别人帮你做作业。您是否有一些您尝试实现这一目标的例子?欢迎访问。这不是一个免费的代码编写服务,但我们可以帮助您使用复杂的公式或您试图开发的代码。首先,采取行动。然后阅读的帮助主题,也谢谢你米格。你让我开心。天才的东西!!只是一个小小的疑问。您知道如何通过公式删除重复值吗?像上面的公式一样,我们如何引入一个公式来删除重复值?虽然我知道在这种情况下,它并不相关,只是出于好奇。我使用了这个函数=IF(COUNTIF($B$12:B12,B12)>1,“,B20),但它显示了重复值的空间。@Warrior92-我想我已经回答了你最初的问题,如果它解决了你的问题,我希望你将我的解决方案标记为答案。就你的新要求而言,用一些相关的样本数据提出一个新问题是公平的。
=IFERROR(INDEX($B$2:$B$9, SMALL(IF(($C$2:$C$9="Delhi")*($D$2:$D$9>1200), ROW($B$2:$B$9)-1, ""), COLUMN(B$1)-COLUMN($A$1))),"")
=IFERROR(INDEX(LEFT($A$2:$A$9,(FIND(" ",$A$2:$A$9,1)-1)), SMALL(IF((TRIM(MID($A$2:$A$9,FIND(" ",$A$2:$A$9,1)+1,FIND("|",SUBSTITUTE($A$2:$A$9," ","|",LEN($A$2:$A$9)-LEN(SUBSTITUTE($A$2:$A$9," ",""))))-FIND(" ",$A$2:$A$9,1)-1))="New York")+(TRIM(MID($A$2:$A$9,FIND(" ",$A$2:$A$9,1)+1,FIND("|",SUBSTITUTE($A$2:$A$9," ","|",LEN($A$2:$A$9)-LEN(SUBSTITUTE($A$2:$A$9," ",""))))-FIND(" ",$A$2:$A$9,1)-1))="Delhi"), ROW($A$2:$A$9)-1, ""), COLUMN(B$1)-COLUMN($A$1))),"")
=IFERROR(INDEX(LEFT($A$2:$A$9,(FIND(" ",$A$2:$A$9,1)-1)), SMALL(IF((TRIM(MID($A$2:$A$9,FIND(" ",$A$2:$A$9,1)+1,FIND("|",SUBSTITUTE($A$2:$A$9," ","|",LEN($A$2:$A$9)-LEN(SUBSTITUTE($A$2:$A$9," ",""))))-FIND(" ",$A$2:$A$9,1)-1))="Delhi")*(TRIM(RIGHT(SUBSTITUTE($A$2:$A$9," ",REPT(" ",LEN($A$2:$A$9))),LEN($A$2:$A$9)))*1>1200), ROW($A$2:$A$9)-1, ""), COLUMN(B$1)-COLUMN($A$1))),"")