
Excel VBA 在保留原单元格数据的情况下,将计算的百分比加在后面
发布日期:2021-05-10 04:41:41
浏览次数:31
分类:精选文章
本文共 1227 字,大约阅读时间需要 4 分钟。
不知道你是想解决什么问题?今天我在学习如何利用Excel来处理数据,特别是在需要计算百分比的应用场景。通过一个简单的例子,我构建了一个自动化计算工具。
首先,我希望通过输入一个区域,计算出该区域内所有非空值的总和。然后,对于每一行的值,计算它占总和的百分比,并将结果重写到同一单元格中。为了实现这个目标,我写了一个VBA宏,名字叫cal1
。下面是代码的核心逻辑:
Sub cal1() Dim range1 As Range Set range1 = Application.InputBox("选择区域", Type:=8) x = range1.Rows.Count y = range1.Columns.Count Dim chushu As Integer Dim he As Integer Dim result As String Dim cut As Integer cut = 1 For t = 1 To x If range1(t).Value = "" Then Exit For End If he = 0 For i = 0 To y - 1 he = he + Val(range1(cut + i)) Next i For i = 0 To y - 1 chushu = Val(range1(cut + i)) result = chushu & "(" & Application.Round((chushu / he) * 100, 2) & ")%" range1(cut + i) = result Next i cut = cut + y Next tEnd Sub
这个宏首先提示用户选择需要处理的区域。接下来,x
和y
分别表示行数和列数。最外层循环遍历每一行。如果发现某一行是空的,宏就会提前退出,避免错误。然后,内层循环计算该行的各列值之和。最后,再次内层循环,计算每个值占总和的百分比,并将结果写回原单元格。
在实际使用中,你需要确保所选区域没有空行以及所有数值都为数字。运行宏后,你会看到每个数值旁边都附带了相应的百分比,这样数据就和百分比一起保存起来了。
补充说明:这个方法的主要优势在于它自动处理了数据区域的计算,并且不需要额外输入参数或调整公式。代码结构清晰,循环逻辑简洁,便于后续的维护和扩展。你可以根据实际需求微调参数,比如调整cut
的初始值或百分比的小数点位数。
希望这个解决方案能帮到你!如果有任何问题或需要进一步的帮助,随时欢迎留言。
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2025年04月29日 07时50分30秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
GIT学习笔记
2019-03-07
Linux系统调用过程
2019-03-07
stm32 uv5打开uv4工程错误
2019-03-07
mysql怎么终止一个事务_MySql 中游标,事务,终止存储过程方法总结
2019-03-07
SmartRefreshLayout 上拉加载下拉刷新
2019-03-07
app:processDevDebugResources
2019-03-07
最基础的urllib.request.urlopen()基本使用
2019-03-07
C# 异常
2019-03-07
vs 设置静态库输出路径
2019-03-07
strlen sizeof 快
2019-03-07
c++模板定义malloc
2019-03-07
【Java-27】Java常见错误记录
2019-03-07
andriod 开发错误记录
2019-03-07
生成树协议(二)
2019-03-07
将字符串中的特定字符替换为其他字符
2019-03-07
创建一个简单的SpingBoot项目,并且部署到linux上运行
2019-03-07
【Linux】程序地址空间,分段式、分页式存储理解
2019-03-07
mysql8.0及以上在my.cnf设置sql_mode之后mysql无法启动
2019-03-07
C语言编译错误列表
2019-03-07
万倍币传说不再,价值回归
2019-03-07