Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 3670|回复: 3

求助大神!循环加总出错和格式问题

[复制链接]
发表于 2019-9-11 16:07 | 显示全部楼层 |阅读模式
2学分
求助大神!为什么我用这个代码循环加总数字后得出的结果(K)会和最后一行数据一样?而我如果最后不除100000000则会得出正确的结果。另外如何让最终加总的结果(K)显示起来为逗号分开的数字?试了改格式但好像没用,具体数据看附件

代码如下:
Sub 头寸计算()


Dim i As Integer
Dim k As Double

For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
    Range("g" & i).NumberFormatLocal = "#,##0.00"

    If Range("e" & i) = "" Then
        Exit For

    ElseIf Range("e" & i) = "拆出" Then
        Range("o" & i) = Range("g" & i) * 1
    Else:
    Range("o" & i) = Range("g" & i) * -1
    End If

    Range("o" & i).NumberFormatLocal = "#,##0.0"
    k = (k + Range("o" & i)) / 100000000


Next

    Range("o" & ActiveSheet.UsedRange.Rows.Count + 1) = k
    Range("o" & ActiveSheet.UsedRange.Rows.Count + 1).NumberFormatLocal = "#,##0.00"

End Sub

头寸计算.rar

18.42 KB, 下载次数: 2

最佳答案

查看完整内容

k = (k + Range("o" & i)) / 100000000 改成 k = k + Range("o" & i) / 100000000 没有显示千位符的原因是数据太小,k的最终值只有3点几。
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2019-9-11 16:07 | 显示全部楼层
k = (k + Range("o" & i)) / 100000000 改成 k = k + Range("o" & i) / 100000000
没有显示千位符的原因是数据太小,k的最终值只有3点几。

评分

参与人数 1学分 +2 收起 理由
lsyylw + 2 太强大了

查看全部评分

回复

使用道具 举报

发表于 2019-9-11 17:01 | 显示全部楼层
本帖最后由 hfwufanhf2006 于 2019-9-11 17:03 编辑

我没下载你文件,我就直接说我看法;
1、加总我理解就是求和,除100000000干什么?
2、数字的显示格式由单元格设置来定义,与代码无关。比如数字12345,要显示为12,345或者12,345.00都是在单元格中设置的,你设置成什么格式它就显示为什么样子的。当然用代码来设置格式也是可以的,但这样比较麻烦,很少有人这么做,直接设置最方便。因为代码专注于数据处理,而格式是很个性化的东西,一个人一个要求。如果你实在想要代码设置格式,录制个宏,把代码复制进来就行了,没必要记设置格式的代码;
回复

使用道具 举报

 楼主| 发表于 2019-9-11 17:36 | 显示全部楼层
hfwufanhf2006 发表于 2019-9-11 17:01
我没下载你文件,我就直接说我看法;
1、加总我理解就是求和,除100000000干什么?
2、数字的显示格式由单 ...

因为加总的数字太大,几十亿,除以100000000 可读性强,就好比加总之后是3500000000,这样显示很容易数错,如果除100000000,就能直接显示成35,以亿为单位,这样阅读方便
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-25 17:09 , Processed in 0.195085 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表