字典排序什么意思_从字典提取数据后,实现乱序排序

大家好,今日我们继续讲解VBA数组与字典解决方案,今日讲解第65讲内容:从字典提取数据后,实现乱序排序.

对于排序而言,方式有很多,有升序,有降序,今日我们讲解既不是升序也不是降序,是乱序.为什么会有这种排序呢?我们知道,在很多情况下,人们是很讲究顺序的,在某种场合下,把谁排在后面,人家都会不高兴,那么怎么办,只能是采取这种乱序的排序方案,也就是说,在排序的时候,没有一定的规律,是随机的,这样就可以避免一些人们的不高兴了.怎么实现这种乱序排序呢?我们看下面的实例.

实例讲解,在下面的A列中,有若干个城市名,我们要在其中提取不重复的数据,并给出出现的次数,然后按一种乱序排序发布这些城市名.

abb76759c6d443b3fdcb17bf1406ae20.png

思路分析:对于数据的排重和提取出现次数,这些对于字典来说是很简单的了,这里不再过多的讲解;所谓乱序,就是没有排序的规律,要靠随机数来解决,所以要产生一组随机数,然后对应数据,当按随机数进行排序后,就是乱序了,特点是每次排序的结果都会不同.下面看代码:

代码:

Sub mynzsz_65() '第65讲 从字典提取数据后,实现乱序排序

Sheets("65").Select

Set mydic = CreateObject("Scripting.Dictionary") '字典

'给字典赋值

For Each ran In Sheets("65").Range("a2:a" & Cells(Rows.Count, 1).End(xlUp).Row)

If ran.Value <> "" Then

If Not mydic.exists(ran.Value) Then

mydic.Add ran.Value, 1 '需要注意此处要加VALUE

Else

mydic(ran.Value) = mydic(ran.Value) + 1

End If

End If

Next

'清理待填充区域

[e:g].ClearContents

Sheets("65").Range("e1") = "数据": Sheets("65").Range("f1") = "次数"

'回填数据

Sheets("65").[E2].Resize(mydic.Count) = WorksheetFunction.Transpose(mydic.keys)

For i = 1 To mydic.Count

Cells(i + 1, "f") = mydic(Cells(i + 1, "e").Value)

Next

'添加随机数据

r = Range("e1").CurrentRegion.Rows.Count

For i = 2 To r

Cells(i, "g") = Int((Rnd * 100) + 1)

Next

'实现乱序排序Randomize

Set rng = Range(Cells(1, "e"), Cells(r, "g"))

rng.Sort key1:=Range(Cells(1, "g"), Cells(r, "g")), Order1:=xlDescending, Header:=xlYes

'清除添加的随机数据

Columns("g").Clear

Set mydic = Nothing

End Sub

代码截图:

24e28fef0eccb4e0f9749e8ff3f804db.png

代码讲解:

1 上述过程实例了:数据的排重和提取,及乱序的排序,数据的提取利用了MYDIC字典解决,这里不再过多的讲解;然后用Cells(i, "g") = Int((Rnd * 100) + 1)获取了随机数,并对其进行排序.

2 '添加随机数据

r = Range("e1").CurrentRegion.Rows.Count

For i = 2 To r

Cells(i, "g") = Int((Rnd * 100) + 1)

Next

上述代码中将随机数Int((Rnd * 100) + 1)放到Cells(i, "g")单元格中.

3 Set rng = Range(Cells(1, "e"), Cells(r, "g"))

rng.Sort key1:=Range(Cells(1, "g"), Cells(r, "g")), Order1:=xlDescending, Header:=xlYes

上述代码指定排序区域,然后按照指定的列进行排序.

4 '清除添加的随机数据

Columns("g").Clear

上述代码清空随机数.

下面看代码的运行:

a9780cf6619b2e11a9eba07110e862c6.png

在开始的时候讲过,乱序排序每次结果是不同的,我们再次点击,看看结果:

74ab2a3d0cfe56398d04d1319e9db10f.png

今日内容回向:

1 如何实现乱序排序?

2 乱序排序的特点是什么?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值