粉丝1.2万获赞9.6万

大家好,欢迎继续学习小智的分析基础系列技巧视频啊,今天给大家分享的技巧呢,稍微有点难度,我们要利用违规在码 去循环便利,现在大家看了这张表,把符合条件的记录呢啊,把它啊复制拷贝到另外一张工作表里去, 这个呢就类似于我们在功能菜单上的高级筛选啊,就是把符合条件的数据呢,不光筛选,而且还要把它复制到另外一个地方, 但是呢高级筛选呢,有一个问题,就是他每次当我们条件有变化的时候呢,需要重新来啊,从头来过一遍整个的整个的过程啊,没有微微实现的这个同样的一个功能的更加的灵活,所以我们今天呢来看一下啊,微微 如何去实现这个过程啊,我们的今天的实现的过程呢,还不同于其他的这个一般的违规实现的过程,一般的违规实现的过程呢,是 先找到这个数据区域的最后一行啊,然后有行号拉示弱,然后呢从第一行开始呢,这个循环便利整个表的每一行 啊,判断条件之后呢去做。我们今天呢要稍微的去拓展一下啊,我们把这个数据区域呢定义为一个两维的数组啊,两维的数组,然后呢我们通过这个数组的方式呢去循环辨别这张表 啊,数组跟正常的这个放循环的相比了,相比较来讲呢,当你数据量比较大的时候呢,他的速度呢会快啊,而且会快很多啊的关键情况下啊,所以呢,我们如果掌握了数组的方式呢,对于表的循环便利呢,也是另外一项啊,非常重要的一个技能, 好,现在我们来看一下这个实现的过程,我们把光标放在谁的衣上打右键,然后呢去查看代码啊,把这个打开,打开之后呢就是我们的谁的一和谁的二啊,就是这两个 工作表,还有这个这是个然后呢,我们找到插入,然后模块啊,插入模块在这个模块里面呢,我们就可以来输我们代码啊啊啊,把 这个地方呢稍微呃字体稍微放大一下啊啊,看一下,调一个我们的选项里边的格式字体我给它调成二十 四吧啊,确定一下,好,第二十四,然后这样的大家能够看清楚代码,我把大家拉宽一点啊,扫,然后呢是 啊朋友圈怼他啊,叫就叫叫费友怼他吧啊,这样啊,会 简单一点。好了啊,现在呢我们来啊去操作这个数据,首先呢我们要把第一行数据,第一行数据标题嘛,我们要把第一行数据呢拷贝到 c 的二里面去啊,所以我们直接是 c 的一点, 呃,注意啊,今天我们所用的代码呢,因为是只局限的这张啊,工作表内啊,这个只局限这个当前的工作部文件之内啊,好多写法呢,并不是特别的规范啊, 但是我们的任务呢能够执行是没有问题的,所以先给大家做一个交代啊,我们不是说所有的变量就是提前定义啊,所有的写法要要完全遵照这个威逼的这个语法规范,那样太啰嗦了,我们就直接去用最简单的方式来去实现啊,所以先给大家有一个交 好的啊,这是一点啊,稍等啊,这是一点,然后 rend 啊,然后呢我们的是什么呢?是 a 啊, a, 然后点 啊,引胎入,就是把整行啊,然后点靠配啊,引胎入点靠配,就是把它拷贝,拷贝完之后呢?放到哪呢?放到这个谁的二啊?点啊?瑞,然后呢?是这个我们的 a 一好,这样的话呢,我们先把第一行标题啊考过去啊,把第一行标题呢,从这个 cd 一里面呢,直接把它考到 cd 二里边去,把放在第一行,那这说明第 一个,然后呢啊,第二个呢?我们需要去做一个这个是个二里边的一个行号啊,是一个初始的行号啊,是二肉啊,等于二,就是这样,我们数据呢就不占第一行了啊,就直接从第二行开始来,先设定这么两个条件。 然后呢接下来呢,我们来定义我们的这个数组啊,定义我们的数组啊,我们来 rendy, 等于我们也不也不是,也不用先声明啊,这个变量也不用去定义,直接就来了啊啊?是第一 第二啊,然后呢? rend, 就这样啊,一点一就是我们的 a 一嘛,一点一第一行第一列啊,然后呢是 叫咖啡 卡瑞瑞震, 就是当前的这个区域啊,当然这个这个买润纸呢,就相当于这个 c 的一点一的这个卡尔特别整,就相当于整个的这个区域,从以 c 以 a 一开始啊,从 a 一开始跟 a 一连在一起的这一片数据的整个区域啊,这是买润纸啊,这样来定义这个 这个迈锐这个变量的所含的东西,那么这个时候呢,他实际上就是一个书组的形态,我们直接可以调用他的一些主要的这种参数啊,啊否我们做一个循环 还是要做一个循环啊? offi 等于,呃,我们是从第二行开始循环,便利啊。 offi 等于 啊。二兔啊阿婆棒的,优棒的啊优棒的,这是只有数组才会有的啊。买 rend 这个。然后呢,我们要便利的是什么呢?便利的是这个一,一代表是行啊,一行行开始的。呃,这是我们的这个呃便利的过程啊,一代表是行啊,二代表是列啊,按列走,一代表按行走啊,在这个过程里边呢我们需要这个 再做一个判断啊,可以啊,然后第二, 哎。嗯我们要判断什么呢?比如说我们判断年龄吧哈先来说判断年龄,年龄大于二十五的啊,年龄大于二十五的啊,这个这是第三列啊,这个不是 哎。第三点,如果他大于二十五人。然后呢接下来的我们来去做这个另外一个判断循环啊,另外一个判断循环包 啊勾等于啊,然后是 s h h 二肉啊,就是我们上面这个啊,上面这个就是从第二个单元格啊,第二个单元格啊,不是第二。第二张工作表,第二张工作表的这个从第二行开始啊,只有他 等于这个啊不是啊,这个地方不是啊。高等于一啊还是一啊?图啊 pro 棒的啊,不棒的。这个时候呢,我们应该是还是买润纸 这个时候按列走了哈按列走,这是第二个循环列走啊,然后呢我们来去做一个判断,如果是这个第一个啊,如果这个这一条记录大于二十五岁的话。 然后呢接下来我们再接着判断啊,从一到二八的,就是从第一列开始,一直判断到这个最后一列啊,我们要把这个数据呢这个一横横的写过去啊,好,我们来看啊,是 二点四小时啊,十二点四小时,然后这个地方呢就应该是第二行 s h 二啊,然后呢是第啊勾列啊,第勾列啊,他的这个整个的这个数值呢,就等于我们 这个买睿智括号里边的应该是第几行?应该是第二行和第勾列啊,应该是这样啊,然后呢我们用这个 否耐克斯特啊,耐克斯特啊,然后接下来呢我们要对上面那个 s h 二,而呢要加一啊,等于 s h 二,就是每一个循环他会加一,这样的话他从第二行不跳到第三行第四行, 我们写每条记录的时候呢,他始终是在一个新的空行里边啊,实现这个过程啊加一,呃,然后是啊,这个我把它往里放一点啊,太棒往里,太棒往里,然后 太多往里,然后这个也是太多往里啊,最后呢这个我们是要往前往前啊,退回一点啊,哎,对, f, 这是第里边这层 n f, 然后接下来呢我们还要往前推一下这边呢,是这个哦, nice, f n f, 然后这边还有一个 nice 这样的,这个每一层循环呢,我们把关系搞清楚。好,我们啊这个代码呢基本上就写完了,我们试一下啊,试一下啊,我们来运行下这个代码啊,运行 运行,运行完了之后我们看一下势德二啊,势德二里边呢啊,这个已经是完成了我们的任务,看到没有,这个所有的年龄都是大于二十五岁的啊,就是年龄大于二十 五岁的啊,我如果加条件的话呢,我们改什么地方呢?我们来,如果你要加条件的话呢,你要改这个地方啊,这个 f 三幺四啊,一到第三列大约二十五啊,如果加第二个条件,按的啊,按的,按的什么呢?按的手 啊,爱,然后第,比如说第系列啊,一二三四五六七系列是班组啊,这个第七列, 如果第七列等于等于什么呢?等于一吧啊,就是班组吧啊等于一啊,对一组的啊,等于一班组,然后呢我们再去执行,这样就有两个条件去判断啊,如果两天都满足的话呢,我们才会往睡袋里面写,但是现在睡袋里面已经有有东西了啊, 这里有东西怎么办呢?我们这个时候呢其实可以在上面加一句啊,把它清掉啊,先把它清掉啊,我们现在呢把上面这个靠背过去的先不管了啊,现在我们把上面这个从第一行以后的这个数据呢啊给他清掉 啊,是一点二点锐志啊,然后括号 a 一还是点叫 carry 啊?然后呢这是这是从 a 一开始,这是在二级整个这一片数据。然后呢我们现在呢要把它清掉的话呢,你不能把第一行清掉啊,不能把第一行清清掉,第一行要留着,所以我们用把它往整个的这个区 往下错一行,奥普赛,奥普赛往下错一行,然后错零列啊,这样的话呢这个他会把第一行的功能流出来就闪出来,然后呢整个的这个选择区域呢就往下错了一行啊,然后呢我们这个就可以用颗粒仁 啊,抗震次啊,克里尔抗震次,就把他的这个内容给清掉啊,每次循环呢我们就先把第一行啊给他考飞过来,然后从然后呢紧接着我们把这个呃税的二里边从第二行开始的数据的给他清掉啊,然后呢再去执行我们下边的整个循环 来把我们的数据的考过来。好,我们执行一次啊,稍等啊,这好像有点不对。稍等啊,我们来直 行啊,这就对了啊,刚才这个我们在社团里面,哈哈,不给我们出结果啊,这比较怪。首先呢我们来看啊搬走等于一啊,看到没有?搬走等于一,然后年龄呢是这个大于二十五岁的。 好,那么我们呃这样呢还是比较啰嗦,那我们能不能再去进一步啊?再进一步进一步啥呢?我们来去做一个。这样啊,我们比如说 h 啊,等于 box 啊,一部 box。 然后呢啊请输入年龄啊,标准就是你把年龄标准给我输入进来啊,这是第一个啊,我们把这个结果呢给到这个 h, 然后呢这个顾客啊等 于音铺的 box, 然后呢我们来呃去给他提示一下,请输入 班组,这样的话我们两个变量呢就变成一个什么变成一个输入框,就是你可以随意的去输入你想要的这个年龄判断标准和这个你想要的这个班组啊,这样的话呢我们能够这个把这个哦,这个国服还不行啊, 这功夫好像是他内部的一个命令啊,叫班组吧啊班组啊,就这样啊,用拼音就可以了 啊。然后呢接下来呢其实我们需要做一个什么呢?需要做一个判定,因为什么呢?因为他应付的 box 收入的默认的他是字符型的啊,就是字符串形状的,我们在这里边,我们在这里边要判断的话呢,应该是这样,呃大 h, 然后呢乘以一,呃,这样的话就有把他的字符形态呢给他转成了,是吧?竖直的形态,然后这边呢这个班组呢也是这样啊,这是班组 乘以一啊,就是他如果是竖直型的话呢,那本身乘以一就没什么问题吧。然后呢如果是这个字符形态啊,输入的一般音符的话,音符的爆词输入框的话,输入都是字符的形态, 那么我们通过乘以一呢就把它变成了这个真正的数值的形态,就可以进进行运算了啊。哎,我们来试一下这个结果啊,先切到数对一,然后呢我们来去执行 眉形好了,输入年龄标准,年龄的话呢我们比如说我看一下啊,三二二十八吧 啊,年龄二十八,然后确定输入班组,我们班组呢我们要第一组吧,然后确定啊,执行完了之后我们来看下谁的二啊?这里边呢就只有这几个人了,二十九,三十,二十九,三十,然后呢班组一 啊,这样我们就实现了一个动态的一个神效的过程。最后呢最后一步我们来插入一个开发工具里边,我们来插入一个这个按钮啊按钮,然后呢把这个 画一个按钮,然后就直接把他对上的这个红的指定给他啊,确定,然后呢我们在按钮上来编辑一下啊,谁 选数据啊?筛选数据啊,这样的话呢,我们去每次执行的话呢都可以,比如说我们现在呢来去这个筛选数据啊, 年龄呢?我们要三十啊,然后呢班组呢我们要这个第 四组吧啊,第四组,然后确定好了啊,这个数据呢就给我们筛出来了啊,哈哈,这只有一个人啊,第四组年龄三十的只有一个人 啊,我们再再试一下啊,这个筛选数据啊,年龄呢?这个是比如说二十五啊,确定,然后还是四组,我们来看一下人会不会多啊?来确定啊,执行完了之后呢,我们来看四组呢,嗯, 四组就只有一个人是年龄二十五以上的,我们看一下啊,四组,四组,四组年龄三十一,四组年龄二十四,四组二十三,四组二十四, 二十五,二十四啊,他是这样,就是他确实没有这个年龄特别高的,我们再换一个啊,换一个,比如说三组啊,三组, 然后还是这个二十五啊,然后呢?是第三组,确定啊,然后我们来看这边啊,第三组有三个人啊,三个人,然后呢?这是大约二十五的,二十八,二十九,二十八。好啊,这个技巧呢,就给大家来分享到这。

