ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 合并列及拷贝不同分数段的数据到新工作表

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-4-9 08:38 | 显示全部楼层
本帖最后由 qlmgu 于 2023-4-9 08:45 编辑

虽然已经获得多个程序,但是我仍然要感谢老师出手相助。老师您的程序输出结果是更细的分数段等级,这个在我另外的场景下也有很大帮助,谢谢您。

TA的精华主题

TA的得分主题

发表于 2023-4-9 08:47 | 显示全部楼层
指标等级 是什么样的?

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-4-9 08:50 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
fzxba 发表于 2023-4-9 08:47
指标等级 是什么样的?

感谢fzxba关注和再次指导。简单说指标等级是百分数,文本数据的某个“度“的等级。您的软件已经非常完美了,再次感谢您。

TA的精华主题

TA的得分主题

发表于 2023-4-9 08:52 | 显示全部楼层
qlmgu 发表于 2023-4-9 08:50
感谢fzxba关注和再次指导。简单说指标等级是百分数,文本数据的某个“度“的等级。您的软件已经非常完美 ...

噢,我是想原始的数据能否一步到位,不用转成数值

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-4-9 08:54 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
fzxba 发表于 2023-4-9 08:52
噢,我是想原始的数据能否一步到位,不用转成数值

真的要再次表示我的感激之心,您太专业了,值得我学习。

TA的精华主题

TA的得分主题

发表于 2023-4-9 14:04 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 吴中泉 于 2023-4-10 11:13 编辑
qlmgu 发表于 2023-4-9 08:54
真的要再次表示我的感激之心,您太专业了,值得我学习。

综合以上各位老师的代码,并适当改进,取长补短,基本符合你的要求.


(后经测试,代码有问题,数据会出错,若使用以后面楼层发的代码为准)
image.jpg

  1. Sub MergeAndSort() '合并列并根据分值排序
  2.     With Sheet1
  3.         ar = .[a1].CurrentRegion.Resize(, 3)
  4.         ReDim arr(1 To UBound(ar) * 2 - 1, 1 To 2)
  5.         For j = 1 To 2
  6.             For i = 2 To UBound(ar)
  7.                 n = n + 1
  8.                 arr(n, 1) = ar(i, j)
  9.                 arr(n, 2) = ar(i, 3)
  10.             Next i
  11.         Next j
  12.         .Range("e:f").ClearContents
  13.         .[e1:f1] = Array("姓名", "分数")
  14.         .[E2].Resize(UBound(arr), 2) = arr
  15.         .[E2].Resize(UBound(arr), 2).Sort key1:=.[f2], order1:=2, Header:=xlNo
  16.     End With
  17.     Call 根据分数段拆分多表
  18. End Sub

  19. Sub 根据分数段拆分多表()
  20.     Dim i, j, n, 关键字, 关键字1 As Integer
  21.     Dim arr, dic As Object
  22.     Set dic = CreateObject("scripting.dictionary")
  23.     Worksheets(1).Activate
  24.     Application.DisplayAlerts = False
  25.     For Each wks In Worksheets
  26.         If wks.Name <> ActiveSheet.Name Then wks.Delete
  27.     Next
  28.     Application.DisplayAlerts = True
  29.     arr = [a1].CurrentRegion
  30.     For i = 2 To UBound(arr)
  31.         关键字 = (arr(i, 3) \ 10) * 10
  32.         If Not dic.exists(关键字) Then
  33.             Set dic(关键字) = CreateObject("scripting.dictionary")
  34.         End If
  35.         关键字1 = arr(i, 3)
  36.         If Not dic(关键字).exists(关键字1) Then
  37.             dic(关键字)(关键字1) = arr(i, 1) & "," & arr(i, 2)
  38.         Else
  39.             dic(关键字)(关键字1) = dic(关键字)(关键字1) & "," & arr(i, 1) & "," & arr(i, 2)
  40.         End If
  41.     Next
  42.     For Each 键名 In dic.keys
  43.         Sheets.Add(after:=Sheets(Sheets.Count)).Name = 键名
  44.         [a1] = "姓名"
  45.         [b1] = "分数"
  46.         n = 2
  47.         For Each 键名1 In dic(键名).keys
  48.             zjsz = Application.Transpose(Split(dic(键名)(键名1), ","))
  49.             Cells(n, "A").Resize(UBound(zjsz), 1) = zjsz
  50.             Cells(n, "B").Resize(UBound(zjsz), 1) = 键名1
  51.             n = n + 2
  52.         Next
  53.     Next
  54.     Worksheets(1).Activate
  55.     Beep
  56. End Sub

复制代码
合并列和拷贝数据到不同工作表1.zip (23.69 KB, 下载次数: 8)


评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-4-9 20:22 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 qlmgu 于 2023-4-9 21:40 编辑
吴中泉 发表于 2023-4-9 14:04
综合以上各位老师的代码,并适当改进,取长补短,基本符合你的要求.

感谢吴中泉老师出手相助。您的程序不仅仅是基本符合我的需求,是完全符合需求。而且您的程序分2段,一段实现姓名合并,第二段实现分段分表。可以合起来或者分开使用都可以。谢谢了。(后来发现临界分数有较大小数时会进位)

TA的精华主题

TA的得分主题

发表于 2023-4-9 20:34 | 显示全部楼层
(arr(i, 3) \ 10) * 10   arr(i, 3) 若是小数,如99.6 则会当100段,59.5会当60段……

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-4-9 20:37 | 显示全部楼层
本帖最后由 qlmgu 于 2023-4-9 20:44 编辑
fzxba 发表于 2023-4-9 20:34
(arr(i, 3) \ 10) * 10   arr(i, 3) 若是小数,如99.6 则会当100段,59.5会当60段……

fzxba老师您好。您的第一个程序已经很完美了。还能继续帮我考虑,真心感谢您。如果有分数档次间的四舍五入,那我还是用您第一个程序更好。如果可以使用百分比,我先试验下。谢谢了

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-4-9 20:52 | 显示全部楼层
qlmgu 发表于 2023-4-9 20:37
fzxba老师您好。您的第一个程序已经很完美了。还能继续帮我考虑,真心感谢您。如果有分数档次间的四舍五 ...

image.png

评分

1

查看全部评分

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

本版积分规则

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

GMT+8, 2024-11-17 18:43 , Processed in 0.047920 second(s), 15 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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