公司用于项目号的合成,怕忘记,特此放上这里。若能帮助其它道友,善莫大焉。

比如: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中合成分散数据方法的更多相关文章

  1. [转]VB.net中 excel 的range方法

    本文转自:https://blog.csdn.net/bigheadsheep/article/details/7711235 第五章 Range对象基本操作应用示例(1)Range对象可能是VBA代 ...

  2. VB.NET中使用代表对方法异步调用

    按照我们常规的思维方式,计算机应该是干完一件事,然后再干下一件.用术语来说,这种执行任务的方式叫做同步执行(Synchronous Execution).既然这样,那么为什么要引入异步执行的概念呢? ...

  3. c#.net与vb.net中读写Cookie的方法!

    Cookie (HttpCookie的实例)提供了一种在 Web 应用程序中存储用户特定信息的方法.例如,当用户访问您的站点时,您可以使用 Cookie 存储用户首选项或其他信息.当该用户再次访问您的 ...

  4. 教你几种在SQLServer中删除重复数据方法(转)

    转载地址:http://www.jb51.net/article/22980.htm 方法一 复制代码 代码如下: declare @max integer,@id integer declare c ...

  5. JAVA中读取xls数据方法介绍

    用例编号(UI-0001) 用例名称({验证页面跳转|验证元素文本}-简要明确表述) 验证类型 是否执行 初始URL 初始元素xpath 目标元素xpath 目标元素属性 期望结果 UI-0001 验 ...

  6. 随机获得MySQL数据库中100条数据方法 驾照题库项目 MVC架构 biz业务层的实现类 根据考试类型rand或order通过dao数据访问层接口得到数据库中100或全部数据

    package com.swift.jztk.biz; import java.util.Collections; import java.util.Comparator; import java.u ...

  7. mysql互换表中两列数据方法

    1.创建表及记录用于测试 ) unsigned ) ,) unsigned ,) unsigned NOT NULL COMMENT '现价', PRIMARY KEY (`id`) ) ENGINE ...

  8. VB.NET中DataGridView控件

    VB.NET中对于表格数据的显示经常使用到DataGridView控件,其以丰富多样的数据表呈现形式被程序猿喜爱. 本人在做一个小系统中运用DataGridView控件的部分属性,这些功能的使用在使用 ...

  9. VB.NET中使用Linq TO SQL添加数据后获得自增长列ID

    VB.NET中使用Linq TO SQL添加数据后获得自增长列ID: Dim tempOrdre As New Order With { .CustomerID = cmbCustomerName.S ...

随机推荐

  1. Maven01——简介、安装配置、入门程序、项目构建和依赖管理

    1 Maven的简介 1.1 什么是maven 是apache下的一个开源项目,是纯java开发,并且只是用来管理java项目的 Svn eclipse   maven量级 1.2 Maven好处 同 ...

  2. C和C++中的名字空间和作用域

    C和C++中的名字空间和作用域 C语言中有名字空间这个概念吗? 提到名字空间(或者可能更普遍的叫法,命名空间),很可能先想到的是C++,甚至是C#.C中没有名字空间吧?一开始我也是这样认为的,直到我看 ...

  3. 【C++小白成长撸】--矩阵乘法程序

    矩阵乘法是大学矩阵课程中,相比矩阵加减法比较困难的部分. 矩阵乘法的原理: 矩阵乘法在代码中实现 得到目标矩阵的一个元素,涉及两个求和符号,一个求和符号一个for循环,两个求和符号两个for循环,再加 ...

  4. html5中的video标签和audio标签

    不管是否承认,flash早已不像过往那样如日中天了.亚马逊全面放弃flash.苹果放弃flash.安卓也放弃了移动端的flash支持.事实上flash已经不太适合web开发了,因为HTML5中的vid ...

  5. 【Alpha】——Third Scrum Meeting

    一.今日站立式会议照片 二.每个人的工作 成员 昨天已完成的工作 今天计划完成的工作 李永豪 基本完成添加功能 继续完善添加功能 郑靖涛 基本完成删除功能 继续完善删除功能 杨海亮 基本完成查找功能 ...

  6. 201521123088《JAVA程序设计》第8周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 1.2 选做:收集你认为有用的代码片段 2. 书面作业 本次作业题集集合 1.List中指定元素的删除(题目4 ...

  7. 201521123049 《JAVA程序设计》 第4周学习总结

    1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. ###1.类型转换(cast):是将两种不同类型的变量进行转换,但不能随意强制转换,随意强制 ...

  8. 201521123060《Java程序设计》第2周学习总结

    1. 本周学习总结 a.进一步熟悉了Eclipse的使用和java程序的编写: b.学习了java数据的基本类型:整数类型,浮点类型等: c.学习了算数运算符,赋值运算符,位运算符,关系运算符,逻辑运 ...

  9. 201521123059 《Java程序设计》第十四周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多数据库相关内容. 1.关系型数据库 --建立表格时表中一列中的数据类型必须一致.关系表中的行必须是唯一的,列是不可分的,某些行的某 ...

  10. 201521123027 <java程序设计>第11周学习总结

    1.本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 2.书面作业 1.互斥访问与同步访问 完成题集4-4(互斥访问)与4-5(同步访问) 1.1 除了使用synchro ...