快捷搜索:  汽车  科技

vb编程在excel中生成柱形图表(vbnet制作GBK2万多汉字笔画表)

vb编程在excel中生成柱形图表(vbnet制作GBK2万多汉字笔画表)三三3二2二2

上期回顾:从excel到VBnet :汉字笔画排序及拼音排序

一1

1

二2

2

三3

3

亖4

4

弍5

5

弎6

6

匤7

7

邼8

8

砉9

9

耕10

10

彗11

11

耠12

12

耢13

13

耤14

14

熭15

15

耩16

16

耫17

17

耮18

18

耯19

19

瓎20

20

耰21

21

耲22

22

瓚23

23

瓛24

24

纛25

25

驠26

26

鬤27

27

驨28

28

驪29

29

驫30

30

灩31

31

籲32

32

龗33

33

齾35

35

齉36

36

靐39

39

龘48

48

1,首先使用最简单的公式从上表第一列分离出2列数据:

c2公式=LEFT(B2),D2公式=RIGHT(B2 LEN(B2)-1)

vb编程在excel中生成柱形图表(vbnet制作GBK2万多汉字笔画表)(1)

笔画定位表

第2步生成GBK 20000多汉字码表

GBK汉字都是从&H8140到&HFEFE的编码,相关资料可以搜索一下。

Function 生成GBK汉字() Dim sz = makearray(24066 3)‘先成sz共24066行,三列 Dim k As Integer = 0 Dim s As String For i = &H81 To &HFE For j = &H40 To &HFE k = k 1 sz(k 1) = "'" CStr(k)’每列前加‘变成字符比较整齐。第1列序号 sz(k 2) = "'" Hex(i * 256 j)’第2列汉字Unicode s = Chr(i * 256 j) ‘第3列汉字 sz(k 3) = s Next Next Return sz End Function Private Sub Button6_Click(sender As Object e As EventArgs) Handles Button6.Click Dim ws = (New excel).activesheet Dim sz = 生成GBK汉字() ws.setgrid(sz 2 1)’直接向2行1列输出汉字表数组 End Sub

因数据达到2万多3列,使用了高速数组,再多数据可以秒得。

vb编程在excel中生成柱形图表(vbnet制作GBK2万多汉字笔画表)(2)

3,上图就是获得的表样,然后根据上一期文章中的方法开始进行笔画排序

vb编程在excel中生成柱形图表(vbnet制作GBK2万多汉字笔画表)(3)

vb编程在excel中生成柱形图表(vbnet制作GBK2万多汉字笔画表)(4)

排序之后,因为其中有许多excel2010不能正确排序的汉字,仔细观察发现excel笔画排序的规律:从3126行字符“〇”开始算一画,到“龘”字第24045行都能正确按笔画排序。其他可能不能识别先不管。反正excel可不能识别它们的笔画。中间太多行截图只截取了头和尾,重点是知道方法,以后用VBA也可以自己做。

4,开始进行标准定位。从D3126 字符“〇”开始,先直接输入笔画1

接着在D3127中输入公式:=VLOOKUP(C3127 Sheet1!C$2:D$38 2 FALSE)

以上公式,就是在Sheet1!C$2:D$38(也就是本文最开始的笔画定位表)找到第2列的笔画数,然后双击单元格右下角(还在用拖动的方式的OUT了,20000多行拖动会累死人的),直接生成全列公式。其他有#N/A的不用管,它表示找不到所需要的数据。

vb编程在excel中生成柱形图表(vbnet制作GBK2万多汉字笔画表)(5)

最终结果图

5,观察上图D列,从D3128到D3136应该都是1画,后面依次类推,从最后用程序去生成E列全部笔画数,任务就完成了。

Private Sub Button7_Click(sender As Object e As EventArgs) Handles Button7.Click Dim ws = (New excel).activesheet Dim arr = ws.Getgrid("D3126:D24045") Dim brr = makearray(UBound(arr 1) 1) Dim k As Integer For i = 1 To UBound(arr) If arr(i 1) >= 1 And arr(i 1) < 50 Then k = arr(i 1) brr(i 1) = k Else brr(i 1) = k End If Next ws.range("E3126:E24045").Clearcontents() ws.setgrid(brr "E3126:E24045") Me.Text = Me.Text " OK" End Sub

vb编程在excel中生成柱形图表(vbnet制作GBK2万多汉字笔画表)(6)

上面方法要点就是依次向下找,找不到就以上一个序号生成,找到就换新序号。

vb编程在excel中生成柱形图表(vbnet制作GBK2万多汉字笔画表)(7)

以上所有手工过程,其实都可以程序一步到位,我怕程序太多,越讲越乱。主要是想一步步来做,方便演示。中间过程也直观,最后的程序不用程序去填充,也可以手动半自动来拖,就是从1拖到2,从2拖到3,把48个笔画拖完[微笑]

探索3000原创作品,需要这个20920行笔画结果表的网友请关注、点赞、转发三连。私信联系,免费赠送。

猜您喜欢: