计算文本格式“yyyymm”或“yyyymmdd”计算年、月、日差额的自定义函数

b718071e822a3a3e6b1608ceacfaf7ff.png

==标题==

计算文本格式“yyyymm”或“yyyymmdd”计算年、月、日差额的自定义函数

==正文==

【问题】

我们在Excel中输入日期,有两种方式,

1.单元格是日期格式的输入。系统会有自动识别

2.有许多人习惯是用文本格式输入方式,如下图

在Excel的单元格中常要填写这样子的年月或年月日的数据

b1553d42e97326dc5a837d3e96ce88e2.png

为了完成以上的工作,设计一个自定义函数

先说一下Excel和VB.net的一点不同

1.在Excel中,年月日用“yyyymmdd”表示,
2.在VB.net中年月日用“yyyyMMdd”表示

【函数】

VSTO插件可以更好的使用VB.net的编程方式.

一、自定义函数,代码如下

'函数功能:计算形如[yyyyMM]与[yyyyMMdd]格式.开始与终止的年、月、日差额
Public Function StartAndEndGetYMD(startDateStr As String, endDateStr As String, yMd As String) As Double
        Dim startDate As DateTime
        Dim endDate As DateTime
        Dim temp As Double
        Try
            If startDateStr.Length = 6 Then startDateStr += "01"
            If endDateStr.Length = 6 Then endDateStr += "01"
            startDate = DateTime.ParseExact(startDateStr, "yyyyMMdd", Nothing)
            endDate = DateTime.ParseExact(endDateStr, "yyyyMMdd", Nothing)
            Dim tM As Integer = DateDiff(DateInterval.Month, startDate, endDate)
            Select Case yMd
                Case "y"
                    temp = Math.Round(tM / 12, 2)
                Case "M"
                    temp = Double.Parse(tM)
                Case "d"
                    temp = DateDiff(DateInterval.Day, startDate, endDate)
            End Select
            Return temp
        Catch ex As Exception
            Return 0.0
        End Try
    End Function

2.函数使用方法

with Activesheet
    for i=2 to 6
        .cells(i,3).value=StartAndEndGetYMD(.cells(i,1).text,.cells(i,2).text,"y")'计算年数差额        
        .cells(i,6).value=StartAndEndGetYMD(.cells(i,4).text,.cells(i,5).text,"M")'计算月数差额
     
    next
end with

==The end==

458d30b32b078ad4fc1f91c89ac3b9b4.png

==合集==

VB.NET和C#通用知识点学习笔记

列表
1在VBA或VB.net中Split()与Replace()的用法
2在VB.net中,List(of string())与List(of List(of string))有什么区别
3VB.net中,List有什么方法与属性
4在VB.net中,Stopwatch有什么属性与方法
5VB.net的多线程System.Threading
6VB.NET中,多线程的学习笔记(一)
7VB.net中Listbox
8在VB.net中,数据去重有什么方法
9在VB.net中,二维数据如何排序
10在VB.net或C#中,向上取整Math.Ceiling的用法
11在VB.net中WinForm+Backgroundworker+StatusStrip范例
12VB.net-VSTO插件实现Color互转RGB
13VB.net VSTO插件-不同班级的成绩四率三分统计代码
14在VB.net中,SortedSet的有什么方法与属性
15在VB.net中,SortedList有什么方法与属性
16在VB.net中,元组Tuple有什么方法与属性
17在VB.net中,CDbl、Double.Parse与Double.TryParse有什么区别
18在VB.net中,对数据排名次,用LINQ、SortedSet,还是用SortedList速度快
19在VB.net中,LINQ有什么方法与属性
20在VB.net中,LINQ有什么查询表达式,举例说明
21在VB.net中,LINQ在数据统计方面的应用,举例说明
22
在VB.net中,HashSet有什么属性与方法
23在VB.net中,如何把"20240906"转化成日期格式
24在VB.net中 DateTime有什么属性与方法
25在VB.net中,DateTime类使用,举例说明
26在VB.net中,TimeSpan有什么属性与方法


====若有用,请转发免费学习====

关注看更多文章

8923d8bec03269e96e5fa8e75a3669fa.jpeg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值