本期我们学习用 excel v b a 红如何按条件筛选单元格数据。 大家好,欢迎观看本期视频。本期我们来讲一下啊,有微微红呢,如何按条件呢去筛选数据,比如说我们这边啊,有一组数据哈,然后上方的哈,我们去指定一个条件啊,前面这个单元格呢,代表是就说这个数啊,是大于等于几的是吧?就是一个范围啊,后面那个代表小于等于几, 然后我们后面哈再插入一个筛选按钮啊,就是插入一个形状就行了,插入里面形状,然后放到这里,然后编辑个文字叫筛选 好给他剧终对齐一下。那我们点这个筛选之后呢,我们想把啊满足这个条件的数据呢哈,就全部给他显示到我们这个绿色这个区域当中去啊,这样啊,这样有效果,那我们来试一下,看该如何去做, 那我们用 vb 来做啊,所以说我们点开开发工具,点开 vb 变音器啊,我们来写一下这个代码,然后这边的话,我们去插入一个新的模块,在这模块中继续这个叫做,嗯,条件筛选, 那我们的思路是这样的,很明显哈,那这里的时候啊,我们应该是要求哈这里面所有的数据哈,就说满足什么条件,大于等于他,小于等于他 啊,大一点长,小一点长, ok, 当然哈,这个地方的时候的话,我们可以用这个数组啊,或者说用这个数组的方法是吧,或者用单一格的方法都行啊, 我们这里就用一个最简单的方法,那怎么去做呢?就说我能不能去循环这个单元格中的每个值是吧?他如果说在这个范围之内,那我就把它放到右边去啊,就这样一个思路啊,那我这里先指定一个范围啊,比如说我们大于等于多少呢?嗯,二百到五百的吧。好吧,二百到五百的。 好,我们来试一下。嗯,接着写哈。那这个地方的时候,嗯嗯。我们去什么呢?哈?去循环这个表格区域,也就说从这里的 a 六到什么呢?到 c 十九是吧? a 六到 c 十九哈,所以说可以这样写,用一个标准的包一去循环 c 六是吧?嗯,到一个这个,嗯,不是 a a a 六啊, a 六到一个 c 十九,嗯,来这样一个范围, 然后呢声明,声明一下这个变量哈, r g 啊,单音格,然后在这循环当中满足条没条件的哈。如果说这个单音格的值他是什么?大于等于是吧?大于等于哪个单音格是 b 四, b 四 这样写哈,直接写个 b 四的啊,同时呢哈啊,它的值呢?哈,我们加一个 y 六哈。小于等于什么呢?哈?小于等于个,嗯, c s 啊, 这样一个条件,这样的点完六,点完六就单元格,意思是吧?比如这个值在这个范围之内的话,那我干什么呢?我要把这个值去放到右边这个单元格当中。从第几个单元开始啊?从第六个单元格开始,比如说哈,从这个润值 啊,一六开始啊。啊,这也是单元格开单元格的意思啊。单元格是吧,跟这个是有点像。一六啊,从一六单元格开始,这个一六就等于什么?一六就等于此时哈。满足条件的这个耳机是吧?他的值。 嗯,你要检测这个值,比如说六百二百二十一是吧?呃,就是这个一百九十二,再者什么呢?二 二百到五百,嗯不是再看一下啊啊?四百零九是吧?在二百到五百之间。那这时候啊这个范围呢哈就说干什么?此时他就应该放到这个单元格当中去是吧? 但是我们这个地方有一个问题啊,就说我们不能只把它放到一六当中。对啊,往下的话还有一七一八呢。那这个该怎么办呢啊?用一个小技巧啊,这边可以把满足条件的记个数标准用法啊。 n 等一个 n 加一。 呃,据说的意思就是有一个满足条件的 n 就等于一是吧?第二个是二啊,是这个意思,有一个变量哈。那 n 就是什么?就是一个动弹的从一是吧,只要有一个满足条件他就查数。然后这个地方是我可以把这个六变一变啊。 变成什么呢?变成连接一个五去加上 n 啊,因为这个 n 是从一开始呢,从一开始加个空格哈从一开始的啊,这样就可以啊,也就说哈 第一次是一一的时候就是一六。一六等于什么?比如说四百零六是吧?这样然后呢?哎这样依次往下去执行就行,执行完成之后呢哈弹出一框来,嗯筛选完成。 这样啊,当然哈每次筛选之前呢哈这个 e e 六往下应该什么?应该先清空是吧?所以说我们就写一个清空啊,一开始的时候啊,写一个 reng 这里哈从 e 六 最多不会超过一千一百个是吧?最多也不会超过一百个数啊,就这么多啊,然后我们给他什么呢? clear 或者说哈直接让他等空就行。好吧,就一开始哈,让这一列先等空,先清空一下,然后再干什么,再把新筛选的放上去,这是一个标准的一个筛选,好吧。嗯,好,那我来试一下啊,写好这个代码之后呢哈,我们点击 键指令红,然后找到我们这个红。啊,这个红叫什么呢?叫做条件筛选,我们来看一下啊,这里是吧,确定找到之后我们点一下。好,哎,筛选完成看到没有啊,这样啊,就实现这样一个效果。 就是嘛,哎,你看是不是在这范围之内呢,完全没有问题啊,这样的话就是按条件去筛选数据的一个 vb 的一个实战案例啊,大家可以去试一下啊。那这个的目的啊,主要是学习一些。那个学习一个什么啊?书写方法以及呢?哈啊,遇到这种按条件的该如何去做? 好吧,大家可以去试一下啊,感谢大家观看。那我们下方呢哈,也有我们 vb 的课程,大家如果需要的同学可以去学习一下。好,下期再见,感谢大家多关注和点亮我的视频。

嗯,大家过年好啊啊,虽然是过节了,但是呢还有好多网友在过节期间呢啊,留言咨询那些问题,所以说今天开始呢,我们就接着更新这个案例,是比较简单的,是按条件随机提取数据 啊,我们具体看一下数据需求,就是 a、 b 列是原始数据区域,正常 c、 d 列是没有,那么 a 列呢,就是这样用括号隔开的一堆数值, 用多少隔开他的隔开的数字数量呢?要远大于必列的需要随机提取的数量,那么他要做的事情呢,就是从这里面随机提取一定的数量,提取的数量呢,就是必列对应的数量,然后就按照提取数字的顺序 组合成一个字符串放在 c 列里面。然后呢你提取完之后,因为 b 列的数字个数呢,实定的数字数字个数要比 a 列里面十四实际的数字个数少,所以说这样提取完之后,剩下的部分我们要排序,从小到大要放到这里面, 要放到这里面,然后这就是我们提取完了这么一个过程。最后我们所有数据在提取的过程,要注意地列里面这个剩余数字的组合不能有重复的,比如说这地方你剩余是一丝, 但是你不能说这一行剩余又出现依次,这种是不允许重复的,他们是不允许重复的啊,这就是一个需求,我们看 看一下代码,代码是比较简单,就是字典对象后期绑定,前期绑定,后期绑定,之前我们有讲过案例,这个 r 是取,这是第一例啊,这 rosecont 呢,对应这个工作部,也就是说它是一个工作部,有 最大行数啊,最大行数,然后呢,这第一列最大行数 and 呢三,这个三对应 f, c, l up 这个参数就是从最下往上找,找到第一个非红单元格, r 就对应它,然后 a, r 数组呢,取的是 a, 一是 r 行两列,就取的实际上就是这两部分数据, r 行两列,因刚才说了 c、 d 列是没有数据的,这种全完全是空的。 这个时候下面我们 a r 数获取完数据的时候,就对着 a r 数组进 便利,这是对第二行开始啊,因为第一行是标题,然后将第一列 ar 数组,第一列,因为它数据用段号隔开,用 sleet 进行拆分, cd 呢进行拆分,拆分完了 s t r 一呢是制空,是个空字符串,是用来保存我们提取的随机数字的一个组合,用这字符串,然后我们就对 b r 数组进行变利, i 等于一到 a r, 大家注意一下,这里面用 v l l a r g 二,你就要取从从这个拆分完的 b r 数组里面要取这么多数量的数值啊,大家注意一下,这里面用 v l 处理。之前呢案例,我只有这地方乘以一的啊,有用乘以 一的,也避免它后面是文本格式,我要转成数字格式,有的时候我们用乘以一,这个最近呢有的网友问过啊,好了,这个地方就是去随机数, 这 run the beatrin 呢,这个函数是表格函数,是从二零七版本以后有呢,如果大家还用零三版本,那你用不了这个函数,它是从零开始,然后到变二数 上边界,然后这个区间随机一个,随机数出来,随机整数,然后我就判断这 b r x 里面是不是空, 如果是空的话,证明里面没有有效数字,那么就跳转到 l e 这个地方。说一下,我用的构图语句比较多啊,几乎没有用 y 语句,大家可以自己使用 y 语句来实现。好了,如果这 b r x 里面不是空的话,那 x t r e 就加语文逗号 与上后面这个对应的数值好,这样组合到一起要指向下 b i x, 这个时候这个数据证明他已经用过了,我们就把它织成空啊,复制成空,这样让他进行循环,最后实现了我们提取的 按照 b 列数数值个数进行了提取,提取需求我们的结果。这个时候呢,我们再用障眼函数将 b r 数组重新组合到一起,用逗号组合到一起。 组合到一起呢,就是有数值的部分就组合了,就在一起,没有数值就断号连在一起啊,大家可以自己看一下,这时候我们就用字典来判断, 如果他字典中存在他存在的话,那证明我们取的这一组数据不合适,然后你就跳转上面继续取,那么这字典对应的实际上 str 二这样撞引到一起, 实际上对应的是什么?就对应的剩余数量,因为这个数字我们观察一下这个数字从小到大排序的,实际上 s t 二里面啊,不 s t 二啊,就这 b r 数组,你清空完了之后的数据,剩下的数字他是从左到右 也是有顺序的,你撞引到一起,他是带着顺序组合到一起的,所以说我们直接放到字典里面进行判断,如果他存在,那证明就跟你前面的地理里面有重复的,所以你就翻上来,你再接着重新去随机处理下面这部分, 然后呢,如果不存在,那你当然要把这只复制给 dr 啊,字典 d 用来下一部分循环的时候判断是否有重复。这个时候呢,我们将第一列啊原数组我重新利用,刚才说了,这个表格数据只有前两列,我要把随机 出来的这个结果要重新覆盖到,哎,第一列对应的区域,所以说呢,它 mid 二,从第二个字符上开始,因为第一个刚才从这地方用的话九十个逗号,从第二开始,因为大家注意一下前面哈,我加了个单引号加进去让它转成文本, 避免有的数据是有问题的啊,这个地方大家注意转成文本加这个,另外你可以把内列设设置成文本格式,要么就加这种转成文本。这之前最近呢也有朋友咨询啊, 好了, s t r 等于空, s t r 就是把后面剩余的几个数字取出来,就对 b r 数字进行变利,如果单元格不是,如果对应的这个值 带领,那我们就把它取出来,也是用逗号隔开,取完之后依然用密的来提取啊。前面还是加了一个单引号,让它转成数值,因为刚才说了 这个是放在第二列,也就是说把这个结果是对应 a r 是放在 a r 的第二列里面,然后呢,将 a r 复制到 c e 这个区域, r r 两列,对吧?但是标题对应 c e, d e 的标题做一下修改,这样就获取了我们需求的数据。那我们在这呢,我们设计个断点, 可以看一下我们什么结果,这个 s t r 也是重复利用, ok, 好,这时候运行完,我们看一下 b r b 二里面好多空呢,剩下四和五,对吧?你看一下,剩下四和五,就这么取完,剩下四和五,那么这个时候呢?我复制给 st 二, 好看, s t r, 它就是中间一顿逗号,对吧?留了四和五,因为四和五是挨着的,那么下面我们就不一一看啊,正常执行就 ok 了。 好,这个时候这面就变了,当然我们再点,大家可以看一下,这面数据还接着变啊,整体上代码是比较简单。

