ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

数值累加,但是数据达到几千行就运转不出

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-5-4 10:20 | 显示全部楼层
本帖最后由 3190496160 于 2023-5-4 10:22 编辑
Tongbaby2020 发表于 2023-5-4 09:17
可以将日期横向吗

当然可以,先学会送小花和说声感谢再说吧

TA的精华主题

TA的得分主题

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

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-5-4 16:25 | 显示全部楼层
libo5563 发表于 2023-4-30 21:29
分组,加索引,用table.firstn  尽量减少筛选,别嫌公式写的难看,table.selectrows 不能用,慢在这了,   ...

帮我看下附件的PP行不行,但是我觉得PP里面的语句不知道靠不靠谱。

PP试验1.rar

383.39 KB, 下载次数: 2

TA的精华主题

TA的得分主题

发表于 2023-5-4 16:46 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Sub 分类累计22()
Application.ScreenUpdating = False
Dim ar As Variant
Dim d As Object
Dim br()
Set d = CreateObject("scripting.dictionary")
With Sheets("原数据")
    r = .Cells(Rows.Count, 1).End(xlUp).Row
    If r < 2 Then MsgBox "原数据为空!": End
    ar = .Range("a1:d" & r)
End With
ReDim br(1 To UBound(ar), 1 To UBound(ar) * 4)
k = 2: y = 1
For i = 2 To UBound(ar)
    If Trim(ar(i, 1)) <> "" Then
        t = d(Trim(ar(i, 1)))
        If t = "" Then
            k = k + 1
            d(Trim(ar(i, 1))) = k
            t = k
            br(k, 1) = ar(i, 1)
        End If
        If Trim(ar(i, 2)) <> "" Then
            If IsDate(ar(i, 2)) Then
                lh = d(ar(i, 2))
                If lh = "" Then
                    y = y + 6
                    d(ar(i, 2)) = y
                    lh = y
                    br(1, y - 5) = ar(i, 2)
                    br(2, y - 5) = "预测数量"
                    br(2, y - 4) = "订单数量"
                    br(2, y - 3) = "差异(实际-预测)"
                    br(2, y - 2) = "预测累计"
                    br(2, y - 1) = "订单累计"
                    br(2, y - 0) = "差异累计"
                End If
                br(t, lh - 5) = br(t, lh - 5) + ar(i, 3)
                br(t, lh - 4) = br(t, lh - 4) + ar(i, 4)
                br(t, lh - 3) = br(t, lh - 3) + ar(i, 4) - ar(i, 3)
                If lh = 7 Then
                    br(t, lh) = br(t, lh) + br(t, lh - 5) ''差异累计
                    br(t, lh - 2) = br(t, lh - 2) + ar(i, 3) ''预测累计
                    br(t, lh - 1) = br(t, lh - 1) + ar(i, 4) ''订单累计
                Else
                    br(t, lh) = br(t, lh - 10) + br(t, lh - 4) - br(t, lh - 5)  ''差异累计
                    br(t, lh - 2) = br(t, lh - 2) + br(t, lh - 10) + ar(i, 3) ''预测累计
                    br(t, lh - 1) = br(t, lh - 1) + br(t, lh - 10) + ar(i, 4) ''订单累计
                End If
            End If
        End If
    End If
Next i
With Sheets("目标输出")
    .[a1].CurrentRegion = Empty
    .[a1].Resize(k, y) = br
    .[a1].Resize(k, y).Borders.LineStyle = 1
End With
Set d = Nothing
Application.ScreenUpdating = True
MsgBox "ok!"
End Sub


TA的精华主题

TA的得分主题

发表于 2023-5-4 16:46 | 显示全部楼层
试验.rar (29.63 KB, 下载次数: 5)

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-5-4 16:47 | 显示全部楼层
按最新表格要求写的,结果未核对,先看看,有问题再说吧

TA的精华主题

TA的得分主题

发表于 2023-5-4 17:52 | 显示全部楼层
let
    源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content],
    更改的类型 = Table.TransformColumnTypes(源,{{"物料", type text}, {"日期", type date}, {"预测数量", Int64.Type}, {"订单数量", Int64.Type}}),
    已添加索引 = Table.AddIndexColumn(更改的类型, "外索", 1, 1),
    分组的行 = Table.Group(已添加索引, "物料", {"统计", (x)=> [索引=Table.AddIndexColumn(x,"索引",1),A=List.Buffer(索引[预测数量]),累加= Table.AddColumn(索引,"累加",each List.Sum(List.FirstN(A,[索引])))][累加]}),
    #"展开的“计数”" = Table.ExpandTableColumn(分组的行, "计数", {"物料", "日期", "预测数量", "订单数量", "外索", "索引", "累加"}, {"计数.物料", "计数.日期", "计数.预测数量", "计数.订单数量", "计数.外索", "计数.索引", "计数.累加"})
in
    #"展开的“计数”"

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-5-4 20:49 | 显示全部楼层
Tongbaby2020 发表于 2023-5-4 16:25
帮我看下附件的PP行不行,但是我觉得PP里面的语句不知道靠不靠谱。

能用度量值写的尽量用度量值,除非是想增加透视表行标签,列标签 或切片器里显示 增加分析的维度信息,才写在计算列里,计算列是会增加系统的负担,拖慢效率,度量值只有在使用的时候才计算,不使用时是不计算的,写100个度量值和1个度量值,没什么区别,计算列增加100列 表里行数再多些,速度优势又没有了,只要是计算的,pp能完成的,就不考虑pq
1.PNG

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-5-5 09:12 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

即使是空值也要有累加和差异可以吗

TA的精华主题

TA的得分主题

发表于 2023-5-5 09:15 | 显示全部楼层
Tongbaby2020 发表于 2023-5-5 09:12
即使是空值也要有累加和差异可以吗

不知道你在说什么????????
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-4-30 19:11 , Processed in 0.033176 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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