检查一列数据的重复项 vba_提取重复值,但字典不是重点。

本例的问题描述:

1:源数据与提取的结果在同一个工作表里面;

2:提取K、M、O、Q列里面不重复的数据(注意,数据列里面有空白的行);

3:把提取出来的结果放在A2单元格的下方,不能有空白行;

源数据及目标结果如下:

7cd3fbf5bf1c76328f429ce224321884.png

解决的思路详解:

1:由于K、M、O、Q四列不连续,且中间还有数据(在截图的时候,中间的数据删除了,实际运用的时候,是有数据的)还有空白的单元格出现。所以arr = sht.Range("a1").CurrentRegion这种方法就不适用了;

2:获取一列的最后一个非空单元行,再用Range“K1:K100”)类似这样的方式来获取列的区域了;

3:由于四列的不连续,所以循环需要一点小的技巧,详见后续的代码;

4:提取不重复的值,相信看过之前的文章都知道,要用到字典了;

代码运行的结果如下:

94749eedda77d23b96f25de3815c4cea.gif

代码如下:

b65448baba29b16e27472a06dec94dcd.png

Sub test()

Dim arr, col, i, j, dic

Set dic = CreateObject("scripting.dictionary")

col = Split("K m o q")

For i = 0 To UBound(col)

arr = Range(col(i) & "1").Resize(Cells(Rows.Count, col(i)).End(xlUp).Row)

For j = 3 To UBound(arr, 1)

If Len(arr(j, 1)) Then dic(arr(j, 1)) = j

Next j, i

[a2].Resize(dic.Count).ClearContents

[a2].Resize(dic.Count) = Application.Transpose(dic.keys)

End Sub

代码解析

1:2行 定义变量;

2:3行 后期绑定字典;

3:4行 把四列不连续的只放入col数组;

4:5~6行 遍历col数组,获取最后一列的非空单元格之后,与第一列的区域,赋值给arr数组;

5:7行 遍历arr数组;

6:8行 用len判断单元格的类容是否为非空,把不是空的单元格放入字典d;

7:10行 清除指定区域的内容;

8:11行 把结果赋值给指定的区域;

本例思考:

1:本例思维两点,是把不连续的列数据,用循环来提取。

小结:

解决本问题,需要用的知识点:

1:字典的经典运用;

2:split函数

延伸阅读:

Excel VBA 数组公式Split 和Join

Excel VBA 字典的常用方式

Excel VBA 字典入门key和item

Excel VBA 按照要求提取数据,数据及字典法

点击关注可以更方便的查看Excel VBA的案例文章

私信 视频 可以获取54集VBA入门视频

私信 VBA或 vba 可以获取文章中含VBA代码的Excle文件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/244355.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

swiper怎么让不会回弹,为什么我的滚动条拉上拉下都会回弹呢?

其它都是正常的,就是拉上去拉下来自己又回弹回去了,拉不到最底部也拉不到最顶部,拉来拉去都会是这样的category/index.vueimport CategoryHeader from "./header";import CategoryTab from "./tab";import CategoryConte…

异构服务器 微服务_Spring Cloud Alibaba Sidecar 多语言微服务异构

Spring Cloud Alibaba Sidecar 介绍自 Spring Cloud Alibaba 2.1.1 版本后增加了 spring-cloud-alibaba-sidecar 模块作为作为一个代理的服务来间接性的让其他语言可以使用spring cloud alibaba等相关组件。通过与网关的来进行路由的映射,从而可以做到服务的获取&am…

采用的php cms分校站点 打开特别慢,phpcms v9 打开网站特别慢 增加数据库缓存方法...

SET GLOBAL QUERY_CACHE_SIZE80000000;设置好查询缓存的大小就行了。比如设置个20MB.SET GLOBAL QUERY_CACHE_SIZE20000000;mysql会将查询SQL和结果集存到缓存中,等下次遇到相同的SQL语句时,结果集从缓存中读取。1.设置缓存大小时,至少给它40…

python3 console input_Python3 tkinter基础 Button command 单击按钮 在console中打印文本

Python : 3.7.0OS : Ubuntu 18.04.1 LTSIDE : PyCharm 2018.2.4Conda : 4.5.11typesetting : Markdowncode"""Author : 行初心Date : 18-10-1Blog : www.cnblogs.com/xingchuxinGitee : gitee.com/zhichengjiu"""import tkinter as tk# 面向对象…

matlab教程点语言,编程语言 / Matlab教程_电脑教程学习网( 5 )

逐次超松弛方法(SOR方法)求解方程组日期:2014-09-26 21:03:34点击:370好评:0#includeiostream.h//逐次超松弛方法(SOR方法)求解方程组 #includemath.h #includeiomanip.h #define n 3 void main() { double A[n][n]{{5,2,1},{-1,4,2},{2,-3,1…

python中timedelta_Python – 使用时间戳,timedelta的日期和时间比较

我花了过去一小时挖掘Python文档和许多SO问题;请原谅我是另一个Python新手被Python时代的谜团所困扰.我的目标是确定当前时间和某个日期/时间之间的差异,而不管过去/将来,并返回可执行的格式,如秒.例如,如果输入是下午2:00和下午4:00(现在),我想要说“-7200”,表示事件发生在两…