现在为大家演示一个表格数据批量提取和批量写入的工具,不需要打开表格,只要选择要操作的表格文件,输入要提取的单元格地址,就能批量提取相应单元格中的数据, 同时也可以通过单元格地址反向将内容写入到表格中。

下面讲解一个案例,是从呢一个文件里面选中一个文件啊,叫数据源文件,然后将这个文数据文件有多张表格,就我截图这种数据文件,数据源文件有多张表格,那么就从这多张表格当中提取数据, 那么提取数据的原则是要表格当中的 b d 啊,比如说四 g 这数据源文件, 四 g 这张表的 b 列啊,其他表格也是 b 列,对应的这个单号,如果跟这张表的 a 列单号是一样的话,那么我们就提取对应的数据, 那么提取的时候呢,比如说四 g 这张表里面,如果有这列的单号,那么我会把四 g 这张表添加到这个位置啊,就比如这个四 g 是添加过来的,跟这列单号有一致的,那我们就把表拷贝过来,但拷贝过来之后呢,我们只要单号一致的数据,其他不一致的数据我们不要啊,这就是我们基本需求。 我们看一下文件,这是我们的程序文件,这是所谓的数据源,就是我们提取提取数据来源的文件,他俩在同一个路径下。好了,我们现在看一下代码, 这里面呢使用代码呢,我们使用了 feel that log 对象,这个因为数据原文件啊,正常来讲,如果是固定的,那么原来说过你直接设置路径就 ok 了,这种我们不确定是否固定的,所以说我们就用 feel that log, 然后打开对 对应的窗体,让你去选择文件,那么这个说过了,这个就是打开窗体时候显示的默认路径,就是本程序文件的路径。然后这是一个题目的提醒,告诉你请选择数据原因这个文件,然后呢这是多选,然后我们设置于 false, 因为我们只会选一个文件这地方做一个 文件所谓的过滤,就显示你选择哪几种文件类型,这个就显示 excel 文件就 ok 了。然后这个时候如果你选了对应的文件的话, 那么我们将对应的文件复制给 f 这个变量,如果没有选中,那就推出,这是 feel dialogue, 我们之前讲过这个对象。 好了,下面这个地方就用的字典对象,因为我们要将 a 类的数据放到字典里面去,便利其他表,然后做对应的提取嘛,然后呢,我们将这个文条件,就这张表啊,我们复制 变成 sht, 然后呢, r 是取这张表 a 列有数据的最大行号,有条件,这张表有数据最大行号,然后呢,将这张表 a 一到有数据最大行号这个区间,我复制给 ar 数组,然后呢就便利 ar 数组,将对应的所谓的单号复制给字典, 然后但是我们要判断一下单元格是不是空啊,空我已经不复制了,因为空没有意义。好了,下面是要打开对应的文件进行处理,这个地方用了屏幕刷新和那个告警提示这两个啊,这两个属性设置于 false 以前,我们左右下面呢,就是对 我们当前程序文件里面的表格进行便利,我这按序号进行便利的啊,从最后往最前便利。然后我们这有一个判断,如果这个表名不是等, 等于啊,这个表面就是我们刚才按序号变利的这个表面跟 s h t name 这 s h t 变量。我们在这做的设置就是条件,实际上表明这个条件如果不等于条件 这个名称,那我们要把对应的表删除,实际上最后就相当于这个文件的这些表只留了一个条件表,其他通通删除好了,然后这地方 words book, 然后就是 打开我们这个文件,选中这个文件,然后呢对每一张表进行便利,便利呢,我们将表对这张表呢已用区域的数据呢,就是复制给 ar 数组, 然后呢这 r 等一点注意啊,是这 r 等一,是我们对 a r 数组里面数据进行重新写入,这个地方就是从第二行往后变利。如果刚才说了单号起这个文件啊, 刚才这个文件我截图这个文件里面必点对应的是单号,所以说我们就对他单号进行判断,大家注意一下这地方用了这个啊, 之前说过这个事,如果他单号存数字的话,我表格有的地方是文本,有的地方是数字啊,你用它来判断可能要出问题,所以说这个地方我们加了一个引号,让它转换成 文本格式,然后这样统一格式来进行判断啊,如果存在的话,那么我们 r 等 r 加一,控制行,二加一,然后将对应的行呢在 ar 数字里面覆盖掉,覆盖到原来区域进行覆盖,这样处理啊, 这样循环一圈之后,如果 r 大于二,大于等于二,因为 r 其实就是一,若大于等于二,证明里面有额外的数据了,就是有满足的数据。这个时候我们就把对应的表进行拷贝, 然后 s h, 我们就是这个边里面这个文件,然后拷贝在位置, after 是在 s h t, s h t 呢就是条件,这张表实际上就是这个工作部的第一张表, 好了,我们拷贝到 shd, 就是这张表的第一张表的后面,实际上就是就这个位置啊,就变成心拷贝的表,就变成第二张表,那么第二张表来了之后,我们要把它已用区的内容清空,然后呢我们再讲 a r 数组的内容 复制给新拷贝过来,也就是第二张表这对应的区域,这样就有数据了, 这样是每一张表循环完了,就实现了我们表格数据对应的提取,最后这个将对应的这个打开的这个文件关闭,然后其他属性一设置就 ok 了。好了,那我们先直接 行到这个位置吧,因为前面的执行没有太多内容可直观体现出来这个地方执行到这可以看到对应的表格删除。第二,删除表格的时候一定要带这个啊,要不然他会有一些提示的。好了,我们执行一下, 这是选中文件啊,去选数据源,这文件看到了这是所谓数据源标题。好了,到这之后我们看到这张表里面只剩这条件,这张表其他都已经删除了,下面没有什么东西,我们直接往下执行,就是每一张表拷贝过来啊,我们看一下, 这时这个文件打开了,然后这后面是我们程序文件,他把第一个四级文件这些匹配上拷贝过来了,然后下面我们再执行, 我们看一下是否有拷贝表了,没有,那就是这张表里面没有对应的单号,那么接着往下执行,然后还是没有, okay, 好了,这个时候他有了,其实我们看这也能看出来条件,靠了个春天,这张表过来啊,我们就不一一执行了,大家可以自己试一下,这样执行完就完成了所谓的数据提取, 看一下,这样表对应填完了。嗯,总体上代码不负四把,思路也比较简单啊。相关的案例会发在 b 站,大家可以在对应评论区的链接上进行下载。

下面我们讲一个案例,嗯,按条件去数据,这里是这样的,就是我们这有一些数据啊,这是我们的数据,也就是要被提取的数据。那提取的数据现金条件呢?是在这部分里面, 请你解释一下这一部分啊, g r s 三这个区间的数据和 g s 三这个数据呢,区域是固定的,这部分数据呢,我刚才说了,他从第五行往下可能列数还会再增加 啊,这个我们倒不考虑,他主要是讲一下这个条件啊,这里面所谓的意思就是零,你在这组数据的零必须出现一次,三出现一次,两次或者三次,五出现两次,六 出现一次,两或者两次九出现一次。那么其他带零的呢?就代表不出现这个数据呢?不要包含这些零的数字, 这是一个条件。而这组数据里面其实他的限定条件就把结果限定死亡,因为他有六组数数据, 这个零出现一次,这个五出现两次,这个九出现一次,那实际上就就要有四次,那再加另外两个数字的话,就会把它限定死了。 这组数字组合就是零,三五五六九,只不过顺序不一样啊。当然了,如果这一组数据有七个的话,那你就会发生变化,所以说我们要解决这个问题要考虑一下,尽可能考虑一下通用性啊,让我们看一下代码, 我们使用双字典,基本思路呢是这样,我们先用一个字典便利这组数据啊,如果这个数字不是零的话,那我们将把这个值作为字典的间值, 然后把把这个这个我们放进一个数组里面啊,把它这个序号作为资源的值啊,注意啊,是八 这个作为剑指啊,然后读一个字典,然后呢,我们再对这个区域,也就也是你放一个数组里面进行便利, 逐个珠行进行便利,然后用另外一个字典将每一行里面的数字呢进行计数,因为字典案例我们讲过,计数是比较方便的啊,然后将 他技术的结果再给另外一个进行比较,对着字数进行比较,看是否满足需求,这是我们一个思路。然后我们再回到代码,看一下两个字典对向后期绑定这个 a r ctrl, b n g 啊, c 五 ctrl 名字,这个特别说一下,就是目前对这部分区域来讲, c 五 ctrl 名字是指这个区域,如果说他再加一个数字到这的话,结果还放在这,那我们用 ctrl 名字就要出问题了啊, 单独讲过,它是指这个区域连续数据的一个区域,如果在这里面再加数据的话,结果放在这儿,那 conderind 就会变成这样啊,所以这个地方大家注意一下啊,这是 conderinder 的使用。然后, br 啊,那是固定的一个区间,就是 g e s 三这个区间, g e s 三这个区间啊,第一个我们使用第一个字典,刚才说了我们的思路,第一个字典如果判断 b r 数字的第三行数据 不是零的话,那么我们将这个数据第一行,也就是说这行对应作为建值, 然后立号,注意他的值,注意他是在 b r 里面的序号啊, b r 数组里面序号,然后 r 是横号,我们是控制在 a r 数组里的位置,那我们还要在 v r 数组里面写数据,也就是 a r 数组,我们重复再利用,下面对 a、 r 数组进行便利。 首先这个字典要重复利用,所以我们先把它删除,因为我是每一行用来他进行技术的啊,所以说这是对这一行进行便利。但是在 这边我们加了个衣服语句啊,中途我们要跳出这个循环,在什么条件下跳出?就是说如果低于这个字典里面 不包含这个数字,那就不满足要求,我们没必要再往下循环,就直接跳出了,这个循环就干这个,如果都没跳出的话,用滴滴字典对这个数字进行技术,有技术统计的,他出现多少次。下面这部分又可以一幅判断,一幅判断,判这两个字典你 去看的属性是不相同,也就里面有数据,有多少个数据的数量是不相同,如果不相同的话,那也是我们没必要进 统计了,肯定是不符合要求的。下面呢,再对 d、 d 字典里面的键值进行变利,第一个呢, y 等于 d、 d、 k, 这就是 d、 d 字典里的 k, 这键值对应 出现的次数 c、 r, 哈,我们注意一下啊, c、 r 我们的四律的拆分,拆分哪一个? 我们是拆分在 b、 r 数组里面第三行,嗯, k 加一是什么?因为 k 呢?是对,这个 要注意,因为这里面呢是从零开始的,这个值是零,要注意一下这个啊, k 值是 对应的这组数据里面,它的起始值呢,是零到九啊,它是零加一呢,这个一就是在 b r 里面的序号,因为零是在 b r 里面的 第一列啊,所以大家注意一下 k 加一,然后我们根据做了一下拆分好了,那拆分完了之后,我们就是 对这个出现的次数跟下面这个对应的次数做一个比较,看符不符合要求,不符合要求我们依然退出,这退出这一本代码跳转到这啊,所以不符合要求呢,就是你这个次数小于 c r 零,或者你的次数大于 c r 数字的上界对应的值好了,那我们就跳出循环,如果这个循环一直没跳啊,这这个判断,这沟通语气一直没在这个,在这个程序上冥币执行,那意味着这一串直接符合要求,然后啊呢啊加一,那就是说我 行行加一,然后就放循环,将接列的值放到 r 列, r 列值 r 行啊,这接行的值放到 r 行,就对 a r 输入进行重新利用,然后执行完之后,我们判断一下 r 十度大于零,如果大于零的话,就意味 里面有符合要求的结果,那我们就对接一这个区键进行复制,将 ar 输出符合要求这种数据啊,这是二行啊,主要是这复制到这个区域里面,这就是我们代码,我们把这部分清空 执行看一下, ok, 这个可能给大家感觉有点绕啊,但是方法也不局限这一种。

