今天下午在整理学生模块成绩时,突然发现学生的模块成绩表中的班级是教学班,而发展报告是要求按行政班进行填写的.就有个问题了:如何按学籍号(因为发展报告只需要用学籍的学生填写),而现在就要把模块成绩表中的班级号改成行政班号.其实以前也遇到过类似问题,都是用笨法,复制/粘贴然后排序,一个个的查找看看是否有漏掉的.实在是麻烦,现在可以利用Excel中的函数Match来解决了.

原理:

返回在指定方式下与指定数值匹配的数组 (数组:用于建立可生成多个结果或可对在行和列中排列的一组参数进行运算的单个公式。数组区域共用一个公式;数组常量是用作参数的一组常量。)中元素的相应位置。如果需要找出匹配元素的位置而不是匹配元素本身,则应该使用 MATCH 函数而不是 LOOKUP 函数。

语法

MATCH(lookup_value,lookup_array,match_type)

Lookup_value   为需要在数据表中查找的数值。

Lookup_value 为需要在 Look_array 中查找的数值。例如,如果要在电话簿中查找某人的电话号码,则应该将姓名作为查找值,但实际上需要的是电话号码。

Lookup_value 可以为数值(数字、文本或逻辑值)或对数字、文本或逻辑值的单元格引用。

Lookup_array   可能包含所要查找的数值的连续单元格区域。Lookup_array 应为数组或数组引用。

Match_type   为数字 -1、0 或 1。Match-type 指明 Microsoft Excel 如何在 lookup_array 中查找 lookup_value。

如果 match_type 为 1,函数 MATCH 查找小于或等于 lookup_value 的最大数值。Lookup_array 必须按升序排列:...、-2、-1、0、1、2、...、A-Z、FALSE、TRUE。

如果 match_type 为 0,函数 MATCH 查找等于 lookup_value 的第一个数值。Lookup_array 可以按任何顺序排列。

如果 match_type 为 -1,函数 MATCH 查找大于或等于 lookup_value 的最小数值。Lookup_array 必须按降序排列:TRUE、FALSE、Z-A、...、2、1、0、-1、-2、...,等等。

如果省略 match_type,则假设为 1。

说明

函数 MATCH 返回 lookup_array 中目标值的位置,而不是数值本身。例如,MATCH("b",{"a","b","c"},0) 返回 2,即“b”在数组 {"a","b","c"} 中的相应位置。

查找文本值时,函数 MATCH 不区分大小写字母。

如果函数 MATCH 查找不成功,则返回错误值 #N/A。

如果 match_type 为 0 且 lookup_value 为文本,lookup_value 可以包含通配符、星号 (*) 和问号 (?)。星号可以匹配任何字符序列;问号可以匹配单个字符。

现在要实现的是如何在VBA中调用此函数,以实现自动化.

下面是两张样表,其中表1为学生的学籍号及行政号,表2为学生的模块成绩及教学班号,现在要做的是如何用模块成绩中的学籍号在表1中查找此号对应的行政班号,并把班号填入表2中的班级列中?

表1:

表2:

源程序如下:

Sub 更改为行政班号()

Dim totalR, i, j, k, bj As Integer

Dim mycell As Range

Dim xjh As String

Workbooks("一中学期模块学习和评价记录表.xls").Activate

Worksheets("sheet2").Activate

Workbooks("第5学段模块成绩.xls").Activate

totalR = Range("A65536").End(xlUp).Row

For i = 2 To totalR

xjh = Range(Cells(i, 3), Cells(i, 3)).Value

Workbooks("一中学期模块学习和评价记录表.xls").Activate

On Error Resume Next '困惑我很久了,今天终于解决了!!!

k = Application.WorksheetFunction.Match(xjh, Range("D1:D1100 "), 0)

bj = Range(Cells(k, 2), Cells(k, 2)).Value

Debug.Print k & "    " & xjh & "行政班号为:" & bj

Workbooks("第5学段模块成绩.xls").Activate

Range(Cells(i, 1), Cells(i, 1)).Value = "ww" & bj

Next i

End Sub

反思:其中k = Application.WorksheetFunction.Match(xjh, Range("E1:E1100 "), 0)是最容易出错的,因为若xjh在Range("E1:E1100")若不存在,则会报错(1004).所以在此语句前加了一句:On Error Resume Next 避免出错后,程序不再执行.

程序执行后的效果表如下图所示:(特别注意第2行的数据,故意设置了一个在表1中没有数据,检测程序是否执行!!)

