ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1692|回复: 21

[求助] 求大神们指点一下

[复制链接]

TA的精华主题

TA的得分主题

发表于 2017-5-14 11:00 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
一个数据表里需要符合多个条件求和不为0的每一个ID下的前七个数据和剩余数据,我把每个ID终止的位置都标注出来了,最重要的是用公式或者VBA能计算求和啊,我想的是循环和条件判断结合,但是没学会VBA编程。数据表里需要根据每个ID结点,计算利润一列里每个ID结束地方的总和,利润为0的跳过,在一个ID内推迟计算。需要计算的是每个ID的前七亏损,前七盈利,自由盈亏就是在七个数据之后,每个ID还有利润的话就继续计算剩下的利润。最后的结果就是希望在有“X”的旁边出现三种求和结果。 QQ截图20170514105826.jpg
自由前7.zip (513.42 KB, 下载次数: 16)

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-5-23 08:32 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
一周了都,还是没人帮我解决一下啊。。大神们在哪里?我是新人啊!

TA的精华主题

TA的得分主题

发表于 2017-5-23 10:45 | 显示全部楼层
或许别人都看不懂你的要求。
你是想在U列为X的单元格左边的三个单元格里返回结果吗?
最好你能在R9:T9和R29:T29单元格中给出正确的结果,并说明是怎么计算的。

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-5-23 15:50 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
半百 发表于 2017-5-23 10:45
或许别人都看不懂你的要求。
你是想在U列为X的单元格左边的三个单元格里返回结果吗?
最好你能在R9:T9和R ...

好哒,我这就标示

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-5-23 16:02 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2017-5-23 21:16 | 显示全部楼层
请测试
Sub TEST()
R = Cells(Rows.Count, 1).End(3).Row
ARR = Range("N2:U" & R)
ReDim BRR(1 To R - 1, 1 To 3)
For I = 1 To R - 1
        N = N + 1
        If N < 8 Then
            S = S + ARR(I, 1)
        Else
            Z = Z + ARR(I, 1)
        End If
If ARR(I, 8) = "X" Then
        If S > 0 Then
            BRR(I, 2) = S
        Else
            BRR(I, 1) = S
        End If
        If Z <> 0 Then BRR(I, 3) = Z
      N = 0: S = 0: Z = 0
    End If
Next
Range("R2").Resize(R - 1, 3) = BRR
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-5-24 11:24 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
半百 发表于 2017-5-23 21:16
请测试
Sub TEST()
R = Cells(Rows.Count, 1).End(3).Row

我试一下。。。

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-5-25 09:00 | 显示全部楼层
半百 发表于 2017-5-23 21:16
请测试
Sub TEST()
R = Cells(Rows.Count, 1).End(3).Row

如果求和项中有0的话,能否计算每个ID中前七个不为0的求和项啊?

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-5-25 09:01 | 显示全部楼层
半百 发表于 2017-5-23 21:16
请测试
Sub TEST()
R = Cells(Rows.Count, 1).End(3).Row

数据中0的个数还是不太少的,求和的时候都不能算0,有几个0就得往下顺延几个计算。

TA的精华主题

TA的得分主题

发表于 2017-5-25 10:00 | 显示全部楼层
魏琳211 发表于 2017-5-25 09:01
数据中0的个数还是不太少的,求和的时候都不能算0,有几个0就得往下顺延几个计算。

加个判断可以吗?
Sub TEST()
R = Cells(Rows.Count, 1).End(3).Row
ARR = Range("N2:U" & R)
ReDim BRR(1 To R - 1, 1 To 3)
For I = 1 To R - 1
    If ARR(I, 1) <> 0 Then
        N = N + 1
        If N < 8 Then
            S = S + ARR(I, 1)
        Else
            Z = Z + ARR(I, 1)
        End If
    End If
    If ARR(I, 8) = "X" Then
        If S > 0 Then
            BRR(I, 2) = S
        Else
            BRR(I, 1) = S
        End If
        If Z <> 0 Then BRR(I, 3) = Z
      N = 0: S = 0: Z = 0
    End If
Next
Range("R2").Resize(R - 1, 3) = BRR
End Sub
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-26 20:33 , Processed in 0.048840 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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