嗑完一包瓜子之后呢,我终于知道如何解决这个粉丝的提问了,他需要通过底点来判定,如果底点等于三,那么就把对应的这个数据啊全部搬到这边来啊,这个怎么做呢?随便一大码写在这里, 我们来测试一下效果啊。我先把这个清空,然后呢点击数据移动第二用这个红,然后呢在这里输入判定条件,输入三,点击确定所有的三的数据啊,就被复制过来了,对不对?好,再测试一下, 我输入二,点击确定,那所有二的数据呢也被清理过来,对不对?我如果把这些区域改成一个四啊,然后我再点击移动,输入一个四呢, 所有的对应的这个四的区域,整个对吧就被搬移过来了,那这个代码呢,其实很简单,总的来说呢,也就十行,这个代码呢我会放到评论区,如果你刚好用的到,直接复制粘贴修改就可以使用了。 如果觉得我的视频还可以呢,欢迎点赞留言,也可以收藏本视频,然后呢在你空的时候练习一下。

下面呢讲一个案例,数据提取整理基本需求是这样,有两张表,一张表是录入,一张表数据录入是原始数据,就是我们在这张表填写一些东西,然后提取到这里面 基本的需求。原则是这样,这张表,然后这第一是编号,输入编号,然后这些对应的材料名 就一三五七对应材料名,当材料名后面这单元格数数量之后,我们要把这个数量还有这个材料名及对应编号都提取到这张表里面来,这是编号,这是材料名,这是数量。基本需求就是这样, 那么在这一讲里面呢,都是些基础的东西,我们对有一些之前讲过的东西呢,都稍微多说几嘴巴,因为有的朋友可能说,哎呀,你这东西有的时候可能讲的相对粗, 预习不是太明白,所以这里面我们就多介绍一下,这里面呢代码呢是这样,我们这 br dmdr 加括号,这是定义的动态数组,动态的数组就意味着我们可以对他的边界进行调整, 这 a r 等于录入就这张表 a e 的当前区域。卡尔顿君者啊,大家注意一下什么东西, 这个 a e.contineng, 这是我们之前讲过,这对应的区域是 a, 这个连续跟他有连续的 行列区域,然后这样联系到一起的。如果说你这个单元格只有 a e 有数据,其他都是空的话,那么这 a r 等于它意味着什么?东 ar 里面事项就是一个值,而不是一个 数组,而不是以对应的表格去对应的数组。我们加了下面这个外,这个是多,对于这个程序来讲,他是一个多余的代码,但是他是对 a r r 这个速度做了一个判断,这个意思 是不就是对着 ar 进一下判断他是不是数据?刚才我们提了一下,如果这个单这张表里面只有 a 一里面有东西,其他地方或者说 a 里面有东西,这第二行,这臂力,这这个区域啊,这个区域全是空的,什么东西没有?那么 a r 实际上就对应的是 a, 是单元格里面的值,对应的是一个值, 所以说呢,这个外等于他的话,他实际上就不是一个数组,这就要判断这 ar 是不是一个数组,因为我们下面要对 ar 进行循便利,循环吗?循环便利,你要保证他是数组,你才可以循环便利。而我们很多程序的 大家看到很明显我没有对这个 ai 进行判断,所以这个地方提醒大家,我们可以对他进行判断,避免你这 ai 对应的区域只是一个值,只是一个单元,一个单元格只是一个单元格对应的一个值。这个意思。 然后呢?下面刚才说了, brbr 是个动态数组,动态数组我们用语定重新定义他的边界,这里面我们 a r r 对应的数据,我这地方是用了他的 最大,实际上就相当于理解单一个最大这个区域的最大行号乘以它最大的列号。这个实际上大家看一下啊,因为这个范范围是完全是放大化, 因为他这里面是两列里面才取才取一个数吗?所以说这地方你可以除二,你可以不除,只要保证你的系统资源够用,不出错,你能评估一下他多大范围就 ok。 有的地方我们从定义数组大家可以看到,可能这地方直接上九九九九九千九百九十九,因为我认为这个区间够了,甚至在这个地方定义的时候,我直接就把那个九千九百九十九定义好了,然后后面直接当一道三,还是不用为地母这个方式, 这种低压根据实际情况进行设置,而这种是相对比较灵活的啊,动态变化吗? 在这设置完之后, ok, 我们就不动了,有的地方有的地方大家看看看瑞金后面加 proceo 啊,这个我们在这不提了,那个就是说加 proceed 之后,他以前输入的变二数数据会受到保护的, 这个就简单提这么一嘴。下面就是对 ar 进行便利,很简单吗?我们首先对他的每一行进行便利,然后这是对列列里面 staff dpo 二的原因,因为它是数组 staple 的原因,因为我要变这个这几列,对吧?这几列我们不管,所以它每次不长就是二,然后呢它的列号从二开始,所以它就便利的二四六八这个区间,然后呢 他的结束呢?那我们用他的二位啊,就是他的对应的列这个区间,然后我们就判断这单元格,我们用赖样函数判断他里面内容长度, 如果他的长度大于零,那认为就有数据,那么这时候我们直接二二等于二加一,这是对应 b 二数据里面的行号二,因为我们没有定义,其实他处置化就是零,所以第一次他就变成一了,让一的之后我们将编号很固定, ai 第一行第二列,就这个单元格的编号放进去,然后呢二行的第二列存的是什么东西?存的是它的材料,也就这一部分,对不对?然后呢就是 a 减一,因为 a 我们对应的是这个偶数行, 把偶数列啊,所以他就挨减一,下面呢就是把对应的直我们直接放进去, ok 了,这样生成的。 br 数组里面的数据区域就是我们需要的啊,就是到二他对应的行号一到第二行是我们需要的, 然后这个 vba 我们这加了一个什么 isbs 啊,这个大家不用管这个为什么加这个,本来要讲些其他的,就是 vba 一点, is 这种判断大家可以用,就是你看还有 east, dat 之类的啊, is ever 就是对应的,大家可以考虑一下。在你日常使用这代码编程的过程中,有的时候我们往往很确定,就不需要这种东西去判断,但是有的时候你不确定,你要考虑用这个,用这个进行判断,这我们给它删掉啊,这个地方 我们是数据区域,是每提取一次,把原有的数据除了标题之外删除,大家注意这个啊, 这由此睿智讲过了, offset 一就以用区现象下移一行,然后内容清空,然后这地方得 r 行号进行判断,因为如果等于零的话,因为 b r 里面没有符合要求的数据,所以说我们不用进行复制,只有 r 大于零的时候才有符合要求的数据,所以说我们从 a 二 标题上保留,然后进行复制,复制区域是二行三列,那么有的人说,哎,我要保留原来的数据怎么办? 就是保留的话,那我们就把它给注视掉,保留的话,那你其实你要付的辅食位置就是不能从 a 二辅食正常来讲,对方正常表示 a 八, a 八的话之之前我们讲过用的 and 啊,这里面我们就不在这写了,用的 and, 大家可以回去看一下, 用按的来定位这个单元格,然后从他往下写,就是这样。然后呢代码我们可以先手动把它删除啊,因为这地方我们做了个注释,然后运向代码 来看一下, ok, 这就是我们提取的结果。

嗯,下面讲的一个案例是有一个网友啊,嗯,提了一个需求,因为是文字描述,没有见到附件,就是根据描述的话猜了一下,可能是这个意思,就是有一个原始数据表,上面有好多列,这是标题,他 的需求呢,就需求将这张表的某些列提取到另外一张表里,比如我们需要提取这些列,大家注意一下,这些列跟你这个原始数据的列的顺序是不一致,他是共,他是有调整的, 所以这时候呢,我们使用这两种方法吧,简单模拟了啊,这两种方法一个是使用字典,一个是用 fine, 几乎都是一样,这逐列提取,然后这个是字典对向后期绑定嘛,这是因为是 主列,总是要拷贝的话,我们这地方屏幕刷新设置为放肆属性,这个是当前这张表格,密是尺,因为我们现在是表格区域, 表格代码区域写的代码吗?所以说密就只对应的表格。然后呢,应用区域出了标题之外清空,然后呢将对应的标题读入字典摄入,最后将它的 列应该是列,这不叫列表啊,列号有顺序作为他的值,这个地方就是对原始数据进行便利,然后 and 这地方我们讲过,这样就不重复了。 这个地方如果判断标题是一致的话,那么我们就将对应的列拷贝到字典,什么样字典对应的这个列的位置 靠背到我们需求表定的位置,这样就完成靠背了,这个我们就不用执行了,大家有兴趣给自己执行一下。下面这也是另外一个思路,这前面都是一样的,下面主要在这个地方,这个地方我们是用发音的,这地方是我们便利当前这张表的各个标题, 各个标题啊,第一行各个标题,然后呢我们是使用发音的,在第一张表有原始数据表里面查找 当前表这个标题的值。卢卡的这一部分呢是指完全匹配啊,找到这表表明是完全匹配的,然后呢如果找到了,那么我们被找到这一个标题,当这整列考虑到 需求,这张表对应的单元格及以下,这是这样的需求,我们执行下这个看一下就可以了。 第二看一下,这标题下面已经清空了,然后呢那么最起码相关的数据由过来, 这个是标题,是跟前面的顺序是打乱的,这张表呢相对于标题跟前面的顺序是一致,只不过相当于中间部分的列被删除了,感觉部分列给删除了。一种操作方式就是将原始表整个表的表格内容考虑过来,将不需要的列进行删除。另外一种呢 就是可以考虑使用优点,一次性把所有的裂考虑过来,这是我们之前做的啊,我们简单说一下,前面都是一样的,没什么好说的,这也是将对应的裂 标题,然后对应的列号啊,独自点这个地方我们使用,因为他刚才说了他跟原始数据有一个存在顺序上的失信,所以呢 我们把需求的都于是用念组合到 rng, 然后最后呢就按着整列的拷贝, 嗯,完成这个数据的口碑我们直接看一下,这个也是相对比较简单的。

哈喽,大家好,今天,呃,我从我学习 vba 的那个群里面就下载了一些相关的作业习题,那么我选择了两个,我看了一下,就是比较跟我们工作当中嗯,稍微接近一点的是这一道题目,就说你首先看一下这 这一张表,然后有时间,地区、商品名之类之类的,然后就是一个销售的清单,但他是一个汇总的清单,按照时间,然后有各个地区的不同那个商品的一个销售情况,然后看一下这个数据,最主要是数据有两万七千多行,这个数据是比较大的,然后比较大的数据的话, 嗯,可以就说就说在筛选或者是查询的时候,是你如果说一个一个查询的话,就 ctrl f 去输,或者是输名字啊,输型号啊,这样一个一个去查询,或者是你用筛选, 然后去也是一个一个找,把它找到啊,像这种如果按型号找,型号特别特别多的情况下,嗯,你还得找挺久的。 然后我们看一下这一次作业的一个要求,就请在地区下面的第三单元格输入地区名称,可以是全称,也可以是简称,那么既可以是全称,也可以是简称,就是说他是一个模糊匹配,比如说我想要查天津,那么我可以说天或者金或者是天津,他是一个模糊匹配。 然后第二个要求是将连续包含录入文字的地区清单,以查询表为模板,将符合查询条件的记录写入这个模板,在这也是说他的标题是这样的,然后按照下面的之前他查了一个上海的,他就告诉你反正全部要填上海的这些信息,那么他的呃模板,大概的模板就是这样, 一般来说的话,第一行的标题的话,我们是不动他的,你每一次查询的时候,他下面的信息可能是不一样的,你这一次查上海,那下一次可能查北京、广东、深圳啊之类的都都是的。所以说我们每一次面跟那个地区查询的时候,我们都要把之前查询的信息给清除掉, 然后其他的需求的话,什么第一在第三单元格连续输入次程序可以重复使用,其实就是就是需要录制一个红,然后第二个是在第三单元格的录入 需要触发欠给事件,其实这个事件是一个工作表事件,就是当我们工作表里面的一些单元格发生直的变化,或者是单元格就说变,从中 a 一变到 a 二,他也是一个工作表的事件。然后第三个要求是调用一个散步过程,并传递地区的参数进行查询, 那么这是一个就是说过程的传递要写一个调用的过程。然后这第四个是若查询结果有数据,请将查询表另存为文件,然后秘密赢规则怎么怎么样,这是需要将你的查询结果导出,然后按照相应的文件零的设置去把结果保存下来,然后然后还要保存在,就说这个文件所在的 同一个目录下,比如说我们需要新建一个目录,我们现在就一个一个来,就说第一我们想要达到一个什么效果,就是我们先写一个过程,然后能够达到我在第三单元格输入一个地区的时候,他就能把相应的相应地区的一些信息全部查查出来,然后放在这个 就是查询表里面,因为查询表里面格式他是设置好的,那么我们要注意一下那个查询表,我们查上海的话,他可能看一下最后一行四五四五,他在四五四五哈, 那么我们查查其他其他地区的话,他不一定有这么多行,然后这个格式的话他是加了边框的,对吧?加了边框,然后最主要是这个边框的设置,其他的话我可以暂时性的不管他, 所以说他,嗯,他的那个查出来的结果函数有真有减,所以我们要要注意一下那个添加添加那个边框的一个设置。那我们一步一步来工作表的事件的话,先不管他,我们先来做,我们先把这前面的一个关掉,我们先来做,先来做,做一个散步过程,就写个模块。 那我们想一下,就是先我们要设置一些,我们先要设置一些一些啥呢?我们先要设置一些变量, 第一个变量就是先设置一个循,就是循环变量,我要去,因为要从第一行循环到最后一行嘛,所以说我肯定是先要去做一个循环的操作, 另一个变量来计算它的函数, 这个面料是最大行, 然后待会我们还要参与循环,所以说我们要定义一个数组,当然在这里你也可以不用数组,嗯,我们先按照先按照那个简单的来数组,然后这个数组是装数据用的,就是就是两万多行的那个数据,然后还要定一个结果数组,结果数组就是说我按照地区来查,我把所有地区的相关信息存在那个另外的一个数组里面,然后还要定一个循环变量, 因为我刚刚看了一下数据两万多行,那么用一的卷就可以把它包含完,然后剩下的其他的那个变量的话,我们用到的时候我们再来再来说,然后还现在就说还要定一下,就是我们有两两张工作表在切换,对吧?所以说我们还要定一下,就说工作表的变量,因为现在设置到两张表在用,所以说,呃,我暂时先设置两个工作表的变量,我先把他工作表给他确定好, 好,那么第一步就是说我要虽然说第一步可能大家一想到就开始说我要去确认第三单元格他有没有直播怎么怎么样,但是我们在这里的话,我们先要做的一件事情就是将看一看查询表里面有没有信息,如果有数据的话要把上一次的那个数据清空掉。 先第一步就是清空查询表里面的数据,就让这个线头二的变量工作表变量,然后就让他等于这张查询的工作表,然后下面我们的所有操作的话就在线头二的那个查询表里面去找。那么我们先要定位到他的最后一行, 我们数据的话连续数据你可以从上面开始第一行开始往下定位,你也可以从最后一行开始往上定位,如果说你的数据中间没有就说突然空那么一行,那么你你就采用从上往下,但是如果说万一中间有一行是空白的,那最好还是选用从下往上去定位,这样的话他才能够定位准确,不然的话到时候你删删那个信息的话会漏掉一些, 那么这样我们就获得了那个查询表当中的最后一行,我们来进行一个判断,判断那个最大行他是否大于一,如果说他大于一的话,那么他就是有数据的,我们要进行相应的删除,如果没有的话,那不管他有有数据我们要进行删除,我们要从 a 二开始,那么现在数据 是固定的,我直接到 i 到, 然后把我们插到的最大行, 这里有两种,一种是清除,一种是清除内容,那么清除第一个克里尔的话,就是把那个格式也清除掉,那么如果说克里尔抗分子的话,就是只清除里面的内容,就那些,但是边框线还在,有一些其他的颜色的设置也还在。好,现在我们的清除工作都已经做好了。

在这边只要输入部门三,我就能把这个边表格里面所有部门三的信息都提取到这边来,这个是怎么做的啊? 我们看一下效果,对吧?这边部门二他就变成了部门二,部门六他就变成了部门六,这边还有个合计,对吧? 那么开始说怎么做?就在这边选中区域啊,输入等号, f i l t 啊, filter 函数啊, 这函数呢?第一个数组,数组就是整个表格的数据,我们选中第一例第一行,然后按 ctrl, 加 shift, 加下下箭头,然后输入一个逗号, 这里个包括呢?就是说我们现在是按部门来选的,对不对?那我们就选中部门这这一列啊,这这, 然后这边后边输入一个等号,等于什么呢?等于这这边的部门啊,接着按 ctrl, 加 shift, 加回车键啊。

