求Excel函数公式,非常感谢 60
理解:题述要求的重点就是以单元格的某个字符作为区间查找的依据,进行判断、求和
解法:在 Excel 2007 中,可以用以下公式基本满足题述要求(E列数据生成手工输入):
公式1(F列公式即题述函数1):=IF(F10="水果",SUM(ISNUMBER(FIND(INDEX(A$10:C$22,SUM(ISNUMBER(FIND(LEFT(F$10,1),B$10:B$22))*ROW(A$1:A$13)),1),A$10:A$22))*ISNUMBER(FIND({"苹","蕉"},B$10:B$22))*C$10:C$22),IF(F10="酒",SUM(ISNUMBER(FIND(INDEX(A$10:C$22,SUM(ISNUMBER(FIND(LEFT(F$10,1),B$10:B$22))*ROW(A$1:A$13)),1),A$10:A$22))*ISNUMBER(FIND({"啤","红"},B$10:B$22))*C$10:C$22),IF(F10="坚果",SUM(ISNUMBER(FIND(INDEX(A$10:C$22,SUM(ISNUMBER(FIND(LEFT(F$10,1),B$10:B$22))*ROW(A$1:A$13)),1),A$10:A$22))*ISNUMBER(FIND("坚",B$10:B$22))*C$10:C$22),"")))
注1:上述公式为针对“A组”的公式,涉及到“B组”或“C组”时,需要对公式参数进行修改:下拉完毕后,针对“B组”,将 LEFT 语句中的“F$10”改为“B组”所在行的行号“F$15”,重新下拉;针对“C组”,将 LEFT 语句中的“F$10”改为“C组”所在行的行号“F$20”,重新下拉
注2:公式中的“ROW(A$1:A$13)”与“INDEX”区间“A$10:C$22”相对应,可根据实际情况进行修改
公式2(J列公式即题述函数2):=IF(ISNUMBER(FIND("果",B10)),"水果",IF(ISNUMBER(FIND("蕉",B10)),"水果",IF(ISNUMBER(FIND("啤",B10)),"酒",IF(ISNUMBER(FIND("红",B10)),"酒",""))))
公式3(K列公式即题述函数3):=IF(ISNUMBER(FIND("A",B10)),INDEX(B10:C22,1,2),IF(ISNUMBER(FIND("B",B10)),INDEX(B10:C22,1,2),IF(ISNUMBER(FIND("C",B10)),INDEX(B10:C22,1,2),"")))
总注:上述公式均为数组公式,须“Ctrl+Shift+Enter”三键同时按下结束输入
公式的结果如下图示: