ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[已解决] 分行分列,提取不了数据,谢谢四位老师!

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-1-26 11:44 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
liulang0808 发表于 2024-1-26 10:16
新增加那三列,不知道什么逻辑
之前不输出结果部分,做了需改

新增的三列,

其中M和N列里的【今年】是个动态概念,不是特指2024年
而是数据源A列里的【最大年】
而O列,则是A列里的所有年份。

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-1-26 12:06 | 显示全部楼层
liulang0808 发表于 2024-1-26 10:16
新增加那三列,不知道什么逻辑
之前不输出结果部分,做了需改

老师:

4楼的语句,没有考虑C列的STR

TA的精华主题

TA的得分主题

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

老师

Max = IIf(Max < s, s, Max)
这句要报错,说的是Max变量未定义

TA的精华主题

TA的得分主题

发表于 2024-1-26 12:54 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 ykcbf1100 于 2024-1-26 12:56 编辑
lhj323323 发表于 2024-1-26 12:53
老师

Max = IIf(Max < s, s, Max)

加一句吧,我这里是没问题的。

求助.7z

25.05 KB, 下载次数: 9

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-1-26 12:55 | 显示全部楼层
cidanji 发表于 2024-1-26 11:37
我觉得有个歧义的地方,后面绿色的每年统计,是仅STR还是所有标识

老师:
是仅STR

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-1-26 12:59 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

老师:
导出的结果表,没有对:
没有第一列。

MNO三列,
应为每支股票自身的合计
而不是所有股票的合计。

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-1-26 12:59 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
ykcbf1100 发表于 2024-1-26 12:54
加一句吧,我这里是没问题的。

这会不会是2003版本的原因?

TA的精华主题

TA的得分主题

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


没改原代码,重写了一份.rar

25.44 KB, 下载次数: 5

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-1-26 13:32 | 显示全部楼层
Sub test()
    Dim Arr, brr, d As Object, d1 As Object, dd
    Dim k, mx
    Dim i%, j%, m%, n%
    Dim s$, ss$
    Dim sm As Double
    Set d = CreateObject("Scripting.Dictionary")
    Set dd = CreateObject("Scripting.Dictionary")
    Set d1 = CreateObject("Scripting.Dictionary")
    Dim yy
    yy = 0
   
With Sheet1
     Arr = .[a1].CurrentRegion

    ReDim brr(1 To UBound(Arr), 1 To 1000)
    For i = 2 To UBound(Arr) '
       If Arr(i, 3) = "STR" Then
            s = Left(Arr(i, 1), 4): ss = Arr(i, 2) & ""
            If Val(s) > yy Then yy = Val(s)
            If Not d.exists(s) Then Set d(s) = CreateObject("Scripting.Dictionary")
            If Not dd.exists(ss) Then
                Set dd(ss) = CreateObject("Scripting.Dictionary")
            End If
            If Not dd(ss).exists(s) Then
                Set dd(ss)(s) = CreateObject("Scripting.Dictionary")
            End If
            dd(ss)(s)(Val(Arr(i, 1))) = dd(ss)(s)(Val(Arr(i, 1))) + Arr(i, 4)
            zz = dd(ss)(s).keys
            d(s)(ss) = Arr(i, 4) + d(s)(ss)
            d1(ss) = ""
        End If
    Next
   
    ReDim brr(1 To UBound(Arr), 1 To 5000)
    m = 1: n = 1
    brr(1, 1) = "金额"
    For Each k In d.keys
        n = n + 1
        brr(1, n) = k
    Next
    For Each k In d1.keys
        m = m + 1
        brr(m, 1) = k
    Next
    On Error Resume Next
   
   '导入到结果表区域
    .[l1].Resize(m, n) = brr
        
    Arr = .[l1].Resize(m, n + 3)
    Arr(1, n + 1) = "今年最后一笔STR的金额"
    Arr(1, n + 2) = "今年所有STR的金额合计"
    Arr(1, n + 3) = "所有年份STR的金额合计"

    For i = 2 To UBound(Arr)
        
        For j = 2 To n
            ss = Arr(i, 1)
            s = Left(Arr(1, j), 4)
            Arr(i, j) = d(s)(ss)
        Next
        s = yy & ""
        ss = Arr(i, 1) & ""
        If dd(Arr(i, 1)).exsits(s) Then
            wrr = dd(ss)(s).keys
            mx = WorksheetFunction.Max(dd(ss)(s).keys)
            Arr(i, n + 1) = dd(ss)(s)(mx)
            Arr(i, n + 2) = WorksheetFunction.Sum(dd(ss)(s).items)
            sm = 0
            For Each k In dd(ss).keys
                sm = sm + WorksheetFunction.Sum(dd(ss)(k).items)
            Next k
            Arr(i, n + 3) = sm
        End If
        
    Next

    .[l1].Resize(m, n + 3) = Arr
End With

End Sub

TA的精华主题

TA的得分主题

发表于 2024-1-26 13:33 | 显示全部楼层
求助.zip (37.67 KB, 下载次数: 7)
在原来的基础上添加的,有些混乱,供参考。。。。。

评分

1

查看全部评分

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

本版积分规则

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

GMT+8, 2024-11-19 01:37 , Processed in 0.039426 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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