一、案例 如下图所示A1:B16为公司销售人员走访客户的日期记录。现在要求填写最近一次走访D列客户的日期。 二、操作步骤 1、对A1:B16数据区域按联系日期升序排列。本例数据源已按B列日期升序排列。 2、在E2单元格输入公式 =INDEX($B$2:$B$16,SMALL(IF($A$2:$A$16=D2,ROW($B$2:$B$16)-1,ROW($B$16)+1),COUNTIF($A$2:$A$16,D2))) 按Ctrl+Shift+Enter结束公式输入,拖动填充柄向下复制公式。 公式解析: (1)本例要求根据D列客户姓名查找联系日期,需要用Index函数。Index函数用于在特定的单元格区域中,返回指定行列交叉处单元格的值或引用, 语法为Index(array,row_num,[col_num]。例如INDEX($B$2:$B$16,7)返回单元格区域B2:B16第7行单元格的值,即“2021/3/19”,这是对客户“陈鹏”的最近一次走访日期。 (2)对客户“陈鹏”的走访日期共有4次,分别位于数据区域B2:B16的第1、2、4、7行,用Index函数表示则分别为INDEX($B$2:$B$16,1)、INDEX($B$2:$B$16,2)、 INDEX($B$2:$B$16,4)、 INDEX($B$2:$B$16,7)。INDEX($B$2:$B$16,7)就是要提取的最近一次联系日期。可以看出,要找到客户“陈鹏”的最近一次联系日期,其实就是找到A2:A16单元格区域中客户姓名为“陈鹏”的最大行号。 (3)IF($A$2:$A$16=D2,ROW($B$2:$B$16)-1,ROW($B$16)+1)表示当A2:A16客户姓名为“陈鹏”时,返回的值为“单元格行号-1”,否则返回17,公式的结果是{1;2;17;4;17;17;7;17;17;17;17;17;17;17;17}。 (4)COUNTIF($A$2:$A$16,D2)统计客户“陈鹏”的走访次数,共4次。 (5)SMALL函数用于返回数据中第k个最小值,语法为small(array,k)。 SMALL(IF($A$2:$A$16=D2,ROW($B$2:$B$16)-1,ROW($B$16)+1),COUNTIF($A$2:$A$16,D2))可以返回客户“陈鹏”的最后一次走访所在的行号。 |
|