分组ssrs报表行组序号的每一组的记录序号重新排列怎么做啊?

查看: 2897|回复: 10
如何实现excel表格里的2个字段排序并重新修改相应序号
阅读权限10
在线时间 小时
excel表格内容大致如下:
序号& && &班级& && && &学生名& & 运动成绩
1& && && &&&高三7班& & 张三& && & 0-100随机数
2& && && &&&高三5班& & 李四& && && &0-100随机数
3& && && && &高三5班& & 王五& && &&&0-100随机数
4& && && && &高三6班& & 石头& && &&&0-100随机数
200& && &高三4班& & 李梦& && &&&0-100随机数
本来是全校所有成绩的倒序排名的一张excel表格,现在想用通过编程实现:
1。运动成绩如果采用随机数来产生,请问怎么写这个随机代码?谢谢
2。想按照班级名字和随机的运动成绩进行两个字段排序,一起按升序好了。
3。修改最前面一栏的序号,比如前面第二步实现了把所有的同学按照班级名进行了升序,那么每一个班级内的同学的序号我想都从1开始往上加,到下一个班级,序号重新从1开始计数。
请教各位大侠,方便实现这些功能吗?非常感谢。。
阅读权限100
在线时间 小时
& & & & & & & &
欢迎新会员!
建议上传表格附件来说明问题。
或者搜索本论坛的相关帖子。
阅读权限95
在线时间 小时
加RAND辅助列,排序,再用countif计算序号
阅读权限10
在线时间 小时
蓝桥玄霜 发表于
欢迎新会员!
建议上传表格附件来说明问题。
或者搜索本论坛的相关帖子。
老师这样子可以了吗?能帮忙我看看是否可以实现吗。谢谢了。原始序号分组作品编号作品名称抽签号(要求随机产生,不能相同)2NB0214995雁南飞43NB0414996民族风情214NB0314136蜂蜡生花——安顺蜡染816NB0215341商殇717NB0215342逛庙会1019NB0111505苍都城脉——北京民族传统建筑2220NB0312942《北京玩意儿》 电子读物1221NB0312995《争风吹》电子读物1522NB0111670迎春文化-裸眼3D动画123NB0112395装置体验动画《城》326NB0112661竹林深处936NB0215718你不知道的“饰”1165NB0415345凝固在建筑雕刻中的艺术20119NB0415487中华民族建筑电子杂志《民韵之殿》18123NB0415067魅力傣族14131NB0111139汉唐文化村13这里要求抽签号是随机产生,然后要求不能有重复的抽签号
最后进行排序,排序按照分组号和抽签号进行两个升序排序,排序后需要更改原先的原始序号成1,2,3,4,5,遇到下一个分组则又重新从1,2,3,开始。
最后的成品如下
原始序号分组作品编号作品名称抽签号(要求随机产生,不能相同)1NB0111670迎春文化-裸眼3D动画12NB0112395装置体验动画《城》33NB0112661竹林深处94NB0111139汉唐文化村135NB0111505苍都城脉——北京民族传统建筑221NB0214995雁南飞42NB0215341商殇73NB0215342逛庙会104NB0215718你不知道的“饰”111NB0314136蜂蜡生花——安顺蜡染82NB0312942《北京玩意儿》 电子读物123NB0312995《争风吹》电子读物151NB0414996民族风情22NB0415067魅力傣族143NB0415487中华民族建筑电子杂志《民韵之殿》184NB0415345凝固在建筑雕刻中的艺术20
阅读权限10
在线时间 小时
表格上传了。麻烦老师了。谢谢。
15:26 上传
点击文件名下载附件
64.11 KB, 下载次数: 4
阅读权限100
在线时间 小时
Sub lqxs()
Dim Arr
Arr = [a1].CurrentRegion
[e2].Resize(UBound(Arr) - 1, 1).Formula = &=rand()&
[e2].Resize(UBound(Arr) - 1, 1) = [e2].Resize(UBound(Arr) - 1, 1).Value
[a1].CurrentRegion.Sort Key1:=Range(&e2&), Order1:=xlAscending, Header:=xlYes
[e2] = 1: [e3] = 2
[e2:e3].AutoFill [e2].Resize(UBound(Arr) - 1, 1)
End Sub
复制代码
阅读权限100
在线时间 小时
请见附件。
09:19 上传
点击文件名下载附件
37.25 KB, 下载次数: 13
阅读权限10
在线时间 小时
蓝桥玄霜 发表于
老师,您好。看到您的代码了。非常感谢,但是好像并没有按照我想要的来排序。您只是对于随机产生的抽签号进行了排序,但实际我想要把分组是一样的记录放在一起,然后这些同一分组下面的记录按照随机产生的抽签号进行从小到大排序,可能出来的结果是
原始序号& & & & 分组& & & & 作品编号& & & & 作品名称& & & & 抽签号(要求随机产生,不能相同)
3& & & & NB01 & & & & 12661& & & & 竹林深处& & & & 4
2& & & & NB01& & & && && && &12395& & & & 装置体验动画《城》& & & & 5
也就是说分组1的两个作品他并没有1的抽签号,这样子。但是这里体现顺序的就是把最初的原始序号这列的值进行修改。
原始序号& & & & 分组& & & & 作品编号& & & & 作品名称& & & & 抽签号(要求随机产生,不能相同)
3-》1&&& & & & NB01 & & & & 12661& & & & 竹林深处& & & & 4
2-》2& && && &NB01& & & && && && &12395& & & & 装置体验动画《城》& & & & 5
阅读权限10
在线时间 小时
& & & & & & & &
老师,我的排序规则是,第一考虑分组,按升序排列,先nb01,然后nb02这种。第二考虑抽签号,也是升序。
经过这两个关键字的排序后的就是我想要的,然后再根据情况修改原始序号,让他按照分组号从1,2,3往后,到下一个分组号的时候,再重新从1,2,3计数。这样子。
阅读权限100
在线时间 小时
Sub lqxs()
Dim Arr, Myr&, i&, Arr1(), ks, js, j&, d
Set d = CreateObject(&Scripting.Dictionary&)
[e2].Resize(100, 1).ClearContents
Randomize
Myr = Cells(Rows.Count, 1).End(xlUp).Row
Do
& & aa = Int(Rnd * 100) + 1
& & If Not d.exists(aa) Then
& && &&&d(aa) = &&
& && &&&n = n + 1
& && &&&Cells(n + 1, 5) = aa
& & End If
Loop While n & Myr - 1
[a1].CurrentRegion.Sort Key1:=Range(&b2&), Order1:=xlAscending, Key2:=Range(&e2&), Order2:=xlAscending, Header:=xlYes
Arr = [a1].CurrentRegion
For i = 2 To UBound(Arr)
& & If Arr(i, 2) && Arr(i - 1, 2) Then
& && &&&r = r + 1
& && &&&ReDim Preserve Arr1(1 To r)
& && &&&Arr1(r) = i
& & End If
Next
For i = 1 To r
& & If i && r Then
& && &&&js = Arr1(i + 1) - 1
& & Else
& && &&&js = UBound(Arr)
& & End If
& & ks = Arr1(i): n = 0
& & For j = ks To js
& && &&&n = n + 1
& && &&&Cells(j, 1) = n
& & Next
Next
End Sub
复制代码
最新热点 /1
ExcelHome每周都有线上直播公开课,
国内一流讲师真身分享,高手贴身答疑,
赶不上直播还能看录像,
关键居然是免费的!
厚木哥们都已经这么努力了,
你还好意思说学不好Office。
玩命加载中,请稍候
玩命加载中,请稍候
Powered by
本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任! & & 本站特聘法律顾问:徐怀玉律师 李志群律师

参考资料

 

随机推荐