数据库

首页 » 常识 » 预防 » SUM工作表函数及聚合函数的应用VBA
TUhjnbcbe - 2024/12/31 20:36:00
北京哪家医院看白癜风 http://baidianfeng.39.net/index.html
《如何学习VBA》,是我对初学人员学习方法的辅导,在其中,我讲到了很多有关VBA的学习方法及在教程中一些知识结构的补充说明。虽然是辅助教材,但也突出了我编程思想:积木编程;及我对于VBA的应用定义:VBA是实现个人小型数据自动化的有效工具(手段)。今日的内容是第36讲:SUM作为一般函数及聚合函数的应用。3.3.2SUM作为一般函数及聚合函数的应用VBA解决方案系列丛书中,我以实际场景模拟的方式讲解如何利用代码提高自己的工作效率,在现实工作中会面临很多实际问题,各种问题如何快速准确解决是VBA的课题。VBA作为一种寄生语言,在OFFICE应用中起着非常重要的作用。我们每一次的数据处理其实都是数据的组织和重新结合的过程,我称之为“重组”,这是非常重要的概念,数据重组后可以发现我们需要了解的信息,进而实现管理的优化。这种数据重组过程就是实现数据自动化处理过程。今日和大家要谈的是在实现数据自动化处理过程中一个常见函数SUM的价值。这个函数在工作表中应用非常广泛,可以说和EXCEL是共生关系,在VBA代码中直接利用或许少些,但在数据库中又体现了自己强大的生命力。下面我们看看实例:本实例讲解利用了“VBA代码方案之十三:如何利用VBA在单元格中录入公式”的内容及VBA数据库解决方案中聚合函数以及工作表连接的相关内容,就不再一一截图说明,今日只是就下面实例内容讲解:实例,在工作表sheet1中有很多数据,杂乱无章,现在要求出每列数据的和,结果放在第二个工作表中,该如何解决?今日我讲解两套方案,让大家看到SUM函数强大的生命力;方案一:利用工作表函数解决思路:我们在第二个工作中录入一个工作表函数,这个工作表函数要等于对应的第一个工作表列的总和,问题是如何能自动地计算出第一个工作表中有多少列,以及工作表函数在VBA中如何表示。下面看我给出的代码:SubMYNZ()Sheets(SHEET2).Selecti=1k=1Range(a2:aa2).ClearContentsDoWhileSheets(SHEET1).Cells(1,i)LL=Sheets(SHEET1).Cells(1,i).AddressTT=Mid(LL,2,Application.WorksheetFunction.Find($,LL,2)-2)TT=TT:TTCells(2,k).Formula==SUM(Sheet1!TT)i=i+1k=k+1LoopEndSub代码解析:1上述代码实现了用VBA录入公式的方法,这个方法在《VBA代码解决方案》中有讲解了。2DoWhileSheets(SHEET1).Cells(1,i)LL=Sheets(SHEET1).Cells(1,i).AddressTT=Mid(LL,2,Application.WorksheetFunction.Find($,LL,2)-2)TT=TT:TTCells(2,k).Formula==SUM(Sheet1!TT)i=i+1k=k+1Loop上述的循环语句实现了在第二个工作表中录入工作表函数的方法。其中LL=Sheets(SHEET1).Cells(1,i).Address将获取单元格的地址,此地址是$a$1的格式。我们要从中提取出列的符号。3Cells(2,k).Formula==SUM(Sheet1!TT)上述代码实现了公式的录入。此处的TT变量来自于上面的列的符号提取。下面看代码的输出:方案二:利用数据库的聚合函数来解决:思路:利用数据聚合函数SUM来解决,这是数据库方案的内容,思路更加清晰。难点是对数据连接及SQL语句的写法,好在我希望大家能利用我提出的搭积木方法,代码语句尽可能不要去写,而是去复制和修改。下面看我给出的代码:SubMYNZS()Sheets(SHEET1).SelectDimcnADO,rsADO,ZAsObjectDimstrPath,strTable,strSQLAsStringSetcnADO=CreateObject(ADODB.Connection)strPath=ThisWorkbook.FullNamestrTable=[Sheet1$]i=1DoWhileSheets(SHEET1).Cells(1,i)TT=TTsum(fi),i=i+1LoopTT=Left(TT,Len(TT)-1)建立连接,提取数据cnADO.Openprovider=Microsoft.ACE.OLEDB.12.0;extendedproperties=excel8.0;hdr=no;imex=1;datasource=strPathstrSQL=selectTTfromstrTableSetZ=cnADO.Execute(strSQL)Sheets(SHEET2).SelectRange(a5:aa5).ClearContents[a5].CopyFromRecordsetZcnADO.CloseSetcnADO=NothingEndSub代码解析:1上述过程代码看似多些,但其实非常的清晰,利用一个循环完成列数的聚合函数的书写,然后利用SQL语句完成一个查询,直接的输出结果。2DoWhileSheets(SHEET1).Cells(1,i)TT=TTsum(fi),i=i+1LoopTT=Left(TT,Len(TT)-1)上述代码是完成了聚合函数SUM的书写过程,不清楚的请查阅《VBA数据库解决方案》。3cnADO.Openprovider=Microsoft.ACE.OLEDB.12.0;extendedproperties=excel8.0;hdr=no;imex=1;datasource=strPathstrSQL=selectTTfromstrTableSetZ=cnADO.Execute(strSQL)建立连接实现查询4[a5].CopyFromRecordsetZ提出数据。下面看输出的结果:两种方案借助于SUM函数得到了一样的结果,可见,SUM函数在数据的统计中,无论是EXCEL的工作表计算,还是VBA代码的利用,还是数据库的利用,都有着非常方便的实用性,我们要发掘其中的实用方法,好好利用。备注:《VBA数据库解决方案》是教程的中级部分,此处是帮助初学人员能感受到VBA深入学习后的魅力。第7套教程:VBA之EXCEL应用第1套教程:VBA代码解决方案第3套教程:VBA数组与字典解决方案第2套教程:VBA数据库解决方案第6套教程:VBA信息获取与处理第5套教程:VBA中类的解读和利用第8套教程:VBA之Word应用(年5月份推出)上述教程的学习顺序:①7→1→3→2→6→5或者7→4→3→2→6→5。②7→8如何学习VBA呢?概括的说就是:学习过程中要信、解、受、持,更要有回向的业力。无论您在学习的任何阶段,都要对照教程的知识点加持自己的实际工作,总会有丰厚的收获。(W:VBA)教程学习顺序是7,1(或4),3,2,6,5。第7套《VBA之Excel应用》是对VBA基本的讲解;第1(或4)套《VBA代码解决方案》是《VBA之Excel应用》的提高;第3套《VBA数组与字典解决方案》是VBA应用的专题讲解,教程中讲解的专题是数组和字典,大家会在这套教程中看到非常全面的数组与字典的应用;第2套《VBA数据库解决方案》也是VBA应用的专题讲解,教程讲解的专题是数据库,大家会在这套教程中看到VBA连接Excel与accdb的全面应用;第6套《VBA信息获取与处理》是整个VBA应用的提高;第5套《VBA中类的解读及应用》是VBA的最高理论“类”“接口技术”的讲解。第8套教程《VBA之Word应用》需要在第7套教程之后学习。如果说《VBA之EXCEL应用》是大家认识VBA的阶段,那么《VBA代码解决方案》就要求大家能理解VBA,理解我推出的“积木编程”思想,理解我对VBA应用的定义:VBA是实现个人小型数据自动化的有效工具(手段)。
1
查看完整版本: SUM工作表函数及聚合函数的应用VBA