java从学号中提取班级_如何实现表间查询并提取班级号相关推荐

  1. java从学号中提取班级_excel从学号中提取所在班级分析

    学号的特定位数代表所在班级,比如学号为120305,则此学号所相应的班级为3班. 知识储备: mid:从字符串中截取特定长度的子字符串. numberstring:将数字转换大小写,比如将数字&quo ...

  2. java在程序中加入音频_在任意Java程序中播放音频

    音频文件有多种格式.Java程序能够播放WAV,AIFF,MIDI,AU和RMF格式的声音文件. 要在Java中播放音频文件,应该先为声音文件创建一个音频剪辑对象(audio clip object) ...

  3. java替换数组中的元素_如何使用Java 8流快速替换列表中的元素

    java替换数组中的元素 假设您有一个项目清单: List<String> books = Arrays.asList("The Holy Cow: The Bovine Tes ...

  4. java向数组中增加新元素_用Java中的新元素替换List的给定索引处的元素

    java向数组中增加新元素 Given a list of the integers and we have to replace it an element from specified index ...

  5. 分库分表之_分库分表 + 复杂查询

    前言 Github:https://github.com/HealerJean 博客:http://blog.healerjean.com 代码配置暂时和和分库分表之_分库分表相同.但是为了测试下面的 ...

  6. Django框架(5.django中模型类建立关系和多表关系查询)

    1.建立好模型类: from django.db import models# 设计和模型对应的类,(模型类) # Create your models here.# 一类 # 图书类 class B ...

  7. (探讨)MyBatis中的N+1问题,多表关联查询效率高点还是多次单表查询效率高

    MySQL多表关联查询效率高点还是多次单表查询效率高,为什么? https://blog.csdn.net/weixin_33869377/article/details/86265527 MyBat ...

  8. java获取emf中的文字_一键提取图片中的文字的5种方法!

    工作中经常会需要提取图片中的文字的时候,一个个打字实在是太累人了,又浪 费时间.我们就借助一些工具,帮助我们高效地工作吧! papa 分享一个很小巧的 PC 端的文字识别软件 - 天若OCR ,Ta ...

  9. java输出set中的元素_老师,为什么遍历Set集合里的元素,一直都是有序的输出呢?...

    源自:4-11 学生选课---通过 Set 集合管理课程 老师,为什么遍历Set集合里的元素,一直都是有序的输出呢? package com.imooc.collection; import java ...

最新文章

  1. iOS 高可控性日历基础组件 - SKCalendarView 的使用和实现思路的分享
  2. Lombok 安装、入门 - 消除冗长的 java 代码
  3. Beyond的歌里最多是唏嘘吗? - Python分词+词频
  4. WebKit 内核源码分析 (三) Page
  5. python抓虫_Python 七步捉虫法
  6. java什么是原生类_Java 基础 - 原生类型
  7. Leetcode--56. 合并区间
  8. powerdesigner 16设计mysql数据库_PowerDesigner16 连接MySql 报错
  9. 单片机c语言按照长度分割字符串,单片机c语言字符串操作
  10. PageAdmin网站建设教程:仿58同城站群系统实现不同地区Ip跳转不同分站
  11. spring mvc 的上传图片是怎么实现的?
  12. 【观察】新华三大学:逆势而上,顺势而为,应势而变
  13. 2022低压电工考题模拟考试平台操作
  14. NR R15中的TypeII CSI-Codebook量化反馈
  15. CAD图纸的缩放——范围缩放
  16. LaTex的箭头符号及命令
  17. Nginx代理浏览器接口调用本地的后端接口
  18. vue在线预览excel
  19. python自动化测试平台方案_基于Python的软件测试自动化平台研究
  20. android 7.0 新功能介绍(Nougat)

热门文章

  1. java面试换背景颜色_正在修生养息,突然收到阿里(蚂蚁)面试电话,四面阿里面经总结...
  2. 重生之我是赏金猎人-SRC漏洞挖掘(十三)-攻防对抗/梦中绝杀X脖代理商
  3. .net ref java_Java URL.getRef方法代碼示例
  4. i5-8500 搭配 RTX3090 算不算奇葩
  5. 微信Mars-xlog日志加密踩坑指南
  6. [论文解读]Bayesian Generalized Kernel Inference for Terrain Traversability Mapping
  7. 读书笔记 摘自:《创业就是要细分垄断》
  8. 产品经理如何营销自己
  9. OpenLayers 3实践与原理探究1-ol2 VS ol3
  10. 关于ubuntu系统的scp服务提示Permission denied