返回目录:excel表格制作
日期格式写错了。
条件也写错了,百excel不支持连续不等式。
应该写成这样:
=COUNTIFS(某个产度品名臣!G:G,A9,某个产品名臣!H:H,">=2019/11/1",某个产品名臣!H:H,"<=2019/11/31")
如果你的数据表里的日期不是真版日期,而是假日期,用上面的权公式也不行,需要用真日期格式才行。
首先,计算两个日期之间的天数。
在excel中,两个日期直接相减就可以得到两个日期间隔的天数,如下图:
计算两个日期之间的天数,也可以用隐藏函数DATEDIF函数来完成,公式如下:
=DATEDIF(A2,B2,"d")
DATEDIF()函数知识点介绍:
这个函数语法是这样copy的:=DATEDIF(开始日期,结束日期,第三参数),第三参数可以有若干种情况,分别可以返回间隔的天数、月数和年数。
下面再来看一下如何计算时间。
首先,最简单的是两个时间直接相减即可得到时间差。但是注意,存储结果的单元格要设置成时间格式。
上面的例子是未超过1天的时间,如果超过1天的时间使用方法如下:
上面的例子更常出现于考勤表的时间计算,由于两个日期可能跨越2天或者更长时间,默认显示结果不正确,需要通过设定单元格格式的方法来显示正常的时间差。如下图设zd置单元格格式为“[h]:mm:ss”,其中h加上方括号可以将时间的差小时数完全显示,如果不加方括号只能显示扣除天以后的小时之差。
如果想将时间差的天数和时间都显示出来,可以设置单元格格式为:
d天 h小时mm分ss秒
这还是用e79fa5e98193e59b9ee7ad94362VBA处理比较好办,函数太绕了。代码已发
Private Sub Worksheet_Change(ByVal Target As Range)
Dim myer%, mmon%, mday%, myd%, x%
Dim mdate As Date, arr(1 To 12, 1 To 1)
If Target.Address = "$A$2" Then
mdate = Target.Value
mday = Day(mdate)
mmon = Month(mdate)
myer = Year(mdate)
For x = 1 To 12
If mday = 1 Then
myd = Day(DateSerial(myer, mmon + x, 0))
arr(x, 1) = DateSerial(myer, mmon + x - 1, myd)
Else
myd = Day(DateSerial(myer, mmon + x + 1, 0))
If myd < mday Then
arr(x, 1) = DateSerial(myer, mmon + x, myd)
Else
arr(x, 1) = DateSerial(myer, mmon + x, mday - 1)
End If
End If
Next x
Range("B2").Resize(12, 1) = arr
End If
End Sub
如图,月份百值输度成数字1,问2,3............
M29公式:=SUMPRODUCT((MONTH($A$2:$A$1000)=$L29)*$G$2:$G$1000) ,下拉,再如答下图设置单内元格容格式。