3.3.2:SUM作为一般函数及聚合函数的应用

【分享成果,随喜正能量】我们很多道友没受过什么苦,或受不了一句话、一点气,总想悠悠自在成佛。或是念上几十部经就想换取什么,法宝是无价的!你拿有价来换,不但换不到,还丧失了功德。应当不退初心,遇到恶缘,把它看作考验,你能不能定得住? 人身难得,佛法难闻,百念千生,要坚固自己的信愿力,莫退信心。。

我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的劳动效率,而且可以提高数据处理的准确度。我推出的VBA系列教程共九套和一部VBA汉英手册,现在已经全部完成,希望大家利用、学习。

如果您只是一般的职场VBA需求,可以打包选择7.1.3.9教程+汉英手册,第7套教程是入门,第1套教程是入门后的提高,第3套教程字典是必备的VBA之精华,第9套教程是实用的典型案例讲解。这四套教程内容掌握后足以处理一般工作中的问题,实际写代码的时候再辅助代码汉英手册,足矣!如果您想进一步提高,就需要选择高级阶段的教程了。

VBA是面向对象编程的语言,博大精深。很多朋友咨询VBA的学习方法,我会陆续给大家讲解一些我的经验,大家可以慢慢体会。今日的内容是:3.3.2:SUM作为一般函数及聚合函数的应用a98f15496224b5150ad1db67b76261ba.jpeg

3.3 学习提高过程中的思考(贯彻我的编程思想)

在学习过程中,我们要同时思考几个问题,这也是我们学习过程中的提高。

3.3.2:SUM作为一般函数及聚合函数的应用

VBA解决方案系列丛书中,我以实际场景模拟的方式讲解如何利用代码提高自己的工作效率,在现实工作中会面临很多实际问题,各种问题如何快速准确的解决是VBA的课题。VBA作为一种寄生语言,在OFFICE应用中起着非常重要的作用。

我们每一次的数据处理其实都是数据的组织和重新结合的过程,我称之为“重组”,这是非常重要的概念,数据重组后可以发现我们需要了解的信息,进而实现管理的优化。这种数据重组过程就是实现数据自动化处理过程。

今日和大家要谈的是在实现数据自动化处理过程中一个常见函数SUM的价值。这个函数在工作表中应用非常广泛,可以说和EXCEL是共生关系,在VBA代码中直接利用或许少些,但在数据库中又体现了自己强大的生命力。

下面我们看看实例:本实例讲解利用了“VBA代码方案之十三:如何利用VBA在单元格中录入公式”的内容及VBA数据库解决方案中聚合函数及工作表连接的相关内容,就不再一一截图说明,今日只是就下面实例内容讲解:

实例,在工作表sheet1中有很多数据,杂乱无章,现在要求出每列数据的和,结果放在第二个工作表中,该如何解决?

d9f27bb92d782aff5d1e965d2ca917b8.jpeg

今日我讲解两套方案,让大家看到SUM函数强大的生命力;

方案一:利用工作表函数解决

思路:我们在第二个工作中录入一个工作表函数,这个工作表函数要等于对应的第一个工作表列的总和,问题是如何能自动地计算出第一个工作表中有多少列,以及工作表函数在VBA中如何表示。下面看我给出的代码:

Sub MYNZ()

    Sheets("SHEET2").Select

    i = 1

    k = 1

    Range("a2:aa2").ClearContents

&nbsp;&nbsp;&nbsp;&nbsp;Do While Sheets("SHEET1").Cells(1, i) <> ""

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LL = Sheets("SHEET1").Cells(1, i).Address

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TT = Mid(LL, 2, Application.WorksheetFunction.Find("$", LL, 2) - 2)

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TT = TT & ":" & TT

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Cells(2, k).Formula = "=SUM(Sheet1!" & TT & ")"

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i = i + 1

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;k = k + 1

&nbsp;&nbsp;&nbsp;&nbsp;Loop

End Sub

代码解析:

1 上述代码实现了用VBA录入公式的方法,这个方法在《VBA代码解决方案》中有讲解了。

2 Do While Sheets("SHEET1").Cells(1, i) <> ""

LL = Sheets("SHEET1").Cells(1, i).Address

TT = Mid(LL, 2, Application.WorksheetFunction.Find("$", LL, 2) - 2)

TT = TT & ":" & TT

