寻求Excel中的优秀帮助

时间:2017-02-03 10:20:29

标签: excel excel-formula

This pictures shows my table and formula's yield

我使用以下公式从表中提取结果。

它的工作非常好,但我希望升级我对Excel公式的理解。

麻烦的是我经常以Excel的方式使用IF。

我想知道的是,它是否可以使用不同的方法,可以使用类似于if但可能更复杂的方法。

=IF(OR(J2="08L",J2="08R"),IF(ISNUMBER(MATCH(LEFT(I2,3),'SID separations'!$D$34,0)),"LAM",IF(ISNUMBER(MATCH(LEFT(I2,3),'SID separations'!$D$35:$E$35,0)),"West",IF(ISNUMBER(MATCH(LEFT(I2,3),'SID separations'!$D$36:$G$36,0)),"East",IF(ISNUMBER(MATCH(LEFT(I2,3),'SID separations'!$D$37,0)),"SFD",NA())))),0)

我非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

既然有一个例子,我认为这是一个很好的问题。您已经认识到您的公式相当混乱,如果有更多路线,也无法轻松扩展。

问题在于Excel非常适合在单行或列中搜索值,但不能很好地搜索数据块中的值。

您可以通过创建在单个单元格中包含每个完整路径的其他列来简化此问题。您可以通过连接值来实现此目的。在您的示例中,使用列H:

=B2&" "&C2&" "&D2&" "&E2&" "&F2&" "&G2

这将在单个单元格中创建一个包含整个路径的字符串。在路径的每个部分之间添加空格,以确保您不会意外地创建与另一个路径的一部分匹配的字母序列。如果有空白单元格并不重要,最后只会有一些额外的空格无关紧要。在列中填充以获取单个单元格中每条路径的完整路径。

然后,您可以创建一个公式,尝试在任何完整路径中的任何位置找到3个字母。

=INDEX($A$2:$A$5,MATCH("*"&left(I2,3)&"*",$H$2:$H$5,0))

这个公式基本上是一个解构的vlookup。它确定在H列中可以找到3个字符的位置,然后从A列返回相应的值。

MATCH函数试图在列H中找到I2的左3个字符.MATCH函数通常试图找到完全完全匹配(最后一个参数等于0),但我们可以只添加通配符到搜索值。然后MATCH函数返回找到它的范围的索引。即,如果在范围H2:H5的第二个单元格中找到它,则返回数字2.

然后,INDEX函数只从基于索引的范围中获取值。在这种情况下,它将从范围A2:A5获得第二个值。

enter image description here