啊,大家好,欢迎继续学习 xo 技巧精粹系列视频教程, 这节能给大家来看一下如何利用 vba 代码呢去自动化高级筛选的操作啊。 xl 里边的高级筛选功能呢,是非常强大的一项功能,它可以按照我们指定的条件啊,单条件或者多条件都可以啊,去快速的筛选我们所需要的目标数据,而且从这个筛选速度上来讲呢啊应该是 xl 里面最快的一种筛选方式,比我们普通的这种下拉菜单啊,下拉点选这个条件的筛选方式呢,要快的多 好,我们先来看一下它的基本操作啊。呃,我们首先呢有这么一个非常小的一个模拟数据集,呃,就这么六列啊,六列的数据啊,然后呢我们再假设我们需要把这里 边的这个人啊需要筛选什么的,筛选这个教育程度为大学,然后工资大于三千的啊,把这样的人筛出来啊,并且放到这一页啊,放到这一页就不在原来的数据级里边了啊,这就是高级筛选的经典使用场景 啊。这两个条件呢是兵的条件啊,兵的条件,如果说你想是尖货条件就是鱼就是货的条件的话呢,就是这两个条件呢,要错开一行啊错开一行,如果第三个条件的话就错到这个地方来第四个条件的话就要错到这个地方来,这是指的货的关系啊,如果是雨的关系的话呢,那就是 通通放到一行就可以了啊,你就往右放就可以,这都是语的关系好啊,这是他简单的一个摄像逻辑。然后我们,呃教育程度里边我们要满足大学,然后工资要满足大于三千啊,一个细节的地方,注意啊,这个大于号跟小于号呢,一定 要切到这个英文状态下啊,在键盘上输这个大于号,小于号不要用自带的中文输入法来输啊,因为中中文输入法输入的大于号小于号呢,他实际上是字符,他并不是运算符啊,这个会导致我们的这个审核结果呢出不来。 好啊,然后呢,我们呃设定完条件之后呢,就直接到数据菜单,然后中间的排序一筛选,然后高级排序一筛选,里边高级 啊将首先选择第二个选项啊,这个我以前的视频里面讲过,所以我就给大家重复一下就可以了啊。 筛选将摄像结构复制的其他位置,选第二个选项,然后列表区域的话呢,我们直接来切到原始数据啊,原始数据啊,选中第一个单元格, ctrl shift 右箭头下箭头啊啊,选完之后呢,然后条件区域 区域的话呢,我们就把刚才设定条件的这两个,这两个条件啊,就是四个单元格全选中啊,然后复制到什么地方呢啊,复制呢一定要注意啊,就是要 不知道一个空白的地方啊,如果这个地方有数据的话,这个地方有数据的话呢,他会报错,或者说他啊不会替换在原来的数据啊,就会你看到的数据并不是你想要的数据 啊,所以这个时候呢一定要注意,就是要放了一个能够承得下我们的目标数据的一个空白的地方啊。好,然后我们条件设定完之后啊,条件设定完之后的话直接点确定啊,这个符合条件的也就出来了,你看教育程度都是大学啊,然后呢这个工资呢都大约三千, 非常方便的用拆迁方式,但是非常可惜,就刚才提到的说如果说你的这个条件 改变了啊,比如说我不,不大于三千了,我大于两千,呃,两千五啊,大于两千五 啊,你改完条件之后呢,这个数据呢并不会自动的变化啊,也就是说他的筛选呢是一次性的啊,并不是说那种呃后台查询似的,他是一次性的给你出结果,然后就不管了啊,这个呢就会造成一点点不变啊,就是我们如果是想改变一下条件之后的话呢,需要重新来一遍啊,才能够 得到我们所需要的数据啊,这个遗憾呢,我们其实可以用 vba 的来弥补一下啊,用 vba 代码呢,直接把这个东西呢呃来呃变成自动化的一个过程啊,我们来看一下如何去写这个代码 啊,其实也非常简单,只有一句话的一个代码啊,剩下的都是定义好啊,然后我们在 这个这张表的啊,这个工作表的底下的这个标签上啊,打右键,在他底下的这个太不上标签上打右键。然后呢查看代码啊,进入到我们的这个 vb 编辑界面啊,然后插入啊,插入一个模块 插尾模块,然后呢我们再用模块的来写我们的代码。好啊,首先呢我们来去啊定一个名称啊萨,比如说高级啊 啊闪现好,就这样吧啊好,我们回车的话呢,他会自动闭合啊,回车的话这个呃未必的,这个程序他会自动闭合,在下面给我们加上这个 n stop 啊,然后我们先定义三个边量啊,啊, dat 啊,就是我们原始数据啊, range, 然后呢?呃,条件啊, condition as range, 然后呢?这个我们的这个放目标数据的地方啊,我们这个什么叫做呃 destination 吧, that's ranch, 这样我们先定义三个变量啊,定义三个变量,然后呢我们这三个变量呢,其实都是 ran 制, ran 制的话呢,是对象变量啊,所以呢,我们要去做一个设定啊, set data 啊,这个等于 啊,谁退一谁退一,我们这里边谁退一啊,谁退一。第二 range a 一啊, a 一的话就是他左上角的这个就是整片数据左上角的第一个单元格啊,然后点 current region 啊,调康的 region 就是以 a 一为开始的,跟 a 一连成一片的这片数据啊,这样,这是第一个定义啊,然后呢,我们来看 condition, set condition 等于我们的 shit 二啊,因为这是 这个我们整个的生产结果,因为是在 c 的二里边啊,所以我们直接是来输这个 c 的二啊, c 的二点润啊,然后我们条件呢,也是在 a 一开始的啊,在 c 的二的 a 一开始的啊,然后 也是这个卡尔杰瑞镇 好啊,然后第三个啊,第三个条件, i just said destination 等于我们的还是 c 的二。第二,这个时候呢,我们就给他一个单元格就可以了啊,就给他从这个单元格开始放数据就可以了,比如说我们放 a 五,那 a 五 啊,然后我们定义完了这个,定义完了这个呃变量,然后呢?把变量设计完之后呢啊,真正干活呢,其实就是下边这一句啊,下边这一句就是诶塔第二啊,然后呢? advanced filter 高级筛选嘛啊,老鼠有点高级筛选,然后呢,接下来呢,就是我们是要做这个 xl, 他是一。第一个啊,有一个选项呢是 xr filter in place in place 的话就是在原始数据上显示实验结果。 还有一个选项呢,就是 xl filed 高配啊,就是不在原始数据上显示审核结果,而是把符合条件的审核结果呢复制到另外的我们指定的地方啊,显然这个是符合我们这个要求的啊, 所以我们就选啊 xl filter 的高配。然后接下来他会问你,你的这个条件是什么啊?我们条件呢就是 很对视嘛,我们已经定义完了啊,然后他问你,你要把数据放在哪啊?放在哪?嗯,我们的数据呢就要放在我们定义好的 destination, destination, 其实干活的其实就这一句啊,干活就这一句 啊,我们执行这一句的话呢,数据就已经就就会过来,但是呢啊,我们刚才呢,你注意到我提到过说如果我们的筛选放目标数据的地方有其他数据的话呢啊,他不会把其他数据 清掉啊,会爆错啊,或者说会出不来我们所需要的数据。这个时候呢,就是每次筛选之前呢,我们要确保什么呀?确保说以 a 五为开始,这片数据区域呢,我们先要清一下啊,先要清一下,所以呢我们要啊加一个命令啊,加一个命令 是我们的这个 ct 一点二, 这个二啊,这个二点儿 range, 这个时候呢,我们 a 五开始我给他放 a, a 五开始 az 啊, az 幺零四八五七六,就给他这么一份区域呢。 第二, clear content 啊,就克里尔就把他的整个的这个呃内 内容全给他清掉啊,全给他清掉,或者你直接用可利尔也行啊,可乐康城市也可以啊,这个什么意思呢?就是我给你的五十二列啊, a 到 z 是二十六列,然后呢? a aa 到 az 啊,又是二十六给你,给你了这个五十二列,然后呢给,一直到这个五十二列,横着是五十二列,那么 重点呢,是从第五行一直到幺零四八五七六,就是到工作表的底部这部分区域,我先给你清一下,清一下,我再做这个筛选 啊,如果你觉得这个区域不够啊,比如说你的这个数据也非常大,超过了五十二列的话呢,你可以在比如说 a z 吧,或者是你写 b z 啊, c z 啊,就是往右延伸就可以了啊,懂了这个代码就可以了啊啊,关键呢其实就是最底下这一句啊,这一句 好,我们写完代码之后的话呢啊,我们直接可以把这个界面呢关掉啊,把这个界面来关掉,回到我们的数据界面 啊,然后呢在这里边呢我们插入一个,呃,你可以插入开发工具里面的这个按钮啊,这个表达空间可以插入表达空间啊,也可以呢,直接插入一个形状啊,比如说我插入这个插入一个形状,我拖一个小 形状出来啊,然后在这个形状上呢,我写上这个啊, 刷新筛选啊,刷新筛选, 让他居中一下 啊,好放心摄像。然后呢在这个,在这个图,在这个这个形状上打右键啊打右键,然后呢指定红啊,指定红 啊,就是我们的这个高级摄像的红群,你打一点指定红的话,这个界面就出来了啊,里边就会列出我们所有的定义观的红啊,然后我们选一下高级摄像,然后点确定 啊,就可以了啊,这个时候呢,就是我们只要点一下刷新筛选,这水就出来了,你看没有,这是我们的这个符合条件的啊,大学,然后是 这样的工资啊,然后呢我们再看一下啊, 大专改一下条件刷新啊,然后你看到这个全部就是大专了啊,全部是大专了啊,我们可再换一个,比如说性别 啊,性别为难啊,还不是这样的啊,是是很难啊,好 大专难。然后呢刷新筛选啊,你看吧,这就所有的大专,然后所有的难啊,这样就实现了我们的高级筛选的一个自动化的操作啊。好了啊,这一节呢就给大家来分享到这。

如何按条件批量提取 xl 数据?现在文件夹中有很多张人员信息表,我们需要将性别为你的人员信息批量提取到一张表格中。点击提取按钮,我们看到所有数据均已提取成功,请看代码拿走,不谢!

