vbaexcel统计日期(vba计算日期差)

Exce表格网 2023-03-28 14:50 编辑:admin 206阅读

1. vba计算日期差

'输入日期,确定按钮

Private Sub CommandButton1_Click()

StartDate = TextBox1.Value

EndDate = TextBox2.Value

TextBox1.Value = ""

TextBox2.Value = ""

Input_Date.Hide

End Sub

'输入日期,取消按钮

Private Sub CommandButton2_Click()

TextBox1.Value = ""

TextBox2.Value = ""

StartDate = ""

EndDate = ""

Input_Date.Hide

End Sub

'输入日期,初始化文本框

Private Sub TextBox1_Enter()

If TextBox1.Value = "" Then TextBox1.Value = Format(Date, "yyyymmdd")

End Sub

'输入日期,离开起始日期

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)

If TextBox1.Value Like "########" Then

TextBox2.Value = TextBox1.Value

TextBox1.Value = DateSerial(Left(TextBox1.Value, 4), Mid(TextBox1.Value, 5, 2), Right(TextBox1.Value, 2))

Else

'日期有误,留在输入框

MsgBox "日期有误,请重新输入!", vbOKOnly, "iamlaosong"

TextBox1.Value = Format(Date, "yyyymmdd")

Cancel = True

End If

End Sub

'输入日期,离开截止日期

Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)

If TextBox2.Value Like "########" Then

TextBox2.Value = DateSerial(Left(TextBox2.Value, 4), Mid(TextBox2.Value, 5, 2), Right(TextBox2.Value, 2))

If TextBox2.Value < TextBox1.Value Then

MsgBox "截止日期不能小于起始日期!", vbOKOnly, "iamlaosong"

Cancel = True

End If

Else

MsgBox "日期有误,请重新输入!", vbOKOnly, "iamlaosong"

TextBox2.Value = Format(TextBox1.Value, "yyyymmdd")

Cancel = True

End If

End Sub

2. vba中日期相减

因为这个单元格设置了条件格式,或者是VBA代码造成的.点一下这个单元格,在格式菜单,条件格式,将条件删除试试.EXCEL2007及以上版本,条件格式在开始菜单中

3. vba中的日期如何比较大小

date为当日的日期,通常now为日期时间格式,而DATE 只去日期格式。

=Format("3/31/09", "mm-dd-yyyy") 关于此例中用到的Format函数的相关知识: Format函数 根据有效的命名表达式来对指定的表达式进行格式化。Format(expression[, format[, firstdayofweek[, firstweekofyear]]]) Format 函数具有下面几个参数: expression 必要参数。任何有效的表达式。format 可选参数。有效的命名表达式或用户自定义格式表达式。firstdayofweek 可选参数。常数,表示一星期的第一天。firstweekofyear 可选参数。常数,表示一年的第一周。

4. vba 日期计算

vba的countif函数使用:

许多EXCEL问题都涉及数据计数,对于一些简单的计数,通常使用COUNT函数或COUNTA函数就可以解决。然而,在实际的业务处理当中,往往存在诸多条件的限制,仅仅使用简单的统计函数是无法满足人们的实际需求的,例如多条件计数、统计不重复个数等。

例如,在一个EXCEL表格中,D列是考生的数学考试成绩,我们想统计数学成绩及格的人数。可以使用“=COUNTIF(D:D,">=60")”来实现。

本例中,COUNTIF函数可以对区域中满足单个条件的单元格区域进行计数。语法如下:

COUNTIF(参数一,参数二),其中参数一为需要计算其中满足条件的单元格数目的单元格区域,参数二是用于定义将对哪些单元格进行计数的数字、表达式、单元格引用或文本字符串。

COUNTIF函数的常见用法如下:(假如数据所在单元格区域命名为“ Data ”)

公式说明:

=COUNTIF(Data,"=") 返回真空单元格个数(真空单元格是指什么都没有的单元格)

=COUNTIF(Data,"") 返回真空+假真空单元格个数(假真空是指0字符的空文本)

=COUNTIF(Data,"<>")

返回非真空单元格个数

=COUNTIF(Data,"*")

返回文本型单元格个数

=COUNTIF(Data,"<9.99E+307")

返回数值型单元格个数

=COUNTIF(Data,"<>""") 返回区域内所有单元格个数

=COUNTIF(Data,"<0") 返回偶包含负值的单元格个数

=COUNTIF(Data,"<>0") 返回真不等于零的单元格个个数

=COUNTIF(Data,60)

返回值等于60的单元格个数

=COUNTIF(Data,">60") 返回值大于60的单元格个数

=COUNTIF(Data,"<60") 返回值小于60的单元格个数

=COUNTIF(Data,">=60")

返回值大于等于60的单元格个数

=COUNTIF(Data,"<=60")

返回值小于等于60的单元格个数

=COUNTIF(Data,A1)

返回值与A1单元格内容相同的单元格个数

=COUNTIF(Data,">"&A1) 返回值大于A1单元格内容的单元格个数

=COUNTIF(Data,"<"&A1) 返回值小于A1单元格内容的单元格个数

=COUNTIF(Data,"???")

返回字符等于3的单元格个数

=COUNTIF(Data,"YDL")

返回值等于YDL的单元格个数

=COUNTIF(Data,"YDL?")

返回以字母YDL开头且字符数等于4的单元格个数

=COUNTIF(Data,"YDL*")

返回以字母YDL开头的文本单元格的个数

=COUNTIF(Data,"?YDL*")

返回第2,3,4字符为YDL的单元格个数

=COUNTIF(Data,"*YDL*")

返回含的YDL字符的单元格个数

=COUNTIF(Data,"*"&A1&"*")

返回包含A1单元格内容的文本单元格个数

=COUNTIF(Data,TODAY()) 返回值等于当前日期的单元格个数

=COUNTIF(Data,">"&AVERAGE(Data)) 返回大于均值的单元格个数

=SUM(COUNTIF(Data,">"&{10,15})*{1,-1})

返回大于10小于等于15的单元格个数

=SUM(COUNTIF(Data,{TRUE,FALSE}))

返回包含逻辑值的单元格个数

特别指出的是,在EXCEL2010中,新增了一个多条件计数函数,那就是“COUNTIFS” ,假如在一个EXCEL表格中,D3:D50单元格的内容是职工的年龄,E3:E50单元格的内容是是否有房,F3:F50单元格的内容是是否有车,那么统计职工中35岁以上有房有车的人数应该用如下公式:

COUNTIFS(D3:D50,">35",E3:E50,"是",F3:F50,"是") 。

5. vba中日期相减得到数据格式

用VBA正则表达式即可(自定义函数代码如下)

Function feiyong(rng As String)

Set reg = CreateObject("vbscript.regexp")

reg.Global = True

reg.Pattern = "\d+"

Set mat = reg.Execute(rng)

For Each m In mat

strr = strr + Val(m)

Next

feiyong = strr

End Function

alt+f11,新建模块,将代码写到模块里即可。

顶一下
(0)
0%
踩一下
(0)
0%
相关评论
我要评论
点击我更换图片