ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 对一列数据求积后,将求积求和

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-2-15 16:07 | 显示全部楼层 |阅读模式
对数据求积后,再对求出的积求和。
但是现在只能做到求积,求和这一步怎么都实现不了,囧
Sub 型材重量计算()
Dim i, j, k, l As Integer
Dim sum1 As Integer
For i = 1 To Cells(65336, 1).End(xlUp).Row
    If Cells(i, 1) = "型材成本" Then
    k = i
    End If
    If Cells(i, 1) = "五金成本" Then
    l = i
    End If
    For j = k + 2 To l - 2
    Cells(j, 24) = Cells(j, 7) * Cells(j, 11)
    sum1 = Cells(j, 24).Value + sum1
    Next j
    Cells(l - 1, 24) = sum1
Next i
End Sub
A@R6S2_FF{9JKZ}XFT.png

单窗报价表 - 副本.rar

136.35 KB, 下载次数: 3

TA的精华主题

TA的得分主题

发表于 2019-2-15 16:54 | 显示全部楼层
  1. Sub 型材重量计算()
  2. Dim i, j, k, l As Integer
  3. Dim sum1 As Double
  4. For i = 1 To Cells(65336, 1).End(xlUp).Row
  5.     If Cells(i, 1) = "型材成本" Then k = i        'K是型材
  6.     If Cells(i, 1) = "五金成本" Then l = i        'L是五金
  7.     If k < l And l = i Then '当满足条件进行循环运算
  8.         sum1 = 0 '初始化
  9.         For j = k + 2 To l - 2
  10.             Cells(j, 24) = Cells(j, 7) * Cells(j, 11)
  11.             sum1 = Cells(j, 24).Value + sum1
  12.         Next j
  13.         Cells(l - 1, 24).Value = sum1
  14.    End If
  15. Next i
  16. End Sub
复制代码

没仔细看,是否这样

TA的精华主题

TA的得分主题

发表于 2019-2-15 17:03 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
  1. Sub 型材重量计算()
  2. Dim i, K, sum
  3. For i = 1 To [A65336].End(xlUp).Row
  4.     If Cells(i, 1) = "合计:" Then Cells(i, 24) = sum: sum = 0
  5.     If Application.IsNumber(Cells(i, 7)) And Cells(i, 1) <> 1 Then K = Cells(i, 7) * Cells(i, 11): Cells(i, 24) = K: sum = K + sum
  6. Next i
  7. End Sub
复制代码

评分

3

查看全部评分

TA的精华主题

TA的得分主题

发表于 2019-2-15 20:35 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

if Application.IsNumber(Cells(i, 7)) then
也可用~~
if IsNumeric(Cells(i, 7)) then


评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2019-2-15 20:41 | 显示全部楼层
准提部林 发表于 2019-2-15 20:35
if Application.IsNumber(Cells(i, 7)) then
也可用~~
if IsNumeric(Cells(i, 7)) then

谢谢部林老师指导,VBA很少涉及,很多函数还不了解,见了不少部林老师写的VBA,可惜没学到精髓,照虎画猫,见笑了。

TA的精华主题

TA的得分主题

发表于 2019-2-15 20:45 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
mmlzh 发表于 2019-2-15 20:41
谢谢部林老师指导,VBA很少涉及,很多函数还不了解,见了不少部林老师写的VBA,可惜没学到精髓,照虎画猫 ...

哈! 我也是見樣學樣來的, 不會無中生有~~~


TA的精华主题

TA的得分主题

发表于 2019-2-15 20:48 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2019-2-15 20:55 | 显示全部楼层
函数前面加上对象,是编程的规范之一,有助于阅读。

TA的精华主题

TA的得分主题

发表于 2019-2-15 21:25 | 显示全部楼层
只是做个样子,全录下来太麻烦,会超出附件大小限制。合并就不录了
CCC.gif

TA的精华主题

TA的得分主题

发表于 2019-2-16 11:14 | 显示全部楼层
計算列位置及方式不盡相同????
Sub TEST()
Dim xR As Range, T$, S, xSum, C%, K%
For Each xR In Range([A1], [A65536].End(3))
    If InStr("/型材成本/五金成本/玻璃成本/其它费用/", xR) Then T = xR: C = 0: K = 1: GoTo 101
    If K = 1 Then K = 2: GoTo 101
    If Right(xR, 3) = "合计:" And C > 0 Then xR(1, C) = xSum: xSum = 0: C = 0: K = 0: GoTo 101
    Select Case T
           Case "型材成本"
                S = Val(xR(1, 7)) * Val(xR(1, 11)) * Val(xR(1, 16)) / 1000
                xR(1, 22) = S: xSum = xSum + S: C = 22
           Case "五金成本"
                 S = Val(xR(1, 13)) * Val(xR(1, 17))
                xR(1, 22) = S: xSum = xSum + S: C = 22
           Case "玻璃成本"
                 S = Val(xR(1, 15)) * Val(xR(1, 18))
                xR(1, 23) = S: xSum = xSum + S: C = 23
           Case "其它费用"
                S = Val(xR(1, 6)) + Val(xR(1, 21))
                xSum = xSum + S: C = 6
    End Select
101: Next
End Sub




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

本版积分规则

关闭

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

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

GMT+8, 2024-4-25 07:59 , Processed in 0.041181 second(s), 17 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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