今天呢,看到一个挚友提到问题啊,提到问题他有个这样的数据,就是说这里有一些名称,每一个名称呢?哎,他对应的这么多项目啊,每一个项目里边有点数据, 他需要的是把这个每一个名称对应的这个每个项目的数据,按照这个模板,按照这个模板 把它创建成一个一个的工作部啊,这工作部的名称呢,是以这个这个名称为基准的,就是以这个名称为名,这个工作部的名称去创建的, 因为数据比较多,可能有一个几百行,几千行吧,这样的数据,哎, 希望你如果是少的话,我们一个一个复制啊,一个一个创建就可以,但是特别多的话就非常累了,所以我们要用一个简便的方法,这个怎么去实现呢?哎,我们可以用这个 baba 的代码去实现, 我们进入 vba 的方法是点一下开发工具,点一下 vb 编辑器就可以进去,当然如果你没有这个开发工具,你也可以按这个奥特加 f 十一这个快捷键进去啊,奥特加 f 十一我们也是可以进去的, 但是我们需要说一下我们在这个代码区里写的代码,如果我们直接保存的话,是没有办法保存代码,我们下次再用的时候就没有了,所以我们要想把这个代码保存下来,我们需要点这个文件,然后另存为啊,把它保存为 为这个啊,比如说我们存到这个文件夹里边啊,同样当前的文件夹里边,然后把它保存为这个启用红的工作部啊,所以说我们不要直接保定存啊,直接要点把这个保存类型选一下,然后 选到启用红的工作部,然后我们点保存,这样的话我们再写代码,他就能记下来。好,我们需要注意一下。这个好,我们按奥特加 f 十一进入代码的编辑界面,那我们在这里边可以插入一个模块,插入一个模块, 然后我们首先声明一个子过程啊,我们写的代码肯定会放在子过程里边,所以我们算吧。啊,一个子过程,那这个子过程名称呢?比如说我们可以命名为拆分啊,或者其他的都可以。我们按完回拆之后,他会啊把这个子过程的区域给标识出来, 那我们在这个走过程中间去写代码,那我们分析一下,我们要把这个数据写到模板里边,首先我们需要有当前的工作部,我们还要先创建工作部,是吧?所以两个工作部的话, 啊,两个工作部的话,我们要声明两个工作部的变量,所以我们声明一个 dwis 啊,我顾客 啊,作为第一个工作部的变量,那 wbs 我可不可啊?作为第二个工作部的变量, 那我们啊要把这个模板拷贝到新的工作部里边去,那这样两个就形成了两个工作表的一个这个互动,所以我们要 声明里至少两个工作表,是吧?没用,哎, st s 我可喜之,然后 st s 我可惜,所以,哎,我们生命有两个,是吧?那我们其实我们要拆分,我们要拆分这个的话有很多方法,很多方法。 嗯,我们可以直接循环单元格啊,我们也可以直接复制粘贴,是吧?我们也可以这个,呃,也可以,嗯,把它存入字典,或者是啊存入数字,然后再写。那我选择 啊,我们今天,今天讲这个选择这个存入字典啊,这样数量特别多的时候会比较快一些啊,就会相对快一些。 那好,我们就需要声明一个字典,对不对?所以我们定么? d 把它做一个字典,那我们循环的时候要使用的行号是吧?我们一个行一行的向下循环,所以我们声明一个行号, 一个变量作为行号,当然这行号你也可以把它定义一下。这个啊,是整形或者长整形啊,也可以不定义啊,我现在选择不定义,那 我们,哎,首先呢,我们要把声明一下字点啊,我们把这个字点复一下,复,把这个地复制为字点啊,这样的 的话啊,会啊,后期我们直接调用这个字典就行了,所以我们算产地等于 creature 是吧?然后呢? screw, screw 不听是吧? script 顶点 dictionary 啊,这是声明,他把这个声明成字典, 然后呢我们要把这个当前的工作部声明一下啊,这个复制一下,现在他 w 等于, 哎,妹子啊,我不,你把这个当前的工作表复制给 w 啊,这样 w 就代替代表当前的工作部啊,那我们当我们这个时候, 那我们可以就循环这个啊,总表,我们要提取总表数据是吧?那我们提取的时候哦,我们首先要这个, 把这个当前的工作表啊复制给这个,呃,变量赛塔 sk 等于,哎 w 点啊,握个锡纸是吧?哪个工作表啊?是总表是吧?所以我们把把总表啊, 好,我们把总表写在这里, 那这个时候我们要出示一下这个行号是吧?我们从这行开始开始提取数据,因为我们数据不知道有多少行,所以我 我们用一个度循环,在度循环之前呢,我们先注视化一个行号,所以我们二等于一啊,因为我们从第二第二行开始的,然后我们每一行加一,所以说,哎,我们第一次加一了之后,他就变成二了,所以我们把它注视化为一,然后我,然后我们做一个度循环 啊,堵路循环的时候,每一次循环我们用二等于二加一啊,这样他代表一个行号是吧?每一次加一,每一行一行一行,懂是吧? 那每到一行了之后,我们不知道他是不是到头了啊?什么时候到头?所以我们先判断一下他是不是空单元格,如果是空单元格的话,我们就认为他到头了啊,就认为这个数据可完事了啊,没有了。那我们是不是要判断一下当前单元格是不是为空啊?为空的话我们就停止了好不行? 要不然他一直情况下去,那就没有意义了,对不对?所以我们 f 诶, st 底下是钥匙啊,二行的 a 列等于空的话,更 ac 的度, ac 的度, 那我们看一看,我们都要提取哪些数据呢?我们要把这整一行给提取过来, 但是我们模这个模板里边呢,他是把它分为两裂了,把它拆分开了,而且我们看一下啊, 他这个数据是,哎,从大米到高粱米是吧?大米、小米、绿豆、豌豆、豇豆和高粱米,我们看大米、小米、绿豆、豌豆、豇豆、高粱米,是不是他是按顺序来的呀?哎,这个是不是花生到到糯米是不是也 是一样,他按顺序来,所以我们把它分成两段去提取,会比较方便一些。那我们怎么提取啊?哎,我们把它提取入字典的时候,我们要把它分成两段啊。分成两段, 那我们先把字典的 k 给搞定。字典是 d 是吧?他的 k 是什么? k 是名称,所以我们 sk 起来 sales 啊,二行的 a 脸, 哎,他的纸点外六啊,这个地方一定要写点点外六啊,要不然有些时候可能会出错的, 然后等于,哎,等于什么呢?我们把这个纸给放进去,是吧?这个纸和这个纸,所以我们,哎,因为因为是两个纸,我们用一个数组来实现它很瑞。那第一个第一部分呢?是 从毕毕列开始的是吧?当前行的毕列,所以我们 st t, ss 二行的毕列, 哎,他总共几列啊?我们看一看,他是六列,这个也是六列,是吧?啊?两边都是六列,所以我们用二行的臂列点为塞子哈,把它扩展一下,扩展到六列, 哎,会长完了之后,我们写点歪六啊,一定要写点歪六啊,因为他是一个区域的纸, 那速度的第二部分呢?同样的 clsst 点 ceos 啊,二行的 h 列底 鱼线子是吧?一行的六列底外六啊, 这个就可以了啊,我们就提取啊,就可以了,他一直会循环起来提取, 我们把数据提取完了之后,我们是要是不是要把这个数据挨个给循环出来,然后写到新的工作部啊? 哎,这个时候我们需要用到模板,然后每一个工作部,我们要把这个模板我给复制一下,所以我们要把这个模板复制给工作啊,给电量,所以我们赛塔 st 一等于 w 点握个锡尺,是吧? 然后来模板是不是? 那好,我们复制完了这个模板之后呢?我们是不是可以 循环这个?我们提取出来数据了呀?哎,这个字典,所以要放一起。呃,这个循环道的名称我们用二去代替吧,因为二已经没用了,是吧?我不用再说明新变量了啊,印第 next 啊,这是一个和一起的一个循环,那我们每循环到一个这个名称的时候啊,因为我们是按这个 k 是按名称走的,每循环到一个名称了之后,我们 要要干什么呢?我们要把这个模板复制,把这个模板复制的一个新的工作,新建的工作部里边啊,就类似我们点这个啊,点移动和复制工作部啊,然后建立副本,然后这个到新工作部里边啊,我们复复制出来这样一个, 哎,新的工作部啊,专门就是一个模板这样的,是吧?我们把数据写到这里边,然后我们再存,再存啊,所以 我们要把它这个创建的一个复制到一个新的工作部里边。其实这个动作我们刚才做的很时候很多,实际上很简单哈,我们可以用这个 st 一一点 copy 啊,就可以实现啊这个功能。 哎,这我们把它复制到一个新的工作部里边了,那我们要指定一下这个新工作部,是吧?因为我们等一下要调用,他调用的时候,我们需要一个,哎,需要一个变量去调用,所以我们下他 wb 等于。 哎,因为新这个创建的工作部呢,他是一个活动的工作部啊,所以我们直接把写上 接。我不可啊,我可不可啊。啊,新的有活动工作部啊,复制给 wb, 也就是我们创建的这个工作部, 那我们也也要用用到他的工作表呀,当然也是活动工作表,所以赛他 st 等于 skf, 是吧?哎,这是一个新的工作部,新的工作表啊, 那这个时候我们是不是把这个地,这个字典里边这一项的数据给分别写到这里边和这里边,是吧?那我们用 st 点, 哎,从 b 一到 b 六,是吧? b 一到 b 六, b 一到 b 六等,哎,我们 是不是等于 d 的,哎,这个二,这个 k, k 值里边对应的一个 atm, 是吧?但是呢,它里边是一个数组啊,是两两行的数据是吧?两行就是啊,一行是这一部分,一行是这部分, 那我们是不是提取其中一行,然后一的二,是吧?哎,这个数组呢?啊,瑞的产生的数组,他这个下标是零啊,然后他只有两个,所以说一个是零,一个是一,所以我们提先提下标这个啊,第一个零, 但是我们直接提取行不行啊?因为我们这个数据是行啊,是行,但这个数据呢,是列呀,所以我们需要把它进行一个转制,转制的时候怎么怎么做呢?哎, 我们用用吊,用一下工作表函数,博客系他半个星半个星点,穿上 pose 啊,用这个,用这个函数啊,转制函数 啊,就是工作表函数的转制函数。然后呢,我们转制的什么内容呢?就是刚才我们哎这个字典里边 这个这个数组的,看下标这个第一个第一项数据 就可以了,是吧?那我们这部分呢?哎,我们可以照做,照做的话我直接复制了哈,我就不用再写一遍了,直接复制过来,那这个是第一到第六是吧?第一到第六,那我们转制的是什么呀?转制的是 这个缩影是为一的啊,这个速度,这个缩影啊,是。呃,也就是上表啊,因为他只有两个吗?一个是下表,一个上表了,对不对?是一是吧? 所以我们这样就把数据给写过来了。写完了之后,我们是不是要把这个名称给改一下?因为我们复制过去他这个名称,这工作表的名称也叫模板,是吧?所以我们把工作表名称给改一下,所以 st 点那么直接等于二就可以了。 那改完了之后,我们要把这个工作部给保存一下,因为他复制出来了一个创建出来这个新工作部,他是没有地址啊,所以我们要有这个 wb 点 com, 是吧? aos, 那我们这里要写一个完整的路径,完整的路径 我们写哪呀?哎,我们要写到当前工作部的路径下,是吧?我们把它放到这个文件夹底下,我们把这个放到这个文件夹底下,所以我们写下 cosaw 底了啊, pass, 然后我们连接上一个反斜杠。为什么要连接反斜杠呢?因为我们写这个 路径的时候,他是这样的,他是这样的一个路径,所以我们如果在后边加一个反斜杠出来,他就是这样一个路径,完整路径是类似这个的。当然我们这个名称是用 abcd 啊,就是我们这里边这个名称, 我们这个总表里面提取的这个名称,但是他是什么?哎?这个名称我们就命名称为什么是吧?然后我们连接上一个 二,是吧?就是这个名称代表的这个名称,然后我们再连接上什么呢?哎,因为我们工作表啊,我们工作表我们在这里是看不到,看不出来的,但是我们如果在这边你加一个反斜杠的话,我们可以看出来他后边是有一个扩展名的 啊。当然我们刚才另存成秦红的工作部的话,他是 xlsm 啊,正普通的工作表呢,他是 xlsx, 是吧?所以我们把它保存为普通的工作表 xlsx, 然后, 哎,引起来就可以了,那我们保存完了,我们再提取新的之前,我们是不是要把前面的一个关掉啊?所以我用,我们用 wb 点 clos 就可以了,哎,这个代码我们就完成了,当然这个代码写的时候有没有输了我还不太清楚,因为写这种 代码很可能会有输入的,我们运行一下试试啊,我们提取的时候,哎,我们就是这样的,是吧?哎,比如说啊,我们运行到这里啊,我们提取数据运行到这里了之后, 二十等于等于一的,然后我们第一次,哎让他变成二,然后这个时候我们这个第一个是不是 a 呀?然后我们把它提取进来,然后,哎,第二个,然后是 是不是?是 b, 是吧?我们把它再提取进来,哎哎哎,以此类推,那我就快速运行一下子把它提完啊,已经这里边所有数据已经提到这点里边了, 那我们开始就是写入的,写入的时候我把这个最小化一下,我们看看他写入的时候是什么样子。然后首先我们看一下啊,我们运行一下,先复制 一下,是不是我们这个模板复制完了之后,他会新建了一个工作部啊,是吧?新建了一个工作部, 那我们把它指定,是吧?工作部和不工作表的指定,指定完了之后,我们把哎这个数据提过来,是不是第一组的数据啊?我们看看对不对啊?从二到十七是吧?从二到十七是不是这个数字数据?然后第二组的数据是二十四到二十一是吧? 啊?二十四到二十一是这边是不是这部分呀?这部分, 哎,他都给转过来了,是吧?那我们哎把这个工作表的名称给改了啊,刚才这改之前他是模板,他叫模板,等会我们再试一下,然后我们立把它保存为 a 是吧?啊?保存为 a 哦。啊,不好意思哈, 肯定有输漏了哈,我们是地点 xlsx 啊,一定是点 xlss 啊,地点 xlsx, 我忘了一个点啊,这是我的一个输入啊,注意一下,要不然的话他会命名成这样的啊, 那我们把它关闭是吧?关闭掉,那我们这是第一个都提取完成了啊,当然我这个名名称是没名错了啊, 我们需要注意一下这个,这个地方是底哈,然后我们运行下一轮哈,下一个,然后,哎,这个时候我们又复制了一个,是吧?然后呢?哎,我们指定,然后我们把数据给给给提取过来,我们看看我们这里边是不是 说二十四到十七,是吧?是这样这样的,然后我们这个是八到九啊,我们看看对不对?八到九是不是也对了? 然后他的名,他的工作部名称,当时当时复制过来的是要模板,所以我们给他改一下他是不是变成币了,然后我们让他保存一下, 哎,他是不是保存成币了?是不是保存保存成币了啊?然后我们扣子把它关掉,是不是?哎,他就是这样一个过程啊,所以说我们点运行的时候我们看看,哎,他挨个挨个的就把他数据提取过来,是不?我们就不用管, 是吧?一下子这个文件是不是一个一个一个多了记 h i 是吧?都出来了,我们只用等就可以了啊,不管你几百个文件,我们只用等,哎,他数据就就完完全提取过来了,但是你也可以就是加一个这个屏蔽屏幕显示的,他可以这个不这样闪。 那你说哦,我不可能就是每次打开代码去去做吧?啊,所以我们可以把这个这里边啊建立一个按钮啊,我把这个刚才提取出来的删掉 啊,把这个数据给删掉。刚才没关掉吗?啊?这个 a 是没关掉的是吧? 啊?我们可以随便抽查一下,我们看他刚才提出来的东西是不是这样的,是不是?哎?他他提出来数据都有啊, 这是 k 是吧?都有。那我们先把这个删掉,我们把它建立一个按钮,然后我们下次用的时候我们直接按这个按钮就可以完成啊,就很方便了。 怎么建立呢?我们可以在这个里边啊,在这里边啊,我们可以插入一个。呃,形状就行啊,插入一个 我看看啊,这里边有没有形状啊?插图啊,在插图里面有一个形状啊,然后然后我们插找一个形状,比如说我们用一个圆角巨型,然后把它插到这里边,是吧?我们可以调整一下这个圆角巨型的这个,这个这个 可以选择一个样式,是吧?啊?比如说像我们用这个,然后呢?我们比如说我们这个 把他写入写一个这个名,是吧?比如说叫拆分,是不是?可以啊? 这样的话我们点一下右键,对了,然后有一个指定红,因为我们刚才这个红就叫拆分,是吧?我们写的时候就要拆分,所以说我们选择这个拆分点确定, 然后我们保存一下啊,我们可以看一下,当我们拆分的时候,当我们拆分的时候,想拆分的时候,我们直点直接点这个拆分,哎,他就开始运行啊,他就开始拆这个数据, 是不是他的数据都拆出来了,我们可以看一下啊, 还有这个遮挡,是吧?我把这个是不是拆完了呀?啊?拆,还没有拆完好了,是不是都拆出来了? 所以这样用起来非常方便了啊?就非常方便了。但是有的有的,有的同学可能代码是这个是不太熟悉的。对这个代码,所以我把这个代码放屏幕上放一会哈,你可以抄一下,如果这个,嗯, 那个啊,你这个没来得及抄完的话,你可以暂停一下,暂停一下抄一下啊,我们啊,这个视频就现现在就结束了啊。好,我们下一期再见。

