VBA /VB/VB中合成分散数据方法
公司用于项目号的合成,怕忘记,特此放上这里。若能帮助其它道友,善莫大焉。
比如:001,004,006,007,008,009,010
结果可以输出:001,004,006-010
逻辑:
1、获得数据(一般从表中提取)
2、定义数组,并赋值。(数组大小根据表中数据个数判断)
3、排序(这里用冒泡法,小到大)
4、综合判断数据(核心判断:从步距来判断是否连接和使用哪种符号相连,前后相距1,那么用“-”,前相距非1,用“,”)
5、根据想要的格式进行输出
Function Br_合成项目号()
Dim rst As New ADODB.Recordset
rst.CursorLocation = adUseClient
Dim Dst As New ADODB.Recordset
Dst.CursorLocation = adUseClient
Dst.Open "SELECT * From tb1;", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
Dst.MoveFirst
Do Until Dst.EOF
rst.Open "SELECT * From tb1 where [项目号]='" & Dst.Fields("项目号") & "';", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
Dim Br_arry
ReDim Br_arry(rst.RecordCount)
rst.MoveFirst
'数组初始化
Do Until rst.EOF
Br_arry(rst.AbsolutePosition) = Right(rst.Fields("梯号"), )
rst.MoveNext
Loop
'排序,综合==================================================
'冒泡排序,注意要用数字类型
For I = To rst.RecordCount -
For K = I + To rst.RecordCount
If CInt(Br_arry(I)) > CInt(Br_arry(K)) Then
Dim Str001%
Str001 = Br_arry(K)
Br_arry(K) = Br_arry(I)
Br_arry(I) = Str001
End If
Next K
Next I
'根据想要的格式进行追加设置
Dim Br_Pjt001$
'第一个数组,注意类型转换
Br_Pjt001 = CStr(Format(CInt(Br_arry()), ""))
'判断是否连续
If CInt(Br_arry(rst.RecordCount)) - CInt(Br_arry()) + = rst.RecordCount Then '满足条件为连续数字
Br_Pjt001 = Format(CInt(Br_arry()), "") & "-" & Format(CInt(Br_arry(rst.RecordCount)), "")
Else
For I = To rst.RecordCount -
If Br_arry(I + ) - Br_arry(I) = Then '数字连续段 与后面相距1个单位
If I = Then
Else
If Len(Br_Pjt001) > Then '长度超过4才进行处理,一开始情况
If Br_arry(I) - Br_arry(I - ) = Then '前后都相距1个单位,才进行裁剪
Br_Pjt001 = Mid(Br_Pjt001, , Len(Br_Pjt001) - )
End If
End If
Br_Pjt001 = Br_Pjt001 & "-" & Format(Br_arry(I + ), "")
End If
Else
Br_Pjt001 = Br_Pjt001 & "," & Format(Br_arry(I + ), "")
End If
Next I
End If
'排序,综合==================================================
Debug.Print Dst.Fields("项目号") & "." & Br_Pjt001
Dst.Fields("EEE") = Dst.Fields("项目号") & "." & Br_Pjt001
rst.Close
Dst.MoveNext
Loop
End Function
VBA /VB/VB中合成分散数据方法的更多相关文章
- [转]VB.net中 excel 的range方法
本文转自:https://blog.csdn.net/bigheadsheep/article/details/7711235 第五章 Range对象基本操作应用示例(1)Range对象可能是VBA代 ...
- VB.NET中使用代表对方法异步调用
按照我们常规的思维方式,计算机应该是干完一件事,然后再干下一件.用术语来说,这种执行任务的方式叫做同步执行(Synchronous Execution).既然这样,那么为什么要引入异步执行的概念呢? ...
- c#.net与vb.net中读写Cookie的方法!
Cookie (HttpCookie的实例)提供了一种在 Web 应用程序中存储用户特定信息的方法.例如,当用户访问您的站点时,您可以使用 Cookie 存储用户首选项或其他信息.当该用户再次访问您的 ...
- 教你几种在SQLServer中删除重复数据方法(转)
转载地址:http://www.jb51.net/article/22980.htm 方法一 复制代码 代码如下: declare @max integer,@id integer declare c ...
- JAVA中读取xls数据方法介绍
用例编号(UI-0001) 用例名称({验证页面跳转|验证元素文本}-简要明确表述) 验证类型 是否执行 初始URL 初始元素xpath 目标元素xpath 目标元素属性 期望结果 UI-0001 验 ...
- 随机获得MySQL数据库中100条数据方法 驾照题库项目 MVC架构 biz业务层的实现类 根据考试类型rand或order通过dao数据访问层接口得到数据库中100或全部数据
package com.swift.jztk.biz; import java.util.Collections; import java.util.Comparator; import java.u ...
- mysql互换表中两列数据方法
1.创建表及记录用于测试 ) unsigned ) ,) unsigned ,) unsigned NOT NULL COMMENT '现价', PRIMARY KEY (`id`) ) ENGINE ...
- VB.NET中DataGridView控件
VB.NET中对于表格数据的显示经常使用到DataGridView控件,其以丰富多样的数据表呈现形式被程序猿喜爱. 本人在做一个小系统中运用DataGridView控件的部分属性,这些功能的使用在使用 ...
- VB.NET中使用Linq TO SQL添加数据后获得自增长列ID
VB.NET中使用Linq TO SQL添加数据后获得自增长列ID: Dim tempOrdre As New Order With { .CustomerID = cmbCustomerName.S ...
随机推荐
- Selenium启动关闭Webdriver
第一 启动chrome driver 1. 首先要通过System.setProperty指定chrome driver的路径,才能正常打开一个chrome浏览器: System.setPropert ...
- springboot 入门三- 读取配置信息二(读取属性文件方式)
在上篇文章中简单介绍自带读取方式.springboot提供多种方式来读取 一.@ConfigurationProperties(value="my") 支持更灵活的绑定及元数据的支 ...
- Coding使用方法
首先在码市coding.net上创建账号 基础配置 1. 首先,下载安装git客户端和tortoisegit(就是小乌龟,本地右键使用的,跟SVN一样的那个小乌龟). git下载官网:https:// ...
- java中synchronized的使用
synchronized是Java中的关键字,是一种同步锁. synchronized分对象锁和类的锁两种. (一)通常synchronized 方法和synchronized(this){}都是属于 ...
- 201521123085 《JAVA程序设计》第6周学习总结
1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 2. 书面作业 1.clone方法 1.1 Object对 ...
- 201521123011 《Java程序设计》 第二周学习总结
1. 本周学习总结 记录本周学习中的重点 原则:少而精,自己写.即使不超过5行也可,但请一定不要简单的复制粘贴. 知道了c语言中string的定义与java不同的地方. 学习了枚举,数组等方法 Tnt ...
- 201521123022 《Java程序设计》 第十一周学习总结
1.本章学习总结 2.书面作业 本次PTA作业题集多线程 Q1.互斥访问与同步访问 完成题集4-4(互斥访问)与4-5(同步访问 Q1.1 除了使用synchronized修饰方法实现互斥同步访问,还 ...
- 201521123053《Java程序设计》第十周学习总结
---恢复内容开始--- 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容. 在java多线程程序中,所有线程都不允许抛出未捕获的checked excepti ...
- lintcode.46 主元素
给定一个整型数组,找出主元素,它在数组中的出现次数严格大于数组元素个数的二分之一. 注意事项 You may assume that the array is non-empty and the ma ...
- 将数据转成JSON
前言 前面我们在使用Strus2的时候,Struts2自带了组件能够让JavaBean对象.集合转成是JSON,不用我们自己拼接-这是非常方便的.但是,我们不一定使用Struts2框架来做开发呀.因此 ...