求一个excel公式

作者:佚名    更新日期:2025-06-15

以下均按数据区域是3到100行演示,具体使用根据实际情况修改。

方法1:如图,限定日期为本年情况下,生产批次F2=SUM(IF(MONTH(A$3:A$100)=E2,1/COUNTIFS(B$3:B$100,B$3:B$100,$A$3:$A$100,">="&DATE(YEAR(TODAY()),E2,1),$A$3:$A$100,"<"&DATE(YEAR(TODAY()),E2+1,1))))

方法2:如果可以构造辅助列,公式就简单很多,本例先放在C列,实际可甩到表后的某列,如Z列等。C2=MONTH(A3)&"-"&B3,下拉复制,然后就可以对这个辅助列进行去重计数,生产批次公式简化为F2=SUM(IF(MONTH(A$3:A$100)=E2,1/COUNTIFS(C$3:C$100,C$3:C$100)))。

** SUM(……,1/COUNTIFS(C$3:C$100,C$3:C$100))的原理就是:

先用COUNTIFS(C$3:C$100,C$3:C$100)来计算每个“月份-批号”出现的次数,比如2-777出现了4次;再用1除以次数,每个2-777对应的就是0.25,求和得到1。这里就是用的简单的数学原理,无论重复多少次,因为用1除的,合计一定=1。



您可以使用以下公式来实现该需求:

=SUM(--(FREQUENCY(IF((MONTH($A$2:$A$10)=2), $B$2:$B$10), $B$2:$B$10)>0))

这是一个数组公式,所以在输入完公式后,需要按下“Ctrl+Shift+Enter”来确认。

其中,“$A$2:$A$10”代表日期列的范围,“$B$2:$B$10”代表批次号的范围,我们首先通过 IF 函数, 筛选出符合条件的批次号(比如在2月份),然后构建一个数据集对其进行去重,最后使用 FREQUENCY 函数计算出不同批次号出现的次数,之后 SUM 函数计算不同批次号出现的数量。

希望能对您有所帮助。



公式

=LET(m,UNIQUE(HSTACK(MONTH(A2:A13),B2:B13)),n,TAKE(m,,-1),u,UNIQUE(TAKE(m,,1)),VSTACK({"月份","批数"},HSTACK(u,MAP(u,LAMBDA(x,COUNTA(FILTER(n,TAKE(m,,1)=x)))))))

适合excel365版本。



可以使用以下公式计算某月不重复批号数量:
=SUM(IF(MONTH(A2:A100)=2,IF(COUNTIF(A2:A100,B2:B100)=1,1,0),0))
解释如下:
1. MONTH(A2:A100)=2:选取A列日期为2月(您可以改为需要统计的月份)的行。
2. COUNTIF(A2:A100,B2:B100)=1:在选取的日期为2月的行中,统计B列批号出现的次数。如果等于1,说明是首次出现,符合条件。
3. IF(COUNTIF(A2:A100,B2:B100)=1,1,0):如果上一步B列批号出现次数等于1,那么此行返回1,否则返回0。
4. SUM(IF(...)):将所有符合条件的行的返回值相加,得出结果。
5. 所以最终公式中的2代表您要统计的月份,A2:A100和B2:B100代表数据区域。您可以根据自己实际的数据范围进行修改。
举例来说,如果您的数据范围是A2:A10和B2:B10,并且要统计3月的数据,公式可以写为:
=SUM(IF(MONTH(A2:A10)=3,IF(COUNTIF(A2:A10,B2:B10)=1,1,0),0))
如果3月中A列有5行日期,B列批号分别为a、b、c、a、d,则最终结果为4,因为a和d是首次出现的批号。
希望这个公式及解释能对您有所 帮助。

可以使用以下公式来计算某月不重复批号数量:
=SUM(IF(FREQUENCY(IF(MONTH(A1:A10)=2,B1:B10),B1:B10)>0,1))
上述公式中,A1:A10为日期列,B1:B10为批次号列,2表示要统计的月份。请根据实际情况修改这些值。
这是一个数组公式,需要按下Ctrl + Shift + Enter键将其输入到单元格中,而不仅仅是按下Enter键。如果正确输入,公式周围会出现花括号{}。
完整的公式解析如下:
- MONTH(A1:A10)可以返回日期列A1:A10中每个单元格的月份(以数字形式表示)。
- IF(MONTH(A1:A10)=2,B1:B10)可以返回所有位于2月份的行的批次号。
- FREQUENCY函数用于计算指定数组或区域中数值出现频率的分布。在此示例中,它被用于检测重复项并计算每个不同值的频率。
- IF(FREQUENCY(IF(MONTH(A1:A10)=2,B1:B10),B1:B10)>0, 1)会返回一个包含0和1的数组。其中为0表示该项重复出现,而为1则表示该项只出现一次。
- 最后,使用SUM函数对上一步返回的数组中所有值进行求和。这将得出某月不重复批号数量。
希望这个公式能够满足您的需求。

~