这可以用公式来完成。这是一种考虑填充F列的方法,通过匹配E(144 Total
)中最后一行给出的数字,列E中匹配项的价格;在这种情况下,我将假设是E10
。
然后你拖下来的F1
总公式是:
=IFERROR(IFERROR(VLOOKUP(E1,INDIRECT(CELL("address",OFFSET($H$1,MATCH(1*LEFT($E$10,FIND(" ",TRIM($E$10),1)-1),$G:$G,0)-1,,1,1))&":"&CELL("address",OFFSET($I$1,MATCH($E$10,$G:$G,0)-1,,1,1))),2,FALSE),VLOOKUP(E1,G:I,3,FALSE)),"")
步骤:
提取感兴趣的数量,例如144
,并使用以下方法删除任何尾随/前导空格:
LEFT($E$10,FIND(" ",TRIM($E$10),1)-1)
找到此值所在的行,因为这将是此数字的查找范围的第一行。 *1
将文本转换为数字。
MATCH(1*LEFT($E$10,FIND(" ",TRIM($E$10),1)-1),$G:$G,0)
这给出了第9行。
我们可以使用更简单的东西来找到范围的最后一行,其中包含144 Total
MATCH($E$10,$G:$G,0)
这给出了第15行。所以我们知道144
的数据位于第9行和第15行之间。
我们可以把它变成一个范围,用于VLOOKUP
和INDIRECT
和OFFSET
。
=CELL("address",OFFSET($G$1,MATCH(1*LEFT($E$10,FIND(" ",TRIM($E$10),1)-1),$G:$G,0)-1,,1,1))&":"&CELL("address",OFFSET($H$1,MATCH($E$10,$G:$G,0)-1,,1,1))
这给了我们$G$9:$H$15
。注意调整-1
,将OFFSET
放回右行,并且OFFSET
启动单元格位于不同的列中以提供VLOOKUP
所需的列。
所以我们现在可以查找E列值,例如Enhancement
,在我们新定义的范围内,可通过INDIRECT
访问:
=VLOOKUP(E1,INDIRECT(CELL("address",OFFSET($H$1,MATCH(1*LEFT($E$10,FIND(" ",TRIM($E$10),1)-1),$G:$G,0)-1,,1,1))&":"&CELL("address",OFFSET($I$1,MATCH($E$10,$G:$G,0)-1,,1,1))),2,FALSE)
这就是说VLOOKUP(E1,$G$9:$H$15,2,FALSE)
即从price
中指定的项目范围内获取E1
列。
如果没有找到,即返回#N/A
,我们可以使用它来首先检查这是否是因为包含144 Total
的合并单元格;其中值实际上在G列中而不是H,并使用IFERROR
来表示,如果在$G$9:$H$15
中找不到,则使用列G:I
尝试匹配并返回第3列。
使用priorLookup
作为占位符的伪公式,对于上述步骤中描述的公式,如下所示:
IFERROR(priorLookup, VLOOKUP(E1,G:I,3,FALSE))
如果这仍然返回#N/A
,我们知道该值不存在,我们应该返回""
。我们可以用另一个IFERROR
处理这个:
IFERROR(IFERROR(priorLookup, VLOOKUP(E1,G:I,3,FALSE)),"")
所以给我们开头说明的整个公式。
这里用于表格: