繁体   English   中英

Excel公式 - 在单元格上方的行中首次出现部分字符串

[英]Excel formula - Get first occurrence of partial string in rows above cell

我在Excel 2013中有一张水果表。

在此输入图像描述

我想填写“类别”列,方法是从当前行搜索到顶部,直到第一次出现“::”,这是表中类别的关键字。

如果有某种方法来反转一个范围,我可以做一些像“= Match(”:: *“; $ A6:$ A $ 2)”来查找行。 但是,这是不可能的。

有谁知道如何使用公式实现这一目标?

使用您提供的样本数据,并假设您的数据已按样本中所示进行组织,您可以利用该组织并在单元格C2中使用此公式并复制:

=IF(LEFT(A2,2)="::","",IF(LEFT(A1,2)="::",MID(A1,4,LEN(A1)),C1))

在此输入图像描述

假设您的表位于A1中,请将其放在C3中:

=INDEX(A:A, AGGREGATE (14,6,ROW($A$1:A2)/(LEFT($A$1:A2,2)="::"),1))

并复制下来。

这是一种有点不同的方法。 我只是基本上回应你帖子的这一部分来证明这是可能的:

如果有某种方法来反转一个范围,我可以做一些像“= Match(”:: *“; $ A6:$ A $ 2)”来查找行。 但是,这是不可能的。

扭转范围是可能的,这很棘手。

正如你所指出的那样: $A6:$A$2不起作用,因为这相当于$A$2:$A6

但是,如果没有深入细节,这个数组公式将反转这个范围:

= INDEX($A$2:$A6,N(IF({1},MAX(ROW($A$2:$A6))-ROW($A$2:$A6)+1)))

请注意,这是一个数组公式,因此在将此公式键入单元格后,必须按Ctrl + Shift + Enter而不是按Enter

您可以将它与MATCH公式结合使用以获得所需的结果(它告诉您:: row的行数是多少):

= MATCH("::*",INDEX($A$2:$A6,N(IF({1},MAX(ROW($A$2:$A6))-ROW($A$2:$A6)+1))),0)

(也哈哈,这有点酷:通常你会看到INDEX使用的MATCH有效地获得VLOOKUP类型的功能。这是我第一次看到它在MATCH中使用INDEX的相反方式。)

请注意,我并不是说这必然是针对这个特定问题的最佳方法,只是证明了数组可以反转的一个点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM