ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[原创] 在Excel中创建名称的几点体会

[复制链接]

TA的精华主题

TA的得分主题

发表于 2011-12-6 20:16 | 显示全部楼层 |阅读模式
本帖最后由 tdrz 于 2011-12-6 20:21 编辑

Excel中创建名称的几点体会
数据:第一行为标题行,科目也固定。
考号

班级

姓名

语文

数学

英语

政治

历史

地理

生物

001

03

王威龙

90

105

118

75

97

99

67

002

04

于芳彬

83

120

116

76

96

93

63

003

01

荣新新

79

120

116

74

98

93

68

004

04

王子辰

85

120

111

78

90

92

62

005

02

毕亚男

87

117

117

76

94

93

63

006

03

查月胜

70

120

107

70

92

92

65

007

04

于富华

88

120

118

70

92

95

64

008

03

于逸凡

92

115

117

70

98

96

67

009

03

史家安

90

114

116

67

86

97

66

010

02

荣明

85

108

116

83

93

99

64

011

03

张凌云

86

105

116

80

99

93

62

012

04

王怡龙

77

94

102

63

89

90

57

013

01

李鑫海

90

101

115

76

97

90

63

014

02

王炜婷

88

115

112

70

94

87

65

015

02

王鑫

87

110

113

78

96

86

66

要求:
⒈创建考号、班级、姓名、数学…等名称(第一行)
⒉由于每次考试人数不确定,有可能增加,也有可能减少,希望可以有一种简便方法。
方法一:标准法
⒈通过菜单命令:先选中A1单元格,点击菜单“插入→名称→定义”
a01.jpg
弹出如下对话框:
a06.jpg
我们选择窗口右下角的引用位置 a03.jpg 按钮,选中A2:A16单元格,如下图所示:
a04.jpg
这样就将考号的名称区域定义为“数据”工作睥中的A2:A16单元格区域了。再单击 按钮返回定义名称对话框,单击确定即可。
OK,“考号”名称已经定义完成。
依上述步骤创建好其他相对应名称。
附件:
excel中名称的使用.zip (10.79 KB, 下载次数: 33)
在Excel中创建名称(word稿件).zip (256.92 KB, 下载次数: 28)
该贴已经同步到 tdrz的微博
d01.jpg
c03.jpg
c02.jpg
c01.jpg
b04.jpg
b03.jpg
b02.jpg
b01.jpg
a05.jpg
a02.jpg

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-12-6 20:17 | 显示全部楼层
本帖最后由 tdrz 于 2011-12-6 20:23 编辑

**一楼中后面的那么多图片,我怎么无法删除啊,利用编辑功能根本看不到那些图片,郁闷。**
方法二:使用定义名称中的指定功能
⒈先选中数据区域A1:J16

b01

b01

⒉点击菜单“插入→名称→指定”

b02

b02

然后选中“首行”,单击确定即可。

b03

b03

我们可以通过菜单“插入→名称→定义”来查看已经创建好名称。

b04

b04

以上两种方法其实个人感觉属于一种操作方法,第二方法属于第一种方法的扩展延伸。
问题提出:
现在出现这样的情况,由于学生有转入、转出、请假等情况导致每次考试的人数会发生变化,用上述方法虽然可以完成名称区域的重新建立,但每次做重复性动作,会不会烦呢?有木有更好的方法呢?
答案是肯定的。下面介绍函数方法和VBA方法。

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-12-6 20:19 | 显示全部楼层
本帖最后由 tdrz 于 2011-12-6 20:20 编辑

方法三:函数法
点击菜单“插入→名称→定义”,输入“考号”,在下面的引用区域输入
=OFFSET($A$2,,,COUNTA($A$2:$A$65536))
(感谢excelhome论坛的岁月

c01

c01
帮忙)
只是这种方法定义名称在左上角的名称框中无法找到,但可以在名称管理中看到。可以通过VBA修改为可见)
         

c02

c02

下图为方法一和方法二创建的名称:
c03.jpg


TA的精华主题

TA的得分主题

 楼主| 发表于 2011-12-6 20:20 | 显示全部楼层
本帖最后由 tdrz 于 2011-12-6 21:29 编辑

方法四,通过VBA创建(方法一、方法二的应用及扩展)
⒈通过VB工作栏中编辑器 进入VB,并插入一个模块。
输入以下代码:


  1. Sub 创建名称()
  2.     Application.Names.Add [a1], [a2:a16]
  3.     Application.Names.Add [b1], [b2:b16]
  4.     Application.Names.Add [c1], [c2:c16]
  5.     Application.Names.Add [d1], [d2:d16]
  6.     Application.Names.Add [e1], [e2:e16]
  7.     Application.Names.Add [f1], [f2:f16]
  8.     Application.Names.Add [g1], [g2:g16]
  9.     Application.Names.Add [h1], [h2:h16]
  10.     Application.Names.Add [i1], [i2:i16]
  11.     Application.Names.Add [j1], [j2:j16]
  12. End Sub
复制代码

这种方法看起来很复杂,并且无法及时更新,我们只需要修改一下代码。
这里先来简单了解range()在VBA中的一种使用方法range(cells(x1,y1),cells(x2,y2)),
如Range(“a1”,”a16”)表示选择A1:A16单元格区域,我们可以先定义一个变量i进行扩充,如range(“A1”,”A”&i),如果i=10,那么选取的就是A1:A10,如果i=20,选择的就是A1:A20单元格区域。
上述公式就可以改造为
    Application.Names.Add [a1], range(“a1”,”a”&i)
我们再动态获取i的值
i = Range("a65536").End(xlUp).Row
这样每次就可以根据考号来决定相应的数据区域。
2.指定法在VBA的应用
先来认识一下语句:
  1. Sub 高效创建()
  2.     Range("A1:J16").CreateNames Top:=True, Left:=False
  3. End Sub
复制代码

语句解释:
选择A1:J16单元格区域,创建名称,以顶端(即首行)为名称,一定要加上left:=false,即左边不指定,否则,嘿嘿。
我们再将方法三的变量i扩展拿来应用一下。
i = Range("a65536").End(xlUp).Row
Range("a1", "a" & i) .CreateNames Top:=True, Left:=False
这样一来,我们就可以根据考号来确定考试的人数,从而指定相应的学科成绩名称。我们可以增加按钮来调用这些宏,从而,达到高效。
感兴趣的朋友,可以继续深入扩展。
其他几点小知识

  1. Sub 删除名称()
  2.     Dim 名称删除 As Name
  3.     For Each 名称删除 In Names
  4.         名称删除.Delete
  5.     Next
  6. End Sub
复制代码
  1. Sub 名称可见()
  2.     Dim 名称可见 As Name
  3.     For Each 名称可见 In Names
  4.         名称可见.Visible = True
  5.     Next
  6. End Sub
复制代码
  1. Sub 名称隐藏()
  2.     Dim 名称隐藏 As Name
  3.     For Each 名称隐藏 In Names
  4.         名称隐藏.Visible = False
  5.     Next
  6. End Sub
复制代码

水平有限,请各位指正。


TA的精华主题

TA的得分主题

发表于 2011-12-6 20:41 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
感觉还是不错的,{:soso_e179:}
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-3-29 15:31 , Processed in 0.051901 second(s), 11 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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