Cells(2, k).Formula = "=SUM(Sheet1!" & TT & ")"

i = i + 1

k = k + 1

Loop

上述的循环语句实现了在第二个工作表中录入工作表函数的方法。其中LL = Sheets("SHEET1").Cells(1, i).Address 将获取单元格的地址,此地址是$a$1的格式。我们要从中提取出列的符号。

3 Cells(2, k).Formula = "=SUM(Sheet1!" & TT & ")"

上述代码实现了公式的录入。此处的TT变量来自于上面的列的符号提取。

下面看代码的输出:

cb159373b44e393cfc9c9a5da4cc8bd2.jpeg

方案二:利用数据库的聚合函数来解决:

思路:利用数据聚合函数SUM来解决,这是数据库方案的内容,思路更加清晰。难点是对数据连接及SQL语句的写法,好在我希望大家能利用我提出的搭积木方法,代码语句尽可能不要去写,而是去复制和修改。

下面看我给出的代码:

Sub MYNZS()

&nbsp;&nbsp;&nbsp;&nbsp;Sheets("SHEET1").Select

&nbsp;&nbsp;&nbsp;&nbsp;Dim cnADO, rsADO, Z As Object

&nbsp;&nbsp;&nbsp;&nbsp;Dim strPath, strTable, strSQL As String

&nbsp;&nbsp;&nbsp;&nbsp;Set cnADO = CreateObject("ADODB.Connection")

&nbsp;&nbsp;&nbsp;&nbsp;strPath = ThisWorkbook.FullName

&nbsp;&nbsp;&nbsp;&nbsp;strTable = "[Sheet1$]"

&nbsp;&nbsp;&nbsp;&nbsp;i = 1

&nbsp;&nbsp;&nbsp;&nbsp;Do While Sheets("SHEET1").Cells(1, i) <> ""

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TT = TT & "sum(f" & i & "),"

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i = i + 1

&nbsp;&nbsp;&nbsp;&nbsp;Loop

&nbsp;&nbsp;&nbsp;&nbsp;TT = Left(TT, Len(TT) - 1)

&nbsp;&nbsp;&nbsp;&nbsp;'建立连接,提取数据

&nbsp;&nbsp;&nbsp;&nbsp;cnADO.Open "provider=Microsoft.ACE.OLEDB.12.0;extended properties='excel 8.0;hdr=no;imex=1';data source=" & strPath

&nbsp;&nbsp;&nbsp;&nbsp;strSQL = "select " & TT & " from " & strTable

&nbsp;&nbsp;&nbsp;&nbsp;Set Z = cnADO.Execute(strSQL)

&nbsp;&nbsp;&nbsp;&nbsp;Sheets("SHEET2").Select

&nbsp;&nbsp;&nbsp;&nbsp;Range("a5:aa5").ClearContents

&nbsp;&nbsp;&nbsp;&nbsp;[a5].CopyFromRecordset Z

&nbsp;&nbsp;&nbsp;&nbsp;cnADO.Close

&nbsp;&nbsp;&nbsp;&nbsp;Set cnADO = Nothing

End Sub

代码解析:

1上述过程代码看似多些,但其实非常的清晰,利用一个循环完成列数的聚合函数的书写,然后利用SQL语句完成一个查询,直接的输出结果。

2 &nbsp;Do While Sheets("SHEET1").Cells(1, i) <> ""

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TT = TT & "sum(f" & i & "),"

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i = i + 1

&nbsp;&nbsp;&nbsp;&nbsp;Loop

&nbsp;&nbsp;&nbsp;&nbsp;TT = Left(TT, Len(TT) - 1)

上述代码是完成了聚合函数SUM的书写过程,不清楚的请查阅《VBA数据库解决方案》。

3 cnADO.Open "provider=Microsoft.ACE.OLEDB.12.0;extended properties='excel 8.0;hdr=no;imex=1';data source=" & strPath

&nbsp;&nbsp;&nbsp;strSQL = "select " & TT & " from " & strTable

&nbsp;&nbsp;&nbsp;Set Z = cnADO.Execute(strSQL)

建立连接实现查询

4 &nbsp;[a5].CopyFromRecordset Z

提出数据。

下面看输出的结果:

3044023388e0eb4f34f593a210ed7505.jpeg

两种方案借助于SUM函数得到了一样的结果,可见,SUM函数在数据的统计中,无论是EXCEL的工作表计算,还是VBA代码的利用,还是数据库的利用,都有着非常方便的实用性,我们要发掘其中的实用方法,好好利用。

备注:《VBA数据库解决方案》是教程的中级部分,此处是帮助初学人员能感受到VBA深入学习后的魅力。

ØSUM函数强大的生命力.xlsm

22b565f05196d895e86ff2136f1b1609.jpeg

我20多年的VBA实践经验,全部浓缩在下面的各个教程中:

36acf3d07f8367089c30d04687a0ddb1.jpeg


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/107898.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【SpringBoot学习笔记02】静态资源

Spring Boot 通过 MVC 的自动配置类 WebMvcAutoConfiguration 为这些 WebJars 前端资源提供了默认映射规则&#xff0c;部分源码如下。 jar包&#xff1a; JAR 文件就是 Java Archive File&#xff0c;顾名思意&#xff0c;它的应用是与 Java 息息相关的&#xff0c;是 Java 的…

IP编址数据转发(md版)

IP编址&数据转发 一、IP编址1.1、二进制、十进制和十六进制1.2、进制之间的转换1.3、IP编址1.4、子网掩码1.5、二进制和十进制转换1.6、IP地址分类1.7、IP地址类型1.8、地址规划 二、VLSM与CIDR2.1、有类IP编址的缺陷2.2、变长子网掩码 VLSM2.3、缺省情况下的掩码2.4、子网…

vscode远程调试

安装ssh 在vscode扩展插件搜索remote-ssh安装 如果连接失败&#xff0c;出现 Resolver error: Error: XHR failedscode 报错&#xff0c;可以看这篇帖子vscode ssh: Resolver error: Error: XHR failedscode错误_阿伟跑呀的博客-CSDN博客 添加好后点击左上角的加号&#xff0…

从探索到明确,比特币与美股等传统资产相关性如何?

早期阶段&#xff0c;比特币经历了一段摸索和模仿的时期&#xff0c;这是因为当比特币刚刚出现时&#xff0c;比特币的价值和用途在这一阶段并不明确&#xff0c;人们对其性质和潜力还不太了解。 然而&#xff0c;随着时间的推移&#xff0c;比特币去中心化、固定供应上限等特点…

解决报错: Could not initialize class com.platform.cache.J2CacheUtils

今天运行一个比较久远的SSM项目&#xff0c;访问接口时报错&#xff1a; Could not initialize class com.platform.cache.J2CacheUtils 找了半天也没有发现问题所在&#xff0c;突然发现报错里面有ShiroFilter字样&#xff0c;然后想起以前shiro好像是要跟redis对接&#xff0…

【C++】priority_queue优先级队列

&#x1f3d6;️作者&#xff1a;malloc不出对象 ⛺专栏&#xff1a;C的学习之路 &#x1f466;个人简介&#xff1a;一名双非本科院校大二在读的科班编程菜鸟&#xff0c;努力编程只为赶上各位大佬的步伐&#x1f648;&#x1f648; 目录 前言一、priority_queue的介绍二、pr…

Aspose.Tasks for .NET V23Crack

Aspose.Tasks for .NET V23Crack 改进了大型项目的内存占用。 添加了API&#xff0c;允许您在应用程序无法访问系统字体文件夹时指定用户的字体文件夹。 Aspose.Tasksfor.NET是处理MicrosoftProject文件的可靠的项目管理API。API支持在不依赖Microsoft Project的情况下读取、写…

为 Python 创建别名

有时您有自己喜欢的 Python 版本&#xff0c;并且不想在新版本到来时放弃它。 您的旧脚本可能无法在新版本的 Python 上运行&#xff0c;或者旧版本上的项目太多&#xff0c;将它们迁移到新版本是一场马拉松。 在这种情况下&#xff0c;您决定保留两个版本的 Python。 在本文中…

功能测评-InsCode Stable Diffusion 美图活动一期

一、 Stable Diffusion 模型在线使用地址&#xff1a; https://inscode.csdn.net/inscode/Stable-Diffusion 进入之后点击运行并使用&#xff0c;会弹出一个购买算力资源的窗口。由于是试用&#xff0c;不涉及到连续生成多张图片等场合&#xff0c;因此算力足够用了&#xff…

基于SpringBoot实现MySQL与Redis的数据最终一致性

