精华内容
下载资源
问答
  • 2:提取K、M、O、Q列里面不重复数据(注意,数据列里面有空白的行);3:把提取出来的结果放在A2单元格的下方,不能有空白行;源数据及目标结果如下:解决的思路详解:1:由于K、M、O、Q四列不连续,且中间还有数据...

    本例的问题描述:

    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文件

    展开全文
  • 下面要把左边的表提取不重复值1、操作才是王道想一想,如果数据都在一列,那该多好,直接使用删除重复项就能实现提取不重复值。现在关键在怎么把多列转成一列?每列复制后,使用剪贴板的全部粘贴,可以直把多列转...
    c8041c99d51b5dab6569cdf32564a3ce.png

    大家好啊!

    今天的文章简单粗暴,分享5个多行多列提不重复值技巧,总有一个是你想不到的!

    下面要把左边的表提取出不重复值

    f005065c58dc5b159bb818fa95e44a54.png

    1、操作才是王道

    想一想,如果数据都在一列,那该多好,直接使用删除重复项就能实现提取不重复值。

    现在关键在怎么把多列转成一列?

    每列复制后,使用剪贴板的全部粘贴,可以直把多列转成一列。

    d6e41e7502d2de899202b6a6d8dedef9.gif

    2、函数很疯狂

    在F2单元格复制下面的公式,再按Ctrl+Shift+回车

    一直拖公式到出现空白为止!

    =INDIRECT(TEXT(MIN((COUNTIF(E$1:E1,$A$2:$C$6)+(A$2:C$6<=""))/1%%+ROW(A$2:C$6)/1%+COLUMN(A$2:C$6)),"r0c00"),)&""

    a0b1577815ec2dcf07951432ce9fdb69.png

    公式看晕了,那就看下面的数据透视表方法吧。

    3、Alt+D+P大法

    插入一个空白列,然后依次按Alt、 D、 P,调出透视表向导。

    生成透视表之后,再将【值】拖动到行区域,其他删除。

    7b8acad8f3a702724ebe38e3bdd48ace.gif

    4、PowerQuery的逆透视

    这些简单的数据整理,当然难不倒PQ大哥。

    逆透视列确实是一个逆天的功能。

    5074a66f7b6adbb03b9ea61a3e47e923.gif

    5、高大上的VBA

    对于VBA来说,要实现这个功能当然是小Case!

    新建一个按钮,复制代码即可。

    还可以灵活选取区域。

    3ccbb6aecc682748099c7ff681708aac.gif

    代码如下:

    arr = Application.InputBox(prompt:="请选择区域", Type:=8)    Set Rng = Application.InputBox(prompt:="请选择输出位置", Type:=8)    Set d = CreateObject("scripting.dictionary")        For i = 1 To UBound(arr)        For j = 1 To UBound(arr, 2)            If Len(arr(i, j)) Then d(arr(i, j)) = ""        Next    Next    Rng.Resize(d.Count) = Application.Transpose(d.keys)

    5种方法各有所长,如果是你,你会用哪一种?动手试试吧!

    喜欢就关注我吧,每天分享职场知识,办公技巧!

    展开全文
  • 我的目标:让中国的大学生走出校门的那一刻...在一列数据中去重复很好办,如果需要去重复数据不在一个表中该怎么办呢?如下:想要把上海、江苏、浙江、福建四个分公司的产品数据进行去重复并汇总到产品表中。思路...

    我的目标:让中国的大学生走出校门的那一刻就已经具备这些office技能,让职场人士能高效使用office为其服务。支持我,也为自己加油!

    我们都知道,字典中的key是不允许重复的,所以利用这个特性,我们就可以轻而易举的对数据进行去重复。

    在一列数据中去重复很好办,如果需要去重复的数据不在一个表中该怎么办呢?

    如下:

    e2a661abc942020067c514fa6edefd03.gif

    想要把上海、江苏、浙江、福建四个分公司的产品数据进行去重复并汇总到产品表中。

    思路:

    我们只需要用For-Each语句循环出每个工作表,并把其产品数据写入字典即可。

    代码如下:

    Sub 去重复()  Dim d As Object, sh As Worksheet, arr, i%  On Error Resume Next  Set d = CreateObject("scripting.dictionary")  For Each sh In Worksheets      If sh.Name <> "产品" Then         arr = sh.Range("a2", sh.[a2].End(xlDown))         For i = 1 To UBound(arr)            d.Add arr(i, 1), ""         Next       End If  Next  Sheets("产品").[a2].Resize(d.Count, 1) = Application.Transpose(d.keys)End Sub

    向右滑动可以查看完整代码

    这里值得注意的是:

    arr = sh.Range("a2", sh.[a2].End(xlDown))

    我写代码时一开始写成了:

    arr = sh.Range("a2", [a2].End(xlDown))

    怎么都出不来结果,按F8检查的过程中才发现要如此表达,括号外面要写明是哪张表里的区域,括号里面[a2]前面也要写明是哪张表里的a2单元格,否则会认为是活动工作表的[a2],结果就会出错。

    本节的分享就到这里,鹏哥祝大家每天都有进步。

    聚米为谷

    博学宏才

    如果对VBA感兴趣

    手机端请扫描

    01fe44fff445ea8a22babca9f7eac649.png

    电脑端请登录

    www.mihong.top

    找到《带你走进VBA的世界》

    跟着我一步步学习VBA

    c4e068e8f974cd4a5d2c5f6caa7e1af8.gif您点的每个赞,我都认真当成了喜欢
    展开全文
  • 、字典与唯一值例:提取“产品名称“表的不重复产品名称放在D提取唯一“表中。思路:把表格数据先装入数组(数组运行速度快)。字典的key是唯一的,把产品名称数组放入key,item没有值就直接为空。装入字典后...

    f3db982e63945564b8212dd864dacb85.png

    学习资源:《Excel VBA从入门到进阶》第28集 by兰色幻想

    本课学习字典的唯一值、求和和查找。

    一、字典与唯一值

    例:提取“产品名称“表的不重复产品名称放在D列”提取唯一“表中。

    6ab5ed12aabce3e17a238ab4780ecb84.png

    思路:

    1. 把表格数据先装入数组(数组运行速度快)。
    2. 字典的key是唯一的,把产品名称数组放入key,item没有值就直接为空。
    3. 装入字典后,再读取字典到”提取唯一“表即可。
    Sub 提取不重复的产品()
    Dim d As New Dictionary
    Dim arr, x
    
    arr = Range("B3:B13")
    
    For x = 1 To UBound(arr)
        d(arr(x, 1)) = ""
    Next x
    '这里不用add是为了避免key出现重复值导致运行出错。
    
    Range("D3").Resize(d.Count) = Application.Transpose(d.Keys)
    
    End Sub

    dcf3ff7910218978da4747a31d8cc38a.png
    运行结果

    二、字典与求和

    例:根据下表,计算各个商品的总销量,计算结果放入E3:F11。

    951e3b62330b84cf0c263a8c61569b29.png

    思路:

    1. 先把数据装入数组。
    2. 装入字典,同样利用key唯一原则,把商品名称当做key,如遇到不重复值,就把不重复值的数值加到对应的item里。
    3. 读取字典
    Sub 汇总()
    Dim d As New Dictionary
    Dim arr, x
    
    arr = Range("B3:C11")
    
    For x = 1 To UBound(arr)
        d(arr(x, 1)) = d(arr(x, 1)) + arr(x, 2)
        'key对应的item的值在原来的基础上加新的
    Next x
    
    Range("E3").Resize(d.Count) = Application.Transpose(d.Keys)
    Range("F3").Resize(d.Count) = Application.Transpose(d.Items)
    
    End Sub

    3c35803aba37c7b4fbe0514b291b8288.png
    运行结果

    三、字典与查找

    例:把三张班级学生名单装进字典,设计为无论使用学号能找到姓名,用姓名能找到学号。

    631949cf64c913aa74c6f25e3776b1c1.png

    共有三个班级,表格所在位置是sheet4-6,序号在A列,姓名在B列。

    3df2c6bc89c5d72989da75f2751e4d4b.png
    “查找”sheet的界面

    思路:

    1. 利用循环,先把数据装入数组。
    2. 把数组装入字典,因为无论输入姓名还是学号,都能查找到对应的值,那就把姓名和学号都作为key:当装入的key是姓名时,item就装入学号;当装入的key是学号时,item就装入姓名。
    3. 按输入值C2,读取字典,输入对应的item值
    Sub 多表双向查找()
    Dim d As New Dictionary
    Dim x, y, a, b
    Dim arr
    
    For x = 4 To 6
        
    b = Sheets(2).Name
    a = Sheets(x).Range("a65536").End(xlUp).Row - 1
        arr = Sheets(x).Range("a2").Resize(Sheets(x).Range("a65536").End(xlUp).Row - 1, 2)
    
        For y = 1 To UBound(arr)
            d(arr(y, 1)) = arr(y, 2)
            d(arr(y, 2)) = arr(y, 1)
        Next y
        '以姓名和学号都作为key放入字典。
    Next x
    
    If Sheets("查找").Range("C2") <> "" Then Sheets("查找").Range("C3") = d(Sheets("查找").Range("C2").Value)
    
    End Sub

    d310de1cd672ce92deef873356920f0d.png
    输入“云梦泽”,查找结果是A1,正确

    10285cf86f79f52b67877f99b1904a8d.png
    输入A1,查找结果是“云梦泽”,正确

    932210245a76e9cef6f9eb2d18376922.png
    字典d的item

    注意:这个例子有个bug,就是重名的话,按姓名查找学号可能会有误,因为key值是唯一的,如果有重复值会覆盖原来item的值。

    展开全文
  • 通过程序迭代,生成了k(k-1)/ 2唯一,不重复不重复内比较的Z分数,并针对两尾Z分数临界值测试了零假设。 此内过程可用于从大型汇总列数据提取潜在含义。 使用公共领域中通过互联网获取的汇总摘要数据...
  • 155.在指定列中寻找含有指定字符串的单元格,并将符合条件的单元格标为红色,并将对应的下一列单元格赋值为1 156.清除字符串中的空格 157.查找合并单元格位置 158.阴阳历转换和阴阳历生日 159.利用数组和Substitute...
  • 中文版Excel.2007高级VBA编程宝典 1/2

    热门讨论 2012-04-06 16:00:16
    本书将介绍如何定制Excel 用户窗体、开发新实用程序、用VBA 处理图表及数据透视表,以及创建事件处理应用程序。还将介绍如何使用VBA 子过程和函数过程、与其他应用程序轻松交互、构建用户友好的工具栏、菜单和帮助...
  • 中文版Excel.2007高级VBA编程宝典 2/2

    热门讨论 2012-04-06 16:41:38
    本书将介绍如何定制Excel 用户窗体、开发新实用程序、用VBA 处理图表及数据透视表,以及创建事件处理应用程序。还将介绍如何使用VBA 子过程和函数过程、与其他应用程序轻松交互、构建用户友好的工具栏、菜单和帮助...
  • 网上找的VBA代码来进行随机不重复提取。它能实现从某(本例为A1:A600)中随机不重复提取100个数据,将其放到指定区域(本例为C1:C100)中,但是只能实现随机抽取1次,可是VB我完全看不懂啊,不知道怎么改...
  • 表格数据汇总、全自动检索录入、数据采集大师、批量改图片大小、批量图片导入、批量图片导出、批量导图入批注、图片查询、截长图与分页截图、批量图片排序大师、批量图片格式转换、批量文字水印与Logo水印、批量取...
  • 【合并与合计】:可以任意指定两列,对其中一列数据合并同类项,而另一列对应的数值则求合计,合计结果存放在合并区域中 【建立图片目录】:对指定文件夹下所有图片(GIF、PNG、JPG,JPEG)建立目录,并批量导入 ...
  • Excel百宝箱9.0无限制破解版

    热门讨论 2012-02-03 19:05:29
    【禁止重复值】:可以指定某列不允许重复,指定后该列输入重复值时会自动提示 【标示重复值】:将重复出现的数据用不同颜色分别标示出来,不同重复值用不同颜色 【删除空白单元格所在行】:输入1则删除空白行(整行...
  • Excel百宝箱

    2012-10-27 17:09:21
    【禁止重复值】:可以指定某列不允许重复,指定后该列输入重复值时会自动提示 【标示重复值】:将重复出现的数据用不同颜色分别标示出来,不同重复值用不同颜色 【删除空白单元格所在行】:输入1则删除空白行(整行...
  • 表格数据汇总、全自动检索录入、数据采集大师、批量改图片大小、批量图片导入、批量图片导出、批量导图入批注、图片查询、截长图与分页截图、批量图片排序大师、批量图片格式转换、批量文字水印与Logo水印、批量取...
  • Excel百宝箱8.0

    2011-06-07 21:32:17
    【取消合并还原合并数据】:对一列中合并后的单元格取消合并,且恢复合并前所有数据 【合并数据并复制】:可以将一个区域的数据直接复制到一个单元格中 【合并区域自动换行】:可以让具有合并单元格的区域在自动换行...
  • 提取选区不重复值】将选择区域的数据,置于当前列中,忽略重复值 【清除中重复值】将选择中重复出现的数据删除(提供保留第次出现还是最后次出现的数据 的选择机会,也提供是否对删除数据加背景色突出的选择...
  • 【合并与合计】:可以任意指定两列,对其中一列数据合并同类项,而另一列对应的数值则求合计,合计结果存放在合并区域中 【建立图片目录】:对指定文件夹下所有图片(GIF、PNG、JPG,JPEG)建立目录,并批量导入 ...
  • excel 工具箱

    2012-01-22 15:04:34
    【禁止重复值】:可以指定某列不允许重复,指定后该列输入重复值时会自动提示 【标示重复值】:将重复出现的数据用不同颜色分别标示出来,不同重复值用不同颜色 【删除空白单元格所在行】:输入1则删除空白行(整行...
  • 数据有效性的高级应用_多表不重复输入 • 分级显示 • 合并计算 第6篇 使用Excel进行协同 • Excel单元格引用建立链接统计奖金总额 • 超链接实例 • 创建Excel动态超链接 • 发布(不)具有交互性的网页_Excel...
  • EXCEL百宝箱8.0终极版

    2011-11-05 16:48:02
    【取消合并还原合并数据】:对一列中合并后的单元格取消合并,且恢复合并前所有数据 【合并数据并复制】:可以将一个区域的数据直接复制到一个单元格中 【合并区域自动换行】:可以让具有合并单元格的区域在自动换行...
  • 6.1 定义重复数据项 73 6.2 动态取值的下拉列表 76 6.3 用表间公式提取数据 79 6.3.1 定义表间公式 79 6.3.2 应用表间公式 86 6.4 列表选择数据规范 86 6.4.1 定义列表 86 6.4.2 设置数据项的列表选择填写规范 88 ...
  • 【自动填充】 不同于EXCEL的CTRL+D功能,能对选中的某列数据不同存储格区域的空白处,取相邻的上一不为空的存储格内容同时作数据源的自动填充。1分钟内能处理手工需几小时才能完成的几万行ERP或KingDee原始数据。...
  • 【自动填充】 不同于EXCEL的CTRL+D功能,能对选中的某列数据不同存储格区域的空白处,取相邻的上一不为空的存储格内容同时作数据源的自动填充。1分钟内能处理手工需几小时才能完成的几万行ERP或KingDee原始数据。...
  • EXCEL集成工具箱V6.0

    2010-09-11 01:44:37
    财 务 工 具 【自动填充】 不同于EXCEL的CTRL+D功能,能对选中的某列数据不同存储格区域的空白处,取相邻的上一不为空的存储格内容同时作数据源的自动填充。1分钟内能处理手工需几小时才能完成的几万行ERP或KingDee...
  • 财 务 工 具 【自动填充】 不同于EXCEL的CTRL+D功能,能对选中的某列数据不同存储格区域的空白处,取相邻的上一不为空的存储格内容同时作数据源的自动填充。1分钟内能处理手工需几小时才能完成的几万行ERP或KingDee...
  • 【自动填充】 不同于EXCEL的CTRL+D功能,能对选中的某列数据不同存储格区域的空白处,取相邻的上一不为空的存储格内容同时作数据源的自动填充。1分钟内能处理手工需几小时才能完成的几万行ERP或KingDee原始数据。...
  • │ │ 技巧261 三维引用取不重复数据.xls │ │ 技巧262 跨多表查询.xls │ │ 技巧263 跨多表汇总.xls │ │ 技巧264 条件筛选下求不重复值.xls │ │ 技巧265 求出各项目极值的合计数.xls │ │ │ ├─第...
  • 5.3.8 提取字符串中除第个词以外的所有词 5.3.9 提取名字的名、中间名和姓 5.3.10 删除名字中的称谓 5.3.11 计算单元格中词的数量 5.4 自定义VBA文本函数  第6章 处理Et期和时间 6.1 Excel如何处理日期和...
  • 5.3.8 提取字符串中除第个词以外的所有词 5.3.9 提取名字的名、中间名和姓 5.3.10 删除名字中的称谓 5.3.11 计算单元格中词的数量 5.4 自定义VBA文本函数  第6章 处理Et期和时间 6.1 Excel如何处理日期和...

空空如也

空空如也

1 2
收藏数 33
精华内容 13
热门标签
关键字:

vba提取一列不重复数据