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 t
End Sub

这个宏首先提示用户选择需要处理的区域。接下来,xy分别表示行数和列数。最外层循环遍历每一行。如果发现某一行是空的,宏就会提前退出,避免错误。然后,内层循环计算该行的各列值之和。最后,再次内层循环,计算每个值占总和的百分比,并将结果写回原单元格。

在实际使用中,你需要确保所选区域没有空行以及所有数值都为数字。运行宏后,你会看到每个数值旁边都附带了相应的百分比,这样数据就和百分比一起保存起来了。

补充说明:这个方法的主要优势在于它自动处理了数据区域的计算,并且不需要额外输入参数或调整公式。代码结构清晰,循环逻辑简洁,便于后续的维护和扩展。你可以根据实际需求微调参数,比如调整cut的初始值或百分比的小数点位数。

希望这个解决方案能帮到你!如果有任何问题或需要进一步的帮助,随时欢迎留言。

上一篇:【解决】TLS/SSLError问题导致无法使用pip或conda安装软件包
下一篇:PyQt5 Pyinstaller Failed to execute script部分解决方法

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2025年04月29日 07时50分30秒