问题场景 在并发场景下&#xff0c;MySQL和Redis之间的数据不一致性可能成为一个突出问题。这种不一致性可能由网络延迟、并发写入冲突以及异常情况处理等因素引起&#xff0c;导致MySQL和Redis中的数据在某些时间点不同步或出现不一致的情况。数据一致性问题的级别可以分为三…

wazuh--sql检测

官网&#xff1a;Virtual Machine (OVA) - Installation alternatives Wazuh(Wazuh The Open Source Security Platform)&#xff1a;是一整套基于ossec安全检测工具和EFK日志工具构成的终端安全管理工具。不管是将其分类至HIDS&#xff0c;还是EDR&#xff0c;它都是一套通过…

QCC_BES 音频重采样算法实现

+V hezkz17进数字音频系统研究开发交流答疑群(课题组) 这段代码是一个用于将音频数据进行立体声重采样的函数。以下是对代码的解读: 函数接受以下参数: pcm_buf:16位有符号整型的音频缓冲区,存储了输入的音频数据。pcm_len:音频缓冲区的长度。mic1:16位有符号整型的音频…

本地私有仓库、harbor私有仓库部署与管理

本地私有仓库、harbor私有仓库部署与管理 一、本地私有仓库1.本地私有仓库简介2.搭建本地私有仓库3.容器重启策略介绍 二、harbor私有仓库部署与管理1.什么是harbor2.Harbor的特性3.Harbor的构成4.harbor部署及配置5.客户端测试 三、Harbor维护1.创建2.普通用户操作私有仓库3.日…

不用循环数组,js+html实现贪吃蛇

功能描述&#xff1a;每走10步随机改变一个方方向&#xff0c;当键盘按下方向键 w,s,a,d时&#xff0c;使用键盘方向控制蛇的移动&#xff0c;蛇头每撞到一次自身时改变屏幕颜色&#xff0c;蛇头碰到边界时从另一边回来。 实现思路&#xff1a;用个30大小的数组存放每个结点&a…

学习率调整策略

学习率是可以控制更新的步伐的。 我们在训练模型的时候&#xff0c;一般开始的时候学习率会比较大&#xff0c;这样可以以一个比较快的速度到达最优点的附近&#xff0c;然后再把学习率降下来&#xff0c; 缓慢的去收敛到最优值。学习率前期要大&#xff0c;后期要小 在学习学…

命令行环境

sleep 20 延迟20秒 这个是操作系统的信号机制 ctrl z ^z可以恢复 jobs 可以查看 终端运行工作列表&#xff0c;bg可以将暂停的作业重新运行 通过kill暂停作业 通过 -KILL 之后才可以将 -HUP 作业悬挂起来 终端复路多用 会话 ^a p 上一个会话 ^ a n 下一个会话 别名 左右不能…

学习中ChatGPT的17种用法

ChatGPT本质上是一个聊天工具&#xff0c;旧金山的人工智能企业OpenAI于2022年11月正式推出ChatGPT。那么&#xff0c;ChatGPT与其他人工智能产品相比有什么特殊呢&#xff1f; 它除了可以回答结构性的问题&#xff0c;例如语法修正、翻译和查找答案之外。最关键的是它能够去解…

LeetCode 1267. 统计参与通信的服务器

【LetMeFly】1267.统计参与通信的服务器 力扣题目链接&#xff1a;https://leetcode.cn/problems/count-servers-that-communicate/ 这里有一幅服务器分布图&#xff0c;服务器的位置标识在 m * n 的整数矩阵网格 grid 中&#xff0c;1 表示单元格上有服务器&#xff0c;0 表…

UE4 材质学习笔记

CheapContrast与CheapContrast_RGB都是提升对比度的&#xff0c;一个是一维输入&#xff0c;一个是三维输入&#xff0c;让亮的地方更亮&#xff0c;暗的地方更暗&#xff0c;不像power虽然也是提升对比度&#xff0c;但是使用过后的结果都是变暗或者最多不变&#xff08;值为1…

【Java基础增强】Stream流

1.Stream流 1.1体验Stream流【理解】 案例需求 按照下面的要求完成集合的创建和遍历 创建一个集合&#xff0c;存储多个字符串元素 把集合中所有以"张"开头的元素存储到一个新的集合 把"张"开头的集合中的长度为3的元素存储到一个新的集合 遍历上一步得…