Excel不同工作簿之间提取信息
Sub 不同工作簿间提取信息() '用于单个字段信息的提取;
Dim w As Workbook, wb1 As Workbook, wb2 As Workbook, wb3 As Workbook
Dim sh As Worksheet, sh1 As Worksheet, sh2 As Worksheet, ce As Range, shp As Shape
Dim dic As Object, re As Object
Dim arr, brr, crr '若带()则默认为一维数组;
Set dic1 = CreateObject("scripting.dictionary")
Set dic2 = CreateObject("scripting.dictionary")
' Set wb1 = ActiveWorkbook
' Set sh = ActiveSheet
关键词A = "教师信息"
关键词B = "学生信息"
关键词C = "中期检查"
m = 0
For Each w In Workbooks
If InStr(w.Name, 关键词A) > 0 Then
Set wb1 = Workbooks(w.Name)
m = m + 1
ElseIf InStr(w.Name, 关键词B) > 0 Then
Set wb2 = Workbooks(w.Name)
m = m + 1
ElseIf InStr(w.Name, 关键词C) > 0 Then
Set wb3 = Workbooks(w.Name)
m = m + 1
End If
If m = 3 Then Exit For 'm还可设置3或更多;
Next
Set sh1 = wb1.Sheets(1)
For i = 2 To wb1.Sheets(1).Range("D65536").End(3).Row '对应关键词A
If Not dic1.exists(Trim(sh1.Range("C" & i).Value)) Then dic1.Add Trim(sh1.Range("C" & i).Value), Trim(sh1.Range("D" & i).Value)
Next
Set sh2 = wb2.Sheets(1)
For i = 2 To sh2.Range("H65536").End(3).Row '对应关键词B
sh2.Range("J" & i).Value = dic1(Trim(sh2.Range("H" & i).Value))
Next
MsgBox "已完成!!!", vbOKCancel, "程序处理"
End Sub
Sub 多字段工作簿间提取信息() '利用数组来实现赋值;
Dim w As Workbook, wb1 As Workbook, wb2 As Workbook, wb3 As Workbook
Dim sh As Worksheet, sh1 As Worksheet, sh2 As Worksheet, ce As Range, shp As Shape
Dim dic As Object, re As Object
Dim arr, brr, crr '若带()则默认为一维数组;
Set dic1 = CreateObject("scripting.dictionary")
Set dic2 = CreateObject("scripting.dictionary")
' Set wb1 = ActiveWorkbook
' Set sh = ActiveSheet
关键词A = "姓名汇总"
关键词B = "学生信息"
关键词C = "中期检查"
m = 0
For Each w In Workbooks
If InStr(w.Name, 关键词A) > 0 Then
Set wb1 = Workbooks(w.Name)
m = m + 1
ElseIf InStr(w.Name, 关键词B) > 0 Then
Set wb2 = Workbooks(w.Name)
m = m + 1
ElseIf InStr(w.Name, 关键词C) > 0 Then
Set wb3 = Workbooks(w.Name)
m = m + 1
End If
If m = 3 Then Exit For 'm还可设置3或更多;
Next
Set sh1 = wb1.Sheets(1)
arr = sh1.UsedRange
For i = 2 To wb1.Sheets(1).Range("B65536").End(3).Row '对应关键词A
If Not dic1.exists(Trim(arr(i, 2))) Then dic1.Add Trim(arr(i, 2)), i '行号
'If Not dic1.exists(Trim(sh1.Range("B" & i).Value)) Then dic1.Add Trim(sh1.Range("B" & i).Value), sh1.Range("D" & i).Row '行号
Next
Set sh2 = wb2.Sheets(1)
For i = 2 To sh2.Range("H65536").End(3).Row '对应关键词B
ro = dic1(Trim(sh2.Range("D" & i).Value))
If sh2.Range("C" & i).Value = "" Then
sh2.Range("C" & i).Value = arr(ro, 1) '这里也容易出错,不使用Value会导致出问题;无法赋值;
ElseIf CStr(sh2.Range("C" & i).Value) <> CStr(arr(ro, 1)) Then '这里就容易出问题。不用Cstr会导致字符串和数字不等;
MsgBox "错误!!!" & arr(ro, 2) & "学号不匹配!!!"
End If
sh2.Range("i" & i).Value = arr(ro, 3)
Next
MsgBox "已完成!!!", vbOKCancel, "程序处理"
End Sub
Excel不同工作簿之间提取信息的更多相关文章
- 我们无法找到服务器加载工作簿的数据模型"的 SharePoint 网站,当您刷新 Excel 2013 工作簿中的数据透视表时出错
假定您使用 Analysis Services 源在 Microsoft Excel 2013 中创建数据透视表.将 Excel 工作簿上载到 Microsoft SharePoint 网站中.当您尝 ...
- VB6实现Excel多工作簿数据合并
以前的同事,工作需要,让我帮忙完成多个工作簿的汇总. 我就用最熟悉的VB6写了一个Form应用程序,这是因为我不知道她目前的系统和Office情况,如果太高大上了,她不会部署安装.索性就简单粗暴地来个 ...
- excel破解工作簿与工作表保护
1.工作簿保护 1.1.使用压缩文件打开文件
- Excel统计工作簿sheet个数
按Alt+F11调出VBE后,在"视图"-“立即窗口”中输入: debug.print ThisWorkbook.Sheets.Count 回车后就可看到工作表数量.
- 把Excel工作簿的每个工作表提取出来保存为新工作簿
平台:MS office 2010 任务:有个excel工作簿,其中有上百个工作表,要求把每一个工作表全部保存为新工作簿,如果一个一个复制出来太傻了,可以用excel自带的VB解决. 方法:打开工作簿 ...
- 在excel单元格中提取信息
平时在excel中处理数据的时候,肯定会遇到在单元格提取信息的情况,比如在地址中提取省.市.地区等,如果数据源内容规整的话,可以直接使用left().right().mid()等函数直接提取,但是大多 ...
- C# Aspose.Cells导出xlsx格式Excel,打开文件报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃”
报错信息: 最近打开下载的 Excel,会报如下错误.(xls 格式不受影响) 解决方案: 下载代码(红色为新添代码) public void download() { string fileName ...
- 如何使用 Visual C# 2005 或 Visual C# .NET 向 Excel 工作簿传输数据
本文分步介绍了多种从 Microsoft Visual C# 2005 或 Microsoft Visual C# .NET 程序向 Microsoft Excel 2002 传输数据的方法.本文还提 ...
- Excel提示“此工作簿包含一个或多个无法更新的链接”怎么办
有时打开Excel文件时会弹出一个“此工作簿包含一个或多个无法更新的链接”的提示.对于初次接触这个提示的用户,可能会感到迷惑,不知道应该如何处理,这里以Excel2007为例,介绍一下这个提示出现的原 ...
随机推荐
- Cscope 安装和使用
CScope 安装和使用 一.安装 1. 软件下载 https://sourceforge.net/projects/cscope/files/ 2. 解压 3. 安装 ./configure --p ...
- PHP Socket(套接字连接)扩展简介和使用方法
PHP socket扩展是基于流行的BSD sockets,实现了和socket通讯功能的底层接口,它可以和客户端一样当做一个socket服务器. 使用这些函数时请注意,虽然他们中有很多和C函数同名的 ...
- 学习笔记之AutoLayout
Align:用来添加对齐约束. Pin:添加标准约束,比如相对于其他视图的大小和位置. Reslove Auto Layout Issues:可以让Xcode 自动生成约束,或者基于约束把子视图的边框 ...
- Ubuntu12.04下samba服务器共享配置
1 . 前置工作 首先保证你的Ubuntu能上网:虚拟机网络连接方式为NAT:虚拟机雨物理机互ping可通: 2. 安装samba sudo apt-get insall samba sudo apt ...
- jsp中把js变量赋给java变量,或者将java变量赋给js变量怎么做?
在jsp中经常会遇到把js变量赋给java变量,或者将java变量赋给js变量的情况,在此将通用的处理方法小结如下: java变量传给js好办,var a=”<%=javaParam%>“ ...
- Python中方法的缺省参数问题分析
引言: 在Python中可以缺省给方法制定缺省值,但是这个缺省值在某些情况下确是和我们预期不太一致的-... 这个诡异的问题,曾经困然了我几天时间,才最终定位出来-.. 测试代码 from datet ...
- [置顶]
【机器学习PAI实践七】文本分析算法实现新闻自动分类
一.背景 新闻分类是文本挖掘领域较为常见的场景.目前很多媒体或是内容生产商对于新闻这种文本的分类常常采用人肉打标的方式,消耗了大量的人力资源.本文尝试通过智能的文本挖掘算法对于新闻文本进行分类.无需任 ...
- python基础第一章
Python基础 第一个python程序 变量 程序交互 基本数据类型 格式化输出 基本运算符 流程控制if...else... 流程控制-循环 第一个python程序 文件执行 1.用notepad ...
- kubeadm搭建kubernetes集群之二:创建master节点
在上一章kubeadm搭建kubernetes集群之一:构建标准化镜像中我们用VMware安装了一个CentOS7虚拟机,并且打算用这个虚拟机的镜像文件作为后续整个kubernetes的标准化镜像,现 ...
- mysql安装优化
安装centos7 安装mysql解决方案1 安装mariadb解决方案2 官网下载安装mysql-server时区批量配置编码远程连接my.cnf简版的参数说明核心配置参数升级版mysql存储引擎M ...