在处理订单时,我们经常需要根据日期来生成新的单号。

单号随日期的改变而改变,如果某一天没有生成单号,则从001开始;如果已有单号,则找到最大单号并加1来生成新的单号。

先来看看动态效果图:

告别手动编号!Excel智能单号生成,让你的事务井井有条!-趣帮office教程网

首先,我们在同一表中进行操作,易于说明公式的原理,跨表就会很简单

一、查找特定日期的所有单号

为了找到某个特定日期(如2025-1-3)的所有单号,我们可以使用以下公式:

=B3:B11=O2

这里,B3:B11是日期列的范围,O2是我们要查找的日期。这个公式会返回一个布尔值数组(TRUE或FALSE),表示哪些行符合我们的查找条件。

显示TRUE的,是2025-1-3的所有单。

告别手动编号!Excel智能单号生成,让你的事务井井有条!-趣帮office教程网

二、转换为可用于查找的数组

由于LOOKUP函数不能直接处理布尔值数组,我们需要将其转换为0和#DIV/0!的数组。这可以通过以下公式实现:

=0/(B3:B11=O2)

这里,如果条件为真(即日期匹配),则分子为0,分母也为0(但Excel会将其处理为#DIV/0!)。如果条件为假,则分母为0,导致公式结果为#DIV/0!。

告别手动编号!Excel智能单号生成,让你的事务井井有条!-趣帮office教程网

三、使用LOOKUP函数查找最大单号

现在,我们可以使用LOOKUP函数来查找特定日期的最大单号。

LOOKUP函数会忽略#DIV/0!错误值,并返回数组中最后一个比查找值小的元素(在这里是0)对应的单号。

注意这里的单号是一定要按升序排序。

公式如下:

=LOOKUP(1,0/(B3:B11=O2),A3:A11)

但请注意,这个公式需要在数组公式环境中使用(即按Ctrl Shift Enter键输入),或者在新版本的Excel中使用动态数组功能。

告别手动编号!Excel智能单号生成,让你的事务井井有条!-趣帮office教程网

为了简化操作,并使其适用于整个列,回到进货单界面,我们可以将公式修改为:

=LOOKUP(1,0/(进货明细表!B:B=I3),进货明细表!A:A)

这里,I3是我们要查找的日期所在的单元格。

告别手动编号!Excel智能单号生成,让你的事务井井有条!-趣帮office教程网

四、生成新的单号

最后,我们需要根据找到的最大单号来生成新的单号。

如果当天没有单号(即LOOKUP函数返回错误),则新单号应从001开始。

这可以通过以下公式实现:

=IFERROR(LOOKUP(1,0/(进货明细表!B:B=I3),进货明细表!A:A 1),TEXT(I3,"YYYYMMDD")&"001")

告别手动编号!Excel智能单号生成,让你的事务井井有条!-趣帮office教程网

这里,IFERROR函数用于捕获LOOKUP函数可能返回的错误,并返回一个新的单号,格式为“日期 001”。

如果LOOKUP函数成功找到了最大单号,则将其加1并返回;如果没有找到(即返回错误),则使用TEXT函数将日期格式化为“YYYYMMDD”并加上“001”。

总结

通过以上步骤,我们可以根据日期生成新的单号。这种方法不仅简单易懂,而且非常灵活,适用于各种类似的情况。