php hex2bin nodejs,Nodejs Serialport文档翻译

版本号:Serialport5.0.0-beta3本文链接想象一个世界,你可以在那写javascript来控制搅拌机,灯,安全系统或者甚至是机器人。是的,我说的是机器人。那个世界就是这儿,现在使用node serialport。它提供一个非常简单的接口所…

sql 以a开头的所有记录_SQL开发与数据库管理笔记

简介: SQL开发与数据库管理笔记,看过的都说好!原创: 丶平凡世界文章链接:https://mp.weixin.qq.com/s/Y9TmoHOyh7To7jUrMulvEw一、开发管理篇1.按姓氏笔画排序Select * From TableNameOrder By CustomerNameCollate Ch…

python apscheduler执行_Python下定时任务框架APScheduler的使用

今天准备实现一个功能需要用到定时执行任务,所以就看到了Python的一个定时任务框架APScheduler,试了一下感觉还不错。1.APScheduler简介:APScheduler是Python的一个定时任务框架,可以很方便的满足用户定时执行或者周期执行任务的需…

oracle trace发起用户,Oracle 使用TRACE进行SQL性能分析

设置sql_trace参数为true会对整个实例进行跟踪,包括所有进程:用户进程和后台进程,会造成比较严重的性能问题,生产环境一定要慎设置sql_trace参数为true会对整个实例进行跟踪,包括所有进程:用户进程和后台进…

python画二次函数图像的顶点_画二次函数图像的步骤

画二次函数图像的步骤2019-11-14 09:26:25文/叶丹画二次函数图像的步骤:五点法是选五个极其重要的点,分别为顶点、与x轴的交点、与y轴的交点及其关于对称轴的对称点,然后根据这五点作图。二次函数的画法五点法五点草图法又被叫做五点作图法是…

php rss xml,php 一个完全面向对象的RSS/XML类的简单示例

这篇文章主要为大家详细介绍了php 一个完全面向对象的RSS/XML类的简单示例,具有一定的参考价值,可以用来参考一下。感兴趣的小伙伴,下面一起跟随512笔记的小编罗X来看看吧。经测试代码如下:/*** RSS/XML类** param* arrange (512.…

zynq中mgtx应用_基于ZYNQ的UCOS移植(TCP通讯)

周五在某小徐处借到了一块Zedboard开发板,平时在公司没有机会做SDK开发的笔记,今天就趁着这块开发板简要记录一些SDK的基本操作。一、功能简介通过第三方库创建SDK工程在ZYNQ-UCOS中实现TCP echo通讯二、配置需求操作系统Windows 10(64位)开发环境SDK 20…

oracle主机名的脚本,一个开启Oracle服务和更改主机名的脚本-Oracle

一个开启Oracle服务和更改主机名的脚本真不知道该起一个什么题目,这是昨天数据库老师提出的问题。由于实验室的机器都装了还原卡,每次开机或重启都会回到初始状态,所以数库的listener.ora、tnsnames.ora文件里的host不是本机的计算机名&#…

python中的字体英文名_对python opencv 添加文字 cv2.putText 的各参数介绍

如下所示:cv2.putText(img, str(i), (123,456)), font, 2, (0,255,0), 3)各参数依次是:图片,添加的文字,左上角坐标,字体,字体大小,颜色,字体粗细其中字体可以选择FONT_HERSHEY_SIMP…

oracle备份 ram,Oracle备份时出现AIX系统的3D32B80D错误

环境:数据库: AIX5.3下的64位Oracle 10.2.0.1.0TSM5.4:Windows2003带库:IBM3100问题描述:1、aix系统出现3D32B80D错误。如下:JTXXDBS01:> errpt |moreIDENTIFIER TIMESTAMPT C RESOURCE_NAMEDESCRIPTION3D32B80D020…

python僵尸进程和孤儿进程_python学习笔记——孤儿进程和僵尸进程

1 基本概述1.1 孤儿进程和僵尸进程父进程创建子进程后,较为理想状态是子进程结束,父进程回收子进程并释放子进程占有的资源;而实际上,父子进程是异步过程,两者谁先结束是无顺的,一般可以通过父进程调用wait…

linux weblogic启动目录,Linux下WebLogic开机启动设置

为了方便管理,可以写一个启动脚本用来启动weblogic,方法如下:用root用户登录Linux,打开目录/etc/rc.d/init.d,新建一个空文本文件,名称改为weblogic(此文件名为将来的服务名,可自定义,最好以域名…

算法描述怎么写_管件材料描述怎么写

通过以上及其我们了解到了管道上不同的管道元件,包括:弯头、三通、异径管、管帽等。但在材料等级表中如何清楚的描述它们的特性,至关重要,因为这涉及材料采购是否正确。以下主要介绍管件材料描述的写法:①弯头 ②DN15~…

linux复制文件通信方式,Linux分布式文件拷贝

在开发过程中总会遇到这种情况,就是需要将一个文件从一个机器拷贝到其他的很多台机器中,最简单的方法是用U盘拷出来再一个一个机器的插进去拷贝,另一张方法则是利用飞鸽传书或者QQ等工具传输,但是都不是很方便,因为每次…