ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

求助,求老司机带路,求VBA代码实现Sheet1曲线数据汇总到Sheet2,谢谢!

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-11-18 01:48 | 显示全部楼层 |阅读模式
UC截图20191118003255.png UC截图20191118012934.png
批量曲线提取.rar (143.92 KB, 下载次数: 6)

TA的精华主题

TA的得分主题

发表于 2019-11-18 08:16 | 显示全部楼层
本帖最后由 约定的童话 于 2019-11-18 15:06 编辑

这个有意思哈,干嘛这样取值啊?Sub 取值()
    Dim i, n, arr, brr
    arr = Sheet1.UsedRange
    ReDim brr(1 To 38, 1 To UBound(arr, 2))
    For j = 1 To UBound(arr, 2) Step 8
        m = m + 1
        For i = 1 To UBound(arr)
            n = n + 1
            If n = 1 Then
                brr(n, m) = arr(1, j + 1)
            Else
                If k = 7 Then
                    h = h - 1
                    brr(n, m) = arr(i, j + h - 1)
                    If h = 1 Then k = 1
                Else
                    k = k + 1
                    brr(n, m) = arr(i, j + k - 1)
                    If k = 7 Then h = 7
                End If
            End If
        Next
        k = 0: h = 0: n = 0
    Next
    Cells.Clear
    [a4].Resize(38, UBound(arr, 2)) = brr
    MsgBox "处理完毕!", , ""
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-11-18 22:32 | 显示全部楼层
约定的童话 发表于 2019-11-18 08:16
这个有意思哈,干嘛这样取值啊?Sub 取值()
    Dim i, n, arr, brr
    arr = Sheet1.UsedRange

首先谢谢VBA经验丰富的高手:      这么说吧!本人自己折腾一个学习VBA项目,其中的估计一个VBA程序100多行代码,可以东拼西凑复制书本的代码再上             VBA论坛求教!
              问题是不一定有高手回复,如果拆开来分小段求助,成功的机率比较高,
                    现学习目标是看懂高手的50行VBA代码并自己加写上注释,

686157814278269840.jpg 94944055509442638.jpg


TA的精华主题

TA的得分主题

 楼主| 发表于 2019-11-18 23:14 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
约定的童话 发表于 2019-11-18 08:16
这个有意思哈,干嘛这样取值啊?Sub 取值()
    Dim i, n, arr, brr
    arr = Sheet1.UsedRange

请问高手,有几个声明数据类型的问题想不明白,请教下?
UC截图20191118230753.png UC截图20191118231206.png

TA的精华主题

TA的得分主题

发表于 2019-11-19 08:17 | 显示全部楼层
心云德乐 发表于 2019-11-18 23:14
请问高手,有几个声明数据类型的问题想不明白,请教下?

原来是学习的啊:brr不能加括号,下面我要重新定义brr的维度,Redim那句,brr的维度大小需要根据ARR的维度来确定,必须在ARR确定后才能定义,所以不能提前加括号,不然报错,你可以试一下!里面的j,k,m,n都是&型变量,这个符号按照规范化书写必须要加的,个人习惯,至于变量类型这个你可以看下基础资料!代码的重点在逻辑循环这上面,你F8一句句看下,然后慢慢理解!

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-11-20 01:10 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
约定的童话 发表于 2019-11-19 08:17
原来是学习的啊:brr不能加括号,下面我要重新定义brr的维度,Redim那句,brr的维度大小需要根据ARR的维 ...

高手好:复制了您的VBA代码后运行良好,可是!我发现了一个关键的问题?您的代码是从每个数据区域第一行的第二个单元格开始向下曲线提取数据的,如果改变思路,改成从最底行(38)的第一个(左下角的第一个单元格)开始向上曲线提取,又该怎样修改您的VBA代码呢?谢谢!
UC截图20191120010254.png UC截图20191120005244.png

TA的精华主题

TA的得分主题

发表于 2019-11-20 13:10 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
心云德乐 发表于 2019-11-20 01:10
高手好:复制了您的VBA代码后运行良好,可是!我发现了一个关键的问题?您的代码是从每个数据区域第一行 ...

看基础知识去吧,你这样问下去何时是个头啊

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-11-20 22:23 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
约定的童话 发表于 2019-11-20 13:10
看基础知识去吧,你这样问下去何时是个头啊

谢谢您的三次的回复,你每回复一次,我进步巨大,欣赏你的三句话:
1.这个有意思哈,干嘛这样取值啊?

2.代码的重点在逻辑循环这上面,你F8一句句看下,然后慢慢理解!

3.看基础知识去吧,你这样问下去何时是个头啊!
第一句让我满肚子醋意,学python几年,结果从入门到放弃,了解VBA练手好,才转向VBA,结果为啦学VBA又去考计算机二级Ms Office,刚前几个月拿证,就你的第一句话,让我前面养成的思维严谨和逻辑性大暴发,谢谢!
UC截图20191120220547.png

TA的精华主题

TA的得分主题

发表于 2019-11-21 08:20 | 显示全部楼层
心云德乐 发表于 2019-11-20 22:23
谢谢您的三次的回复,你每回复一次,我进步巨大,欣赏你的三句话:
1.这个有意思哈,干嘛这样取值啊?
...

ubound(arr,2)指的是arr最大列维度,不能改成5,这个地方你理解错误了

TA的精华主题

TA的得分主题

发表于 2019-11-21 16:32 | 显示全部楼层
Option Explicit
Sub test()
    Dim lc&, c&, ar, i&, j&, x&
    With Sheet1
        lc = .Cells(4, .Columns.Count).End(xlToLeft).Column
        For c = 1 To lc Step 8
            x = x + 1
            ar = .Cells(4, c).CurrentRegion
            If x = 1 Then ReDim br(1 To UBound(ar), 1 To -Int(-lc / 8))
            For i = 1 To UBound(ar)
                j = 7 - Abs(((i + 10) Mod 12) - 7 + 1)
                br(i, x) = ar(i, j)
            Next
        Next
    End With
    Sheet2.[a4].Resize(i - 1, x) = br
End Sub

评分

2

查看全部评分

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

本版积分规则

关闭

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

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

GMT+8, 2024-4-25 06:04 , Processed in 0.053196 second(s), 18 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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