首页 > 其他分享 >VBA累计日期

VBA累计日期

时间:2022-12-22 01:22:05浏览次数:36  
标签:Dim VBA End arr 累计 cols 日期 dic

 

 

 1 Sub count_date()
 2 '计算所有天数,并对日期去重
 3 Dim dic As Object
 4 Dim arr() As Variant
 5 Dim d As Date
 6 Dim cols As Integer
 7 
 8 '选5列:1条件列,2开始日期,3结束日期,4,第一列出现次数,5累计天数
 9 arr = Selection
10 cols = UBound(arr, 2)
11 Debug.Print cols
12 For i = 1 To UBound(arr, 1)  '大循环
13         Set dic = CreateObject("scripting.dictionary")
14     n = 0
15     For j = 1 To UBound(arr, 1) '小循环
16 
17         If arr(j, 1) = arr(i, 1) Then  '找到同名行
18             For d = arr(j, 2) To arr(j, 3) '累计日期
19 '字典的键名不能重复,使得d重复输入无效,起到去重日期的效果。
20                 dic(d) = d
21             Next
22             n = n + 1
23         End If
24 '如果没有选第四列,删除此if和n
25         If n > arr(i, 4) Then
26             Exit For
27         End If
28     Next
29     arr(i, cols) = dic.Count
30 Next
31 'WorksheetFunction.Index(数组, 行数, 列数),"0"代表整行或整列
32 Selection.Columns(cols) = WorksheetFunction.Index(arr, 0, cols)
33 End Sub

 

标签:Dim,VBA,End,arr,累计,cols,日期,dic
From: https://www.cnblogs.com/yjyblog/p/16997511.html

相关文章

  • VBA分行
    原始表格row_split1()的结果   row_split3()的结果一列里的每个单元格,数据都是有同一分隔符的,以此列为基础,将数据分为多行。1Subr......
  • sql自动补全缺失的日期,并将空值替换成上一个非空值
    一、应用场景填充日期(以一个月为单位),在没有出现日期的节点自动填充成前面第一个节点日期存在的值。先准备两个数据集,一是全部的日期数据集,即包含所有年月的数据集;二是......
  • vba-在某列上查找数据放回所有的列和行
    DimrngFoundAsRangeDimstrFirstAsStringSetrngFound=DataMatchSht.Columns("B").Find("CNHMXI",Cells(Rows.Count,"B"),xlValues,xlWhole)......
  • 005 日期时间与字符串转换
    1.字符串转LocalDate1publicstaticLocalDateparseDateString(StringdateString,Stringpattern){2try{3DateTimeFormatterformatter=DateTime......
  • vant移动端日历组件如何设置后端传过来的日期才可选
    1<template>2<divid="homeBox">3<van-celltitle="选择多个日期"@click="show=true"/>4<van-calendar5v-model="show"6:for......
  • Sql 中常用日期转换Convert(Datetime)
    Sql中常用日期转换Convert(Datetime) CONVERT(data_type,expression[,style]) convert(varchar(10),字段名,转换格式)说明:此样式一般在时间类型(datetime,smallda......
  • ExtJS 日期处理
    计算是否在日期范围内console.log(Ext.Date.between(newDate('07/01/2022'),newDate('05/01/2022'),newDate('12/01/2022')));获得一个月的最后一天日期console.l......
  • MySQL日期 专题
    一、MySQL获得当前日期时间函数 1.1获得当前日期+时间(date+time)函数:now() mysql>selectnow();+---------------------+|now()          |+--------......
  • SQL server 2008 的日期时间类型
     SQLServer2008提供多种日期时间类型供我们选择。以下是各个时间类型的汇总:数据类型格式取值范围精度存储尺寸dateyyyy-mm-dd0001-1-19999-12-311天3字节timehh:......
  • CitectVBA定制过程分析器3:删除特定的板
    这是我在新浪博客发表过的一篇学习笔记,在这里也发一次CitectVBA定制过程分析器3:删除特定的板_来自金沙江的小鱼_新浪博客(sina.com.cn)如果想使用CitectVBA删除特定序号......