精华内容
下载资源
问答
  • 小伙伴们大家好,日常工作中经常需要查找重复值,来判断数据是否重复,根据表格数据量的大小,可以选择不同的方式,下面一起看看有哪些方法可以用来查找重复值,并适用于哪些场景?Excel条件格式条件格式最常用的一...

    小伙伴们大家好,日常工作中经常需要查找重复值,来判断数据是否重复,根据表格数据量的大小,可以选择不同的方式,下面一起看看有哪些方法可以用来查找重复值,并适用于哪些场景?

    Excel条件格式

    条件格式最常用的一个功能就是查找重复值,我们只需要选中【开始】—【条件格式】—【突出显示单元格规则】—【重复值】,点击确定即可。

    b9c15fe8a26e0b38fc90e9b162d5f4b6.gif

    这时候重复值将会被标记成粉红色,接着通过按颜色筛选单元格就可以把重复数据筛选出来。

    但是,条件格式有个很大的缺陷,那就是当数据量稍微过大(万条以上),再利用条件格式查重,表格异常卡顿

    下图中对五千多条数据利用条件格式查重,在第二步按颜色筛选的时候可以发现,下拉筛选框 鼠标光标处于不可操作状态(转圆圈),接着点击“按颜色筛选”时,Excel光标又处于不可操作状态(转圆圈),表示程序正在处理运行中。

    也就是我们平常所说的卡顿

    8382fd8453cb8929918220a2ef73e219.gif

    所以要对过大的数据量查重时,并不建议使用条件格式,还有就是如果表格中存在条件格式的话,一定要记得及时取消,避免表格卡顿,条件格式取消如下。

    dce32d2a9e63eb9f9512073aee18e5ef.gif

    这里可以选择“清除所选单元格的条件规则”,也可以选择“清除整个工作表的规则”。

    函数法

    B2单元格输入:=countif(A:A,A2),公式下拉,数据大于1的代表重复出现多次,接着利用筛选功能,将大于1的数据筛选出来即可。

    fd8c4dfddb71102cd228729a4ec582a9.gif

    countif函数是计数函数,计算A列每个单元格出现的次数。大于1,即重复出现。

    当然公式法的缺陷同条件格式一样,数据量过大,表格输入过多的公式,也会异常卡顿,但会比条件格式好很多。

    数据透视表

    数据透视表是我个人平日比较喜欢用的一个功能,查找重复数据十分方便。

    选中数据源,插入数据透视表,将需要查重列分别拖入“行”区域与“值”;

    将计数项降序处理,计数结果大于1地,表示数据有重复,再次利用筛选功能,筛选出大于1的结果即可。

    c856ed6db55f9aa7eaab59d25f3c2613.gif

    数据透视表筛选有个小技巧,默认状态下,数据透视表是处理不可筛选状态,选中数据透视表,上方的筛选按钮处于灰色状态;

    如果想对数据透视表进行筛选,只需要多框选数据透视表后面一列,点击筛选即可。

    3376e2b1c37923d07ac6207c93322719.gif

    数据透视表比较适用于大数量的情况,要比条件格式、公式法好很多,推荐大家使用。

    小结

    以上就是今天的小技巧分享,觉得有用,欢迎关注我,每天分享数据小技巧。

    展开全文
  • 今天教大家用几个函数和函数组实现这个需求。我用的版本是 Excel 2016,其他版本的界面可能略不同。需求:1. 如何去除下拉菜单中的空值?2. 如何去除不连续空值?3. 如何在上述基础上去重?案例:先一下用普通...

    制作下拉菜单大家都不陌生,但是要自动去除下拉菜单中的空值,甚至要去重,你知道怎么做吗?

    今天教大家用几个函数和函数组实现这个需求。

    我用的版本是 Excel 2016,其他版本的界面可能略有不同。

    需求:

    1. 如何去除下拉菜单中的空值?

    2. 如何去除不连续空值?

    3. 如何在上述基础上去重?

    案例:

    先看一下用普通方法制作的下拉菜单会呈现什么效果。

    1. 用 B 的数据源在 A 列制作下拉菜单,其中标黄的为空值

    c1d1c0976ab1726ea793ca62ce3a5a5a.png

    2. 下拉菜单中包含上下空行

    d323b9480ff02382ab027f32217a6d8e.png

    解决方案1 – 去除向下连续空值:

    1. 在 Source 中输入公式:=OFFSET($B$2,,,SUMPRODUCT(N(LEN($B:$B)>0)),)

    689be482b1c5437d2106f686405bb9b6.png
    c796ef824c11ce6d40d0eeff38983920.png

    这次用到了一个新函数 OFFSET,我们分解开来翻译一下:

    SUMPRODUCT(N(LEN($B:$B)>0)):

    • 统计 B 列中非空值的个数

    * SUMPRODUCT 函数被誉为函数中的神器,关于其部分用法,可以参考 Excel函数(四) – sumproduct函数计数、排名、求和等等

    OFFSET (基准位置,向下或上偏移几行,向右或左偏移几列,引用区域的高度,引用区域的宽度)

    • 本例中我们只使用了“基准位置”和“引用区域的高度”两个参数,即引用 B 列中非空值

    * 请注意:

    1) 这个方法不能去除数据列上方的空值,所以我们必须从有值的行开始读,本例中是 $B$2

    2) 这个方法只能去除向下的连续空值,如果有隔行的空值,也无法处理。所以我们需要方案 2

    83d3cfce3b8574986e6209d90fa20b4a.png
    e4a0046105946299a6a34e0056cc2576.png

    解决方案2 – 去除不连续的空值:

    万能数组公式 index + small + if + row 终于闪亮登场!

    1. 增加辅助列 C,在 C1 中输入公式:=INDEX(B:B,SMALL(IF($B:$B<>

    展开全文
  • 那么问题来了,是不是每次插入之前都要查一遍,看看重不重复,在代码里筛选一下数据,重复的就过滤掉呢? 向大数据数据库中插入时,还要判断插入是否重复,然后插入。如何提高效率? 看来这问题不止我一人苦恼...

    温故而知新

    知识这个东西,看来真的要温故而知新,一直不用,都要忘记了。

    业务很简单:需要批量插入一些数据,数据来源可能是其他数据库的表,也可能是一个外部excel的导入。

    那么问题来了,是不是每次插入之前都要查一遍,看看重不重复,在代码里筛选一下数据,重复的就过滤掉呢?

    向大数据数据库中插入值时,还要判断插入是否重复,然后插入。如何提高效率?

    看来这个问题不止我一个人苦恼过。

    解决的办法有很多种,不同的场景解决方案也不一样,数据量很小的情况下,怎么搞都行,但是数据量很大的时候,这就不是一个简单的问题了。

    几百万的数据,不可能查出来去重处理!

    说一下我Google到的解决方案。

    1、insert ignore into

    当插入数据时,如出现错误时,如重复数据,将不返回错误,只以警告形式返回。所以使用ignore请确保语句本身没有问题,否则也会被忽略掉。例如:

    INSERT IGNORE INTO user (name) VALUES ('telami') 

    这种方法很简便,但是有一种可能,就是插入不是因为重复数据报错,而是因为其他原因报错的,也同样被忽略了~

    2、on duplicate key update

    当primary或者unique重复时,则执行update语句,如update后为无用语句,如id=id,则同1功能相同,但错误不会被忽略掉。

    例如,为了实现name重复的数据插入不报错,可使用一下语句:

    INSERT INTO user (name) VALUES ('telami') ON duplicate KEY UPDATE id = id 

    这种方法有个前提条件,就是,需要插入的约束,需要是主键或者唯一约束(在你的业务中那个要作为唯一的判断就将那个字段设置为唯一约束也就是unique key)。

    3、insert … select … where not exist

    根据select的条件判断是否插入,可以不光通过primary 和unique来判断,也可通过其它条件。例如:

    INSERT INTO user (name) SELECT 'telami' FROM dual WHERE NOT EXISTS (SELECT id FROM user WHERE id = 1) 

    这种方法其实就是使用了mysql的一个临时表的方式,但是里面使用到了子查询,效率也会有一点点影响,如果能使用上面的就不使用这个。

    4、replace into

    如果存在primary or unique相同的记录,则先删除掉。再插入新记录。

    REPLACE INTO user SELECT 1, 'telami' FROM books 

    这种方法就是不管原来有没有相同的记录,都会先删除掉然后再插入。另外,关注公众号Java技术栈,在后台回复:面试,可以获取我整理的 MySQL 面试题和答案。

    实践

    选择的是第二种方式

    <insert id="batchSaveUser" parameterType="list">
        insert into user (id,username,mobile_number)
        values
        <foreach collection="list" item="item" index="index" separator=",">
            (
                #{item.id},
                #{item.username},
                #{item.mobileNumber}
            )
        </foreach>
        ON duplicate KEY UPDATE id = id
    </insert>

    这里用的是Mybatis,批量插入的一个操作,mobile_number已经加了唯一约束。这样在批量插入时,如果存在手机号相同的话,是不会再插入了的。

    作者:telami
    来源:https://www.telami.cn/

    近期热文推荐:

    1.600+ 道 Java面试题及答案整理(2021最新版)

    2.终于靠开源项目弄到 IntelliJ IDEA 激活码了,真香!

    3.阿里 Mock 工具正式开源,干掉市面上所有 Mock 工具!

    4.Spring Cloud 2020.0.0 正式发布,全新颠覆性版本!

    5.《Java开发手册(嵩山版)》最新发布,速速下载!

    觉得不错,别忘了随手点赞+转发哦!

    展开全文
  • 题目起来很简单,看看下面种思路。思路一:先给数组排序,然后再遍历一遍有序数组,依次比较相邻元素,就很容易能找出数组中重复。使用快排排序的话时间复杂度为 O(nlogn) 。思路二:利用空间换时间的...

    之前有写过 找出数组中只出现一次的数,今天再来看下怎么找出数组中重复出现的数。

    有一个长度为 n 的数组,所有的数字都在 0~n-1 的范围,现在要求找出数组中任意一个重复的数字。

    这个题目看起来很简单,看看下面几种思路。

    思路一:

    先给数组排序,然后再遍历一遍有序数组,依次比较相邻元素,就很容易能找出数组中重复的值。使用快排排序的话时间复杂度为 O(nlogn) 。

    思路二:

    利用空间换时间的思想,新建一个哈希表,然后遍历数组,每扫描一个元素都去哈希表里查找是否也存在该元素,如果存在,即找到一个重复的数,如果不存在,则将该元素保存到哈希表。这个思路的时间复杂度为 O(n),但空间复杂度也为 O(n)。

    思路三:

    认真审题,你会发现有一些特点,长度为 n 的数组,且元素的大小范围为 0~n-1,如果没有重复的数字的话,那么数组排序后数字 i 就是下标 i 所在的位置了,即 arr[i] == i。所以我们可以巧妙利用数组的下标特性来寻找解决方案。

    如果上面那句话还没看明白,看下面这个例子你就知道了。

    #arr数组中没有重复元素的情况
    #数组长度为7,元素范围为0-6
    arr = [0,1,2,3,4,5,6]
    arr[0] == 0
    arr[1] == 1
    arr[2] == 2
    

    我们通过一个具体的例子来捋一捋思路,先准备一个数组。

    arr = [4,1,1,3,5,2,5]
    

    从头开始遍历数组,判断 arr[i] 是否等于 i,如果等于则无需任何操作继续往后遍历。

    如果 arr[i] 不等于 i,则继续拿 arr[i] 和 arr[arr[i]] 比较,如果 arr[i] 和 arr[arr[i]] 相等,则找到一个重复的数,因为该数字在 i 下标和 arr[i] 下标同时出现了。

    如果 arr[i] 和 arr[arr[i]] 不相等,那就交换他们的位置,交换的目的就是为了把 arr[i] 放到属于他的位置,保证 arr[i] == i。

    交换了之后,再重复上面的比较、交换操作,直到找到一个重复的数。

    arr = [4,1,1,3,2,5,5]
    
    arr[0] != 0
    则比较 arr[0] 和 arr[4]
    
    arr[0] != arr[4]
    则交换 arr[0] 和 arr[4] 的位置
    
    新数组变成
    arr = [2,1,1,3,4,5,5]
    
    再从头开始遍历比较
    arr[0] != 0
    则比较 arr[0] 和 arr[2]
    
    arr[0] != arr[2]
    则交换 arr[0] 和 arr[2] 的位置
    
    新数组变成
    arr = [1,1,2,3,4,5,5]
    
    再从头开始遍历比较
    arr[0] != 0
    则比较 arr[0] 和 arr[1]
    
    arr[0] == arr[1]
    找到一个重复的数
    

    你可能会问,为什么要交换,交换的目的就是为了把元素放到属于它的位置上,要让这个数组满足 arr[i] == i,换句话说就是不断的调整数组,使其满足 arr[i] == i,比如数组中第一个元素 arr[0] 为 4 ,那就要把元素 4 放到下标为 4 的位置上去。下面是一份用 python 实现的完整代码,大家可以参考下。

    # encoding=utf-8
    
    def findDuplicate(arr):
        if arr is None:
            return False
    
        for i in arr:
            while arr[i] != i:
                if (arr[i] == arr[arr[i]]):#找到重复的值
                    return arr[arr[i]]
                else:#如果不相等就交换位置
                    temp = arr[arr[i]]
                    arr[arr[i]] = arr[i]
                    arr[i] = temp
        return False
    
    
    arr = [4,1,1,3,5,2,5]
    
    print(findDuplicate(arr))
    

    看完这篇文章,大家主要是知道在处理有关数组这种数据结构的问题时,要善于利用数组下标这个隐藏的条件,如果文章对你有帮助,就点个赞哈,感谢支持。

    展开全文
  • 对于数据库一表中的记录,如果有重复值如何进行删除。我现在将的作法记录下来以备忘。我所用的数据为oracle. 假设下一表 create table test (name varchar2(255),pass varchar2(255)); 如果数据库多行...
  • 本例主要介绍如何在excel中合并同类项数据,也就是去除某字段数据的重复值,然后将对应的数据求和,方法很简单,也很实用,对于经常使用excel的人员,能大量减少工作量提高工作效率。操作步骤:1、首先来一下原始...
  • 下图中,B列的文本很多都是重复的,我们只想让重复的数据留一个就足够了,提取结果为D列所示,这里教大家几个方法!01删除重复值1、选中B列,点击菜单栏的“数据”选项卡,在“数据工具”组中点击“删除重复值”。2...
  • 下图中,B列的文本很多都是重复的,我们只想让重复的数据留一个就足够了,提取结果为D列所示,这里教大家几个方法!方法一:删除重复值。1、选中B列,点击菜单栏的“数据”选项卡,在“数据工具”组中点击“删除重复...
  • 5.3 可选

    2011-04-18 13:57:00
    5.3 可选 在上一节中,我们如何创建,可以将多个值组合成一。例如,我们取一字符串,和一数字,并创建一复合,包含一字符串和一数字。在本节中,你将看到如何构造一个值,它既可以包含...
  • 下图中,B列的文本很多都是重复的,我们只想让重复的数据留一个就足够了,提取结果为D列所示,这里教大家几个方法!方法一:删除重复值。1、选中B列,点击菜单栏的“数据”选项卡,在“数据工具”组中点击“删除重复...
  • 如何用Graphpad Prism 8作散点图

    千次阅读 2020-09-29 14:19:18
    在一个XY数据表里,每个数据组的每个x值都有几个重复值。当你制作你的图表时,你能选择将所有的重复值都显示在你的图表上,而不是显示在误差棒里。如果你想显示每一个x值的重复值,则使用一个XY表。prism(wi...
  • 各位表亲,在前天,有个伙伴问我如何提取两列中的重复值,我分享了用WPS来提取。今天我们乘胜前进,学习用WPS的数据对比功能,让你大开眼界。首先小编用的是WPS2019,大家如果用的是旧版WPS,可以先升级下。...
  • 从前端方面来,既然是点击发送Ajax请求,那就设置个等待时间,进行第二次请求发送,即setTimeout(),方法,还需要个标致位,可以是全局变量,隐藏欲表单,禁用Button按钮,解除绑定点击事件,(这几个方法个其实是一样) ...
  • 如果函数几个参数,那么我们可以传入这个 hasher 函数来计算 key ,从而来 hash。 参考:关于 memoize 前后性能对比的可以下这篇文章 ...
  • 以上是MS的官方帮助,下面我们举几个例子来具体说明一下For命令在入侵中的用途。 sample2: 利用For命令来实现对一台目标Win2k主机的暴力密码破解。 我们用net use \ipipc$ "password" /u:"administrator"来尝试这...
  • 在前面的几个帖子里,我已经建立了如何把lambda演算变成一个有用的系统的点点滴滴。 我们已经了数字,布尔和选择运算符。我们唯一欠缺的是重复。 这个有点棘手。lambda演算使用递归实现循环(递归的解释可以...
  • 我知道已经人问过这样的问题,所以从某种意义上说,这是一个重复。...这可能需要几个小时,因此在这段时间内,它可以再次收到从传感器读取的请求。这个请求来自线程t_checker,它检查Firebase数...
  • 你必须知道的495C语言问题

    千次下载 热门讨论 2015-05-08 11:09:25
    1.28 文件中的第一声明就报出奇怪的语法错误,可我没什么问题。这是为什么? 1.29 为什么我的编译器不允许我定义大数组,如doublearray[256][256]? 命名空间 1.30如何判断哪些标识符可以使用,哪些被保留了...
  • <p>computed 计算属性 : 依赖其它属性值,并且 computed 的值有缓存,只有它依赖的属性值发生改变,下一次获取 computed 的值时才会重新计算 computed 的值。 <p>watch 侦听器 : 更多的是「观察」的作用,无缓存性,类似...
  • 16. hibernate进行多表查询每个表中各取几个字段,也就是说查询出来的结果集没有一个实体类与之对应如何解决; 123 17.介绍一下Hibernate的二级缓存 123 18、Spring 的依赖注入是什么意思? 给一个 Bean 的 message ...
  • 《你必须知道的495C语言问题》

    热门讨论 2010-03-20 16:41:18
    1.28 文件中的第一声明就报出奇怪的语法错误,可我没什么问题。这是为什么? 15 1.29 为什么我的编译器不允许我定义大数组,如double array[256][256]? 15 命名空间 15 1.30 如何判断哪些标识符可以使用,...
  • 1.28 文件中的第一声明就报出奇怪的语法错误,可我没什么问题。这是为什么? 15 1.29 为什么我的编译器不允许我定义大数组,如double array[256][256]? 15 命名空间 15 1.30 如何判断哪些标识符可以使用,...
  • 创建了几个String Object? 两个 31、EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的?  SessionBean: Stateless Session Bean 的生命周期是由容器决定的,当客户机发出请求要建立一个...
  • -MenuButton, LinkButton, Button, LinkButtonField的ConfirmTarget属性由字符串变为枚举类型,可以取三枚举Self, Parent, Top。 -Confirm.GetShowReference的最后一参数target变为枚举类型。 -Alert....
  • 使用 React Hooks 相比于从前的类组件以下点好处: <ol><li>代码可读性更强,原本同一块功能的代码逻辑被拆分在了不同的生命周期函数中,容易使开发者不利于维护和迭代,通过 React ...
  • foreach foreach 语句为对数组或者集合中的每元素重复执行嵌入语句。对于数组 示例为: using System; class MainClass { public static void Main() { int odd = 0, even = 0; int[] arr = new int [] {0,1,2,5,...

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 231
精华内容 92
关键字:

如何看重复值有几个