以下是引用blue_prince在2007-1-7 7:55:48的发言:各位,有谁能告诉我以面的函数是什么意思呀? {=IF(Q5="","",MAX(0,COUNT(1/(IF(MATCH(E5:E7,E5:E7,)={1;2;3},{1;2;3})*(A5:A7&B5:B7&D5:D7=A5&B5&D5)) 请各位看附件中深红色部分函数,给个注好吗,谢谢! E列是分店名,MATCH(E5:E7,E5:E7,0)={1;2;3}——每3行记录找,是否分店名有重复,如果没有重复则返回{1;2;3},本例中前2个都是双桥店,返回{1;1;3}与{1;2;3}比较,得到{True;False;True} A、B列是日期、D列是客户名称,A5:A7&B5:B7&D5:D7=A5&B5&D5——每3行记录找,是否有同一天给与当前行同一家客户送货的记录,如果有就返回True,例中,第5行记录与6、7行不同,返回{True;False;False},在第6行则与第7行同、与第8行不同,返回{True;True;False} 所以,在第5行:IF({True;False;True},{1;2;3}*{True;False;False})——得到{1;0;0}。(备注:看不出返回{1;2;3}有什么实际意义,直接简化公式。) 1/{1;0;0}——得到{1;#DIV/0!;#DIV/0!},Count函数可以忽略错误值,COUNT({1;#DIV/0!;#DIV/0!})得到1,Count-1=0 Max(0,0)=0 简化后的公式——=IF(P5="","",MAX(0,COUNT(1/(IF(MATCH(E5:E7,E5:E7,)={1;2;3},(A5:A7&B5:B7&D5:D7=A5&B5&D5))))-1)) 再简化——=IF(P5="","",MAX(0,COUNT(1/((MATCH(E5:E7,E5:E7,)={1;2;3})*(A5:A7&B5:B7&D5:D7=A5&B5&D5)))-1)) IF部分的意思:如果从当前行起往下共3行的记录中,判断分店是否第一次出现(即非重复),如是则判断日期是否同一天、客户是否同一家,如果满足这3个条件,就按1个卸货点计算。 Count-1表示增加部分,不含本身。 以上是运算过程,可以用抹黑公式部分按F9键的方式来查看。下面以第10~12行的记录为例: 11 | 19 | 5213583 | 北京市世纪凯城科技有限公司 | (正通顺小学) | 11 | 19 | 5213583 | 北京市世纪凯城科技有限公司 | (汪家拐小学) | 11 | 19 | 5213583 | 北京市世纪凯城科技有限公司 | (狮马路小学) |
同一天给同一家客户的3个分店送货,那么卸货点是3个(即要增加2个)。 以下是引用cawyj在2007-1-7 15:37:18的发言: "sheet"&{2,3,4}&"!A:A"这是什么意思 这是公式中的一部分,问问题不应该断章让人家来取义。请参看本贴43楼 SUMif三维引用的经典用法的解释中关于Indirect函数的解释。即引用sheet2、sheet3、sheet4表的A列。
[此贴子已经被作者于2007-1-10 12:59:58编辑过] |