前几天接到一个求助,就是说他有一个这样的表啊,就是有运单号,有姓名,当然还有一些其他的信息, 他需要隔一段时间呢,把这个运单号啊返给客户,这样的话就是看他收到收没收到,这样啊,所以说他需要把这个对应姓名,就每个客户姓名的对应姓名的运单号呢,全部提取到一个同一个单元格里边,然后啊用逗号隔开。 那,那我们看一下这个该怎么处理呢?我们首先当然首先把这个呃客户啊这个去下重复,是吧?去下重复下,然后我们留下我一个客户的唯一值, 然后呢我们需要一个函数,这个函数呢啊,这个函数呢是一个叫太子教育的 啊,这个还是我想简单讲一下,这个函数只有这个这个 wps 二零一九以上版本或者是 xl 二零一九以上版本的才可以使用 啊,如果是之下版本的就没有这个函数,可能需要一个很大的这个表啊,做辅助表,然后才能才能解决这个问题啊。那我们怎么去解决这个去提取这个大号呢?首先啊我们可以用一个函数,就是 f 函数,然后我们 让这个左边这个数值等于这个姓名,这这个这个这一列啊,当然我们要绝对饮用这个,我们因为不要变吗一直是饮用这一列,然后我们让他返回什么呢?让他返回单号这一列啊,就是如果等于这 这个的话,等于这个姓名的话,就让他返回单号这个列,当然这个列也是要决定,然后否则的话我们让他返回空, 对吧?反正空了之后,哎,他得到一个什么样的?我们看到是一个啊?第一个就是零零四幺四九九七,但是实际上呢,他得到是一个数字啊,得到是一个数字啊,是这样的一个数字, 那这样的一个数字显示在单元格,它只能显示第一第一个数据,或者对应的数据,对应行的数据,那么我们想让这个数据给合并到一个单元格里边,并且以逗号隔开显示,那么我们就可以用到刚才我们所说的才可以教育的函数, 那么我们在外面套一个才可以教这个函数呢。第一个 他是分个符,分个符,我们刚才说了,我们需要用一逗号分开,那么我们就直接输入,就是用引号啊,引起来,然后输入一个逗号。第二个参数呢?他是 啊,是不是忽略空白?行,那肯定要忽略,那么我们要输了一个处是吧?处是忽略的意思,然后我们这个括起来,然后按 ctrl 加 shift 加回式,哎,我们就可以得到这个结果啊,一定要按 ctrl 加吸附加位置啊,因为这是一个数字模式,必须用这个以这个结尾才可以,然后我们再往下填充啊,就可以看到这个数据都全部都出来了,对吧?那么这个出来之后,我们可以看 下,就核对一下,第一个是吧?和韩信四幺四九七是吧?四幺四九七。第二个零零五六六三五是吧?看我们找一找,找韩信,第二个在这零零五六六三五是吧?一直到最后的一个零零六二零四三是吧?韩信零零六二零四三。 那么我们对一下张良啊,抽检一下啊,张良,第一个啊,零零四六六六九是吧?零零四六六六九,第二个零零四七五二零,是吧? 我看看张良的第二个啊,零零四七五二零。第三个是四八二七六,是吧?这样啊,最后一个我们看看张良的最后一个是六幺七五八,是吧?张良是吧?六幺七五八。所以用这个太子专业函数能很方便的 来提取这种类似的数据啊,有遇到这种需求的呢,还可以使用这函数试一下。好,今天这个用太子教育函数来把去,就是 符合条件数据提取到同一个单元格里边的这个功能。对讲这里啊,感谢大家收看。

好,今天我们来写一个制定函数,非常简单,就四行代码,但是呢,可以让你非常自由随意的去提取某一个分格符后面的那个文本啊,那个间隔的文本,我们来演示一下效果啊,我输入 tqt 啊,快扣起来。 第一个参数呢是需要被提取文本啊,第二参数呢是分格符是什么啊?第三个参数呢是提取第几个分格符后面的那个文本,对不对?比如说在这里啊,加一比零物啊,以分号分隔开,那第一个分号后面的是不是以啊, 就把椅提取出来,对不对?那往下填充啊,对应的,比如说两个等号,第三个,那就这里吧,自己后面是不是丁啊啊,三个,这个 x 号对吧,那也是这个一二三对吧?四对吧,他是第四个啊,第四个分格符号呢是物对吧?同理啊,这个 是乙,这个是葵啊,是葵。第四个分格符三个字后面的字符呢是葵啊,没有问题,代码呢,就这么一点了,非常简单,主要呢是用到了 vba 内置函数。 split 是贝特,可以把一个有特征的啊,有固定分格符的一个文本,一个字符串给它分格成把这个分格符去掉的留下的这个啊,文本作为数组元素的一个数组, 然后呢,我们可以通过吊用数组的这个序号,比如说 a 二一就是第二个元素, a 二零呢,他是第一个元素,比如说加一丙丁物通过分号分隔开,那一共有五个元素, 假对应的是元素,假对应的呢是数组里面的零号元素,物对应的呢是四号元素。这里要注意 一下跟我们常见的认识啊,物应该是五,对吧?他应该减去一个一啊,因为数组呢,是以零开始的,如果默认情况下不指定的话。好,我们来直接写一下啊,好,我回去啊,飞车 basic 在这里啊,我们看一下, 我可以先把这个删掉啊,清空掉,然后呢我们把这个后台的这个代码呢也给他重新做过啊,虽然我已经写出来,对不对?我写一下我的思路,给大家展示一下思路好不好? 好,我们看一下这个,下面呢,我放了一个立即窗口和本地窗口,然后呢,我在之前的直播课里面也讲过了, 大家先用萨本函数来做一个调试,对不对?好,我输入萨本,然后呢随便取个名字,对不对?然后后面呢我进行一个 split, 比如说 a r r, 它等于 sublit 啊,就是一个内字函数,内字函数说好之后呢,加个左括号, 如果看到提示服呢,说明这个是 cba 的内置函数,对不对?我也说过了,那第一个就是我们需要被分格的原始数据,那我可以输入双引号里面填入,对吧?我也可以选择某一个单元格,比如说我输入论语跨过起来, 然后后面呢加一个双引号,然后呢它是一个 a 二,那我就指定了 a 二单元格的内容,对吧?你也可以加一个 text, 就是 a 二的一个文本,对不对?分格符呢?它是一个单分格符呢?它是一个双分格符呢?它是一个英文字纳下的分号。注意啊, 英文转向下的分号和中文转向下的分号是不一样,对不对?英文转向分号他是绊脚符号,对吧?如果是中文我们看一下啊,一个分号,他是有一个更大的一个空间在后面,对不对?发现没有?好,我们直接回车,然后呢这个时候啊,我在这里点一下,让他 暂停啊,直行到这里呢,就停止不跳出去啊,这里我输错了啊,这里我输错了,这里应该是 a 二,刚刚说着 a 二呢,选了 a 一,所以说这里没结果啊,好,我们再运行一下,点击运行, 我们展开这个 a 二,发现没有 a 二二零的是对应甲,对吧?一二三四,对应甲乙丙丁,对吧?对应甲乙丙丁物,对吧?物是四。那这个时候,比如说啊,我这个里面有一个提取第三个,那我是不是后面要输入一个 a 二? 输入一个,比如说第八个点 print, 对吧?打印出 air 的第几个?比如说我输了一个第二个,那就是在第二个风格符后面的这个饼, 也就是啊第三个字符饼,对吧?就是第三个元素饼,给他打印出来啊,我们执行一下啊,点击执行,发现没有, 他打印了饼,然后呢这个字符串,然后呢这个数组啊,对应的是零开始的五个卷数,对应的是甲乙丙丁物,对不对?好,我把这个 a 二改成 a 几啊,改成 aa 六,好了啊,搞个大一点的。 那 a 六的分格符呢?他就是中文的分格符啊,分格符这三个字啊,好,我们输进去,然后呢这里拿回去,然后呢点击运行,我们看一下啊,他打出的是心, 那我分格符分第二个分格符后面紧跟着元数,我们看一下啊,第一个分格符是跟第二个分格符是不是对着心啊? 我们看下,这里展开,他对应的是零到四的五个元素,然后第二个呢,刚好是一对应的这个根,第二个呢?刚好是这个第二个风格符也就第三个元素啊,二对应的这个心,对吧?好,那这样 这就没有问题啦,我们就可以来写制定函数了。制定函数我们直接写啊,看一下怎么写的。方选对吧?他是一个固定的好方选,他是个固定的一个搭配对不对?输入啊? 提取他对不对?夸,快回来回车。那这个时候呢,他是没有一个自定义函数里面的参数的对吧?我们需要参数 有哪几个参数啊?我们也知道了,有一个带提取的数据,分格符和提取第几位对不对?好,我们来看一下啊,那我们带提取的原始数据可以手动输入文本,也可以选择单元格啊,读取单元格的文本对吧?那就 txt sg 啊,作为一个文本支付串。 第二个呢,分格符也是个字母唱,对不对?我们可以手动输入,也可以选择单元格。那还是啊, del 对吧? dels stream 这个名字可以随便取的啊,没有问题对吧?只要符合变量的命名规范就可以。 第三个呢,是一个呃,数字整数对不对?那就可以用 bite 或者用那个 integer 对不对?好, nums integer 对吧?好,这样子呢,两行那么就写好了, 其他的呢?就是往上抄吗?啊,第一个这个啊,往上抄,复制进去粘贴,然后把这个死的变量变成活的对吧?变成刑事参数。 那我要风格的是不是 tst 啊?就是我要风格这个东西对不对?那我的风格服是不是第二参数 dl 对不对? 这样就 ok 了。好,那我返回给这个制定函数一个值作为结果,我需要对这个制定函数的名称进行副词嘛? tqt, 它应该等于,等于什么?就等于 a 二二,然后跨扩起来, 后面呢是一个奥奥的话,就在这里指定的是一个提取的一个分格符后面的一个东西的一个分格符的一个 号,对不对?那我师傅只要输 m u m 跨过回来。那这样这样就可以了啊,为了以示区别呢,我把这改一下,改成别的信函数 t t t 啊,四个 t 好了啊,然后这里呢一定要改成对应的啊,四个 t, 不然的话,你们以为我是用原来写好的对不对?好,那这个时候我们测试,那这个时候我们测试一下啊思路 ttt, 发现没有有四个 t 哦,快快回来, 第一个呢是这个对吧?第二个呢是这个,第三个呢是提取序号,把框框回来,回车你就出来了,对不对?好,我们往下填充啊,就可以了。好,那我在这里输入什么?输入等于 速度,等于 randomten 啊,一到四,快快回来,回车,然后呢往下去填充啊,这样子,发现没有,我只要一激活,它会提取对应的第二个分格符后面的第三个元素就是饼,这个也是饼,对吧?这个也是 因为他三个都是二吗?那这个是丁,对吧?第三个分格屋后面的元素对不对?那这个呢是葵啊,我再激活一下又变了,对吧?这两个呢是,第四个是物,对吧?这个呢是第一个分格屋后面的乙,对不对?所以是呢,如果你要提取 第一个元素,你要输入什么?你要输入零,他就会提取假了啊?你明白了没有?