Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2439|回复: 5

[已解决]总所用日期 感恩~~>。<~~

[复制链接]
发表于 2013-10-22 01:12 | 显示全部楼层 |阅读模式
开始日完结日所用日数
2012年12月5日
2012年12月6日
0
2012年12月6日
2012年12月8日
0
2012年12月7日
2012年12月9日
2
2013年2月13日
2013年2月15日
2
2013年2月16日
2013年2月19日
3
2013年3月1日
2013年3月8日
7
2013年3月1日
2013年3月9日
8
2013年3月3日
2013年3月6日
3
2013年6月8日
2013年6月10日
2
2013年6月8日
2013年6月10日
2
所用天数
《=在这里,因为想不计算重复,所以想所用天数是:20日(因为2012-12-05到2012-12-09(4日),2013-02-13到2013-02-19(6日),2013-03-01到2013-03-09(8日),2013-06-08到2013-06-10(2日)
因为有很多这样的表格,不可能每一次都心算,所以求VBA或function。谢谢!
最佳答案
2013-10-22 13:57
选择所要计算的表格范围然后执行下面程序就可以了
Public Sub cx()
    arr = Selection
    n = UBound(arr)
    sterday = arr(1, 1)
    endday = arr(1, 2)
    daycount = 0
    For i = 2 To n
        If endday >= arr(i, 1) - 1 Then
            If endday < arr(i, 2) Then endday = arr(i, 2)
        Else
            daycount = daycount + (endday - sterday)
            sterday = arr(i, 1)
            endday = arr(i, 2)
        End If
        If i = n Then daycount = daycount + (endday - sterday)
    Next i
    MsgBox daycount
End Sub

DateUsed.rar

8.05 KB, 下载次数: 3

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-10-22 04:48 | 显示全部楼层
可以使用隐藏函数DATEDIF(日期1,日期2,"D");
下面是详细说明:
1、简要说明: 返回两个日期之间的年\月\日间隔数
2、基本语法: =DATEDIF(开始日期,结束日期,单位代码)
Datedif计算天数.rar (1.87 KB, 下载次数: 10)
回复

使用道具 举报

 楼主| 发表于 2013-10-22 13:25 | 显示全部楼层
ppp710715 发表于 2013-10-22 04:48
可以使用隐藏函数DATEDIF(日期1,日期2,"D");
下面是详细说明:
1、简要说明: 返回两个日期之间的年\月\日 ...

Hi PPP710715, 这个帮不到,因为我需要的是总所用天数(不计算重复的日期),用DATEIF的话,答案不会使我想要得20,而只是32。。。。。。
回复

使用道具 举报

发表于 2013-10-22 13:57 | 显示全部楼层    本楼为最佳答案   
选择所要计算的表格范围然后执行下面程序就可以了
Public Sub cx()
    arr = Selection
    n = UBound(arr)
    sterday = arr(1, 1)
    endday = arr(1, 2)
    daycount = 0
    For i = 2 To n
        If endday >= arr(i, 1) - 1 Then
            If endday < arr(i, 2) Then endday = arr(i, 2)
        Else
            daycount = daycount + (endday - sterday)
            sterday = arr(i, 1)
            endday = arr(i, 2)
        End If
        If i = n Then daycount = daycount + (endday - sterday)
    Next i
    MsgBox daycount
End Sub
回复

使用道具 举报

 楼主| 发表于 2013-10-29 00:32 | 显示全部楼层
Thanks a lot sgxb~! It works fine when 'if  end day >=arr(i,1)-1 Then' without '-1' thanks a lot :)
回复

使用道具 举报

发表于 2013-10-29 08:20 | 显示全部楼层
todayboy 发表于 2013-10-29 00:32
Thanks a lot sgxb~! It works fine when 'if  end day >=arr(i,1)-1 Then' without '-1' thanks a lot :)

用汉语说可以吗?外语我不怎么懂
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-29 12:48 , Processed in 0.174932 second(s), 13 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表