ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 请大佬帮忙根据总表生成分析表

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-5-7 15:05 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
请大佬帮忙根据总表自动生成分析表

三率分析.zip

21.25 KB, 下载次数: 21

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-5-7 15:53 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-5-7 15:58 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
看了下附件,只有几个科目,貌似复制粘贴就可以了

TA的精华主题

TA的得分主题

发表于 2024-5-7 16:12 | 显示全部楼层
三率分析.zip (47.2 KB, 下载次数: 21)

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-5-7 16:19 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-5-8 09:03 | 显示全部楼层

老师你好,当总表中的学校数目、科目数及每科分析的项目变化时,如何自动分析分析表的项目呢

TA的精华主题

TA的得分主题

发表于 2024-5-8 10:06 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
fnjpn 发表于 2024-5-8 09:03
老师你好,当总表中的学校数目、科目数及每科分析的项目变化时,如何自动分析分析表的项目呢

上附件吧。。

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-5-14 14:52 | 显示全部楼层
Sub test()
Dim wsS As Worksheet, wsA As Worksheet
    Dim sHr As Long, aHr As Long
    Dim hRg As Range, sC As Range
    Dim cR(), i%, pC%, fF As Boolean
    Set wsS = ThisWorkbook.Worksheets("总表")
    Set wsA = ThisWorkbook.Worksheets("分析表 (2)")
    sHr = 2: aHr = 2
    With wsA
        Set hRg = .Range(.Cells(aHr, 1), .Cells(aHr, .Columns.Count).End(xlToLeft))
       Set Rng = .Range(.Cells(2, 1), .Cells(2, .Columns.Count).End(xlToRight))
        dr = Rng.Value
    End With
    ' 动态创建数组
    ReDim cR(1 To hRg.Cells.Count)
    pC = 0 ' 初始化前一列位置
    For Each cell In hRg
        Set sC = wsS.Rows(sHr).Find(What:=cell.Value, LookIn:=xlValues, LookAt:=xlWhole)
        If Not sC Is Nothing Then
            cR(i + 1) = sC.Column
            pC = sC.Column ' 更新前一找到的列位置
            fF = True ' 标记已找到
        ElseIf fF Then ' 使用前一列位置
            cR(i) = pC
        End If
        i = i + 1
        fF = False ' 重置找到标记
    Next cell
Set sht = Sheets("总表")
    ar = sht.Range("a1").CurrentRegion
    m = UBound(ar) - 3
With Sheets("分析表")
    .UsedRange.Clear
    c = 1
    k = 0
    For j = 1 To UBound(ar, 2) ' 遍历第一行的所有列
        If InStr(1, ar(1, j), "总分", vbTextCompare) > 0 Then ' 检查是否包含“总分”
            k = k + 1
        End If
    Next j
    For j = 0 To UBound(ar, 2) - 3 Step k
        .Cells(c, 1) = ar(1, j + 3)
        .Cells(c, 1).Resize(1, UBound(cR)).Merge
        .Cells(c + 1, 1).Resize(1, UBound(cR)) = dr
        sD = c: c = c + 1
        For i = 3 To UBound(ar) - 1
            c = c + 1
             For Z = 1 To UBound(cR)
                 If Z > 2 And Z Mod 2 = 0 Then
                    .Cells(c, Z) = Application.Rank(ar(i, j + cR(Z - 1)), sht.Cells(3, j + cR(Z - 1)).Resize(m))
                    Else
                    .Cells(c, Z) = ar(i, cR(Z))
                End If
            Next
        Next
        c = c + 1
    Next
    With .Range("a1").CurrentRegion
        .Borders.LineStyle = 1
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .Font.Size = 14
    End With
    For Each col In .Range("2:2").Columns ' 假设表头在第二行
        ' 获取表头单元格的值
        Set headerCell = col.Cells(1)
        headerText = headerCell.Value
        ' 检查表头是否包含"率"字,并设置百分比格式
        If InStr(1, headerText, "率", vbTextCompare) > 0 Then
            headerCell.EntireColumn.NumberFormat = "0.00%"
        End If
    Next col
End With
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-5-14 15:05 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
fnjpn 发表于 2024-5-14 14:52
Sub test()
Dim wsS As Worksheet, wsA As Worksheet
    Dim sHr As Long, aHr As Long

谁能帮我简化一下这段代码,谢谢

TA的精华主题

TA的得分主题

发表于 2024-5-15 08:47 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 hbszls 于 2024-5-15 08:59 编辑

不好意思,刚回复错了。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-5-19 20:47 , Processed in 0.047656 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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