首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

VBA中的高级筛选技巧:获取唯一值

标签:VBA,AdvancedFilter方法 在处理大型数据集时,很可能需要查找并获取唯一值,特别是唯一字符串。...在VBA中,AdvancedFilter方法是处理这种情形的非常强大的一个工具。该方法可以保留原数据,采用基于工作表的条件,可以找到唯一值。下面,将详细介绍如何获取并将唯一值放置在单独的地方。...设置要筛选的单元格区域 AdvancedFilter方法对Range对象进行操作。接通常做法,设置单元格区域,但要注意,VBA始终将第一行视为包含标题的行。...如果数据没有标题,即第一个单元格是常规值,则第一个值可能会在唯一值列表中出现两次。 通常,我们只是在一列中查找唯一值。...如果输出区域太小,无法包含所有结果,VBA将溢出该区域。这意味着无法限制输出,因此要选择一个没有值或可以覆盖原有值的列。

8.6K10

Excel公式练习:根据条件获取唯一的第n个值

引言:本文的练习整理自chandoo.org。多一些练习,想想自己会怎么解决这个问题,看看别人又是怎样解决的,这样能够快速提高Excel公式编写水平。...本次的练习是:编写一个公式,用于显示数据(Data)列中与当前选定查找项目匹配的项目(Item)列的第n个最大的唯一值。 示例数据如下图1所示。...单元格D2、E2中的数据可以输入,公式根据其数据返回相应的结果。根据不同的输入数据,公式的结果应该如下图2所示。 图2 规则: 1.公式中不能使用整列引用。 2.不能使用中间公式。...3.不能使用VBA。 4.无论数据放置在工作表中的任何地方,公式都能正常运行。 5.除了规定的名称“i”“d”“n”“l”外,不能有其它硬编码引用。 请写下你的公式。 解决方案 公式1:数组公式。...=LARGE((MATCH(l&d,i&d,)=ROW(i)-MIN(ROW(i)-1))*(i=l)*d,n) …… 上面列出的大多数公式都没有进行详细的解析,有兴趣的朋友可以参照前面文章给出的方法逐个研究

2.2K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    VBA高级筛选应用:拆分或更新子工作表

    标签:VBA,高级筛选 下图1所示是一个简单的示例数据集。...下面的VBA代码有两个作用,它首先创建一个唯一列表,然后基于该唯一列表使用高级筛选。高级筛选是一个很好的工具,因为它可以在不使用复制和粘贴的情况下完成上述操作。...[M1], , 1 '唯一值 For i = 2 To sh.Range("M" & Rows.Count).End(xlUp).Row sh....[A1:A3000].AdvancedFilter 2, sh.[M1], , 1 这里只是选择了前3000行,而不是创建一个动态列表。高级筛选将列出唯一值项,并将其放在M列中。...注:本文学习整理自thesmallman.com,有兴趣的朋友可以到该网站下载原示例工作簿,也可以到知识星球App完美Excel社群下载中文示例工作簿。

    1.6K20

    Excel公式练习:根据条件获取唯一的第n个值(续)

    引言:本文的练习整理自chandoo.org。多一些练习,想想自己会怎么解决这个问题,看看别人又是怎样解决的,这样能够快速提高Excel公式编写水平。...本次的练习是:在《Excel公式练习:根据条件获取唯一的第n个值》中,编写了一个公式用于显示数据(Data)列中与当前选定查找项目匹配的项目(Item)列的第n个最大的唯一值。...然而,如果n是6,而我们只有3个唯一值,那么编写的公式应该返回0。 这里,你的任务是修改这些公式,以便在上面所说的情况下,返回最小的非零唯一值。 示例数据如下图1所示。...单元格D2、E2中的数据可以输入,公式根据其数据返回相应的结果。根据不同的输入数据,公式的结果应该如下图2所示。 图2 规则: 1.公式中不能使用整列引用。 2.不能使用中间公式。...3.不能使用VBA。 4.无论数据放置在工作表中的任何地方,公式都能正常运行。 5.除了规定的名称“i”“d”“n”“l”外,不能有其它硬编码引用。 请写下你的公式。 解决方案 公式1:数组公式。

    1.9K10

    VBA自动筛选完全指南(下)

    标签:VBA,自动筛选,Autofilter方法 本文前面的内容参见:VBA自动筛选完全指南(上) 示例:使用AutoFilter方法筛选前10条记录 数据集同上。...因此,获取前5条记录的代码为: Sub FilterRowsTop5() ActiveSheet.Range("A1").AutoFilter Field:=4, _ Criteria1...示例:基于单元格值筛选数据 VBA自动筛选与下拉列表配合,当从下拉列表中选择项目时,会自动筛选该项目的所有记录,如下图3所示。...在受保护的工作表中使用自动筛选 默认情况下,当工作表受保护时,不能应用筛选。然而,如果已经设置了筛选,则可以启用自动筛选,以确保即使在受保护的工作表上也可以使用。...文章中所使用的示例数据和代码可到知识星球App完美Excel社群下载。

    3.8K30

    Excel VBA解读(140): 从调用单元格中获取先前计算的值

    学习Excel技术,关注微信公众号: excelperfect 如果有一个依赖于一些计算慢的资源的用户定义函数,可能希望该用户定义函数在大多数情况下只返回其占用的单元格中最后一次计算得到的值,并且只偶尔使用计算慢的资源...Names("RefreshSlow").RefersTo = False Application.Calculation = lCalcMode End Sub 下面将使用虚拟函数来模拟获取计算慢的资源...使用XLM或XLL函数传递先前的值到用户定义函数 使用XLM或XLL技术,可以创建非多线程命令等效函数来检索先前的值。...下面是名为PREVIOUS的XLL+函数的代码,该函数具有使其成为易失性或非易失性的参数。(命令等效函数默认为易失性,但在使用它将前一个值传递给VBA用户定义函数时,通常希望它是非易失性的)。...小结 有几种方法可以从VBA用户定义函数的最后一次计算中获取先前的值,但最好的解决方案需要使用C++ XLL。

    6.8K20

    VBA自动筛选完全指南(上)

    标签:VBA,自动筛选,Autofilter方法 许多Excel功能都可以使用VBA来实现,自动筛选就是其中之一,对应着VBA的Autofilter方法。...图1 如果只需要筛选数据并执行一些基本操作,建议直接使用Excel工作界面提供的内置筛选功能。而当希望将筛选数据作为自动化的一部分时,应使用VBA的Autofilter方法。...Field:可选参数,这是要筛选的列号,从数据集的左侧开始计算。因此,如果要根据第二列筛选数据,则该值应为2。 Criteria1:可选参数,这是筛选数据集所基于的条件。...在不使用任何参数的情况下,它只会对列应用或删除筛选图标。...With End Sub 文章中所使用的示例数据和代码可到知识星球App完美Excel社群下载。

    4.9K10

    使用VBA基于图标集进行筛选

    标签:VBA Excel一直在改进自动筛选功能。可能和许多开发人员一样,当设置了条件,Excel为你进行数据筛选时,Excel会进行循环。...当需要在数千行中循环时,此方法就会出现的问题,大大减慢你的过程。相比之下,在VBA中使用自动筛选速度非常快,小列表和大列表之间的时间差可以忽略不计。...同时,Excel引入了按图标集筛选的功能,即单元格中显示的条件格式彩色箭头或图表指示器,如下图1所示。 图1 此时,可以基于图标集筛选,实际上相当简单。...如果试图将此代码改编为外观不同的图标集,则需要获取与使用的图标集相关的索引号。VBA代码-Item(1)与红色向下箭头相关,(2)与黄色箭头相关,(3)与绿色箭头相关。 过程效果如下图2所示。...图3 该图标集的编号是5,相应的VBA代码如下: Sub RedDownArrowV2() '红色 [K10:K100].AutoFilter 1, ThisWorkbook.IconSets(

    98320

    VBA专题02:使用代码进行复制操作

    学习Excel技术,关注微信公众号: excelperfect 在Excel工作表中,复制粘贴是最常用的操作之一。在已经输入的数据中,找到并复制想要的数据,然后粘贴到指定的地方,是再自然不过的操作了。...然后,判断数组中第1维的值是否为“完美Excel”并复制到工作表Sheet5中。注意,数组变量必须声明为Variant型。 使用For循环 使用For循环,也可以实现上图3的结果。...rng.AutoFilter '应用自动筛选 rng.AutoFilter Field:=1, Criteria1:="完美Excel" '复制数据 Sheet4...在使用VBA代码进行复制操作时,我们不需要先选择想要复制的数据,也不需要选择或激活数据所在的工作表。 2. 在不同的工作表之间复制,或者在不同的工作簿之间复制时,在前面加上相应的工作表或工作簿名称。...在复制前关闭Excel的某些功能,可以加速复制操作。

    6.6K20

    Range单元格对象方法(二)AutoFilter自动筛选

    大家好,今天继续介绍单元格对象的常用方法,本节主要介绍自动筛选AutoFilter方法。 平时使用excel时,自动筛选是经常用到的功能,下面将用代码来实现自动筛选功能。...自 动 筛 选 功 能 首先简单看下平时使用的自动筛选,点击数据选项卡中的筛选。在excel表格表头部分会自动出现筛选的倒三角符号。 点击筛选倒三角符号的下拉菜单可以看到有排序方式。...这有助于接下来的学习。 自动筛选AutoFilter方法 下面就学习如果通过VBA代码来实现单元格的自动筛选方法。...最后则用worksheet的的autofiltermode属性值为False,将自动筛选关闭。(对于自动筛选模式,通常也有在代码开始时做IF判断是否开启,先关闭再开启。)...---- 本节主要介绍了单元格对象的autofilter方法的使用,以及筛选之后的数据复制和删除。(删除是筛选后删除可见的单元格,注意保留表头的第一行的方法。)。

    7K21

    VBA代码应用示例:基于时间筛选数据

    标签:VBA 在筛选数据时,通常是筛选满足特定条件或者介于两个条件之间的信息,例如基于多个条件的筛选或者筛选两个日期之间的数据。...然而,总是会遇到一些特殊情形,例如,单元格中包含有日期和时间,如果单元格中的时间大于指定的时间,就获取该单元格所在行的数据。这就是本文要解决的问题。 这里使用VBA代码,但使用了辅助列。...如果指定时间为18时,将判断含有日期和时间的单元格(在列D)中的时间是否大于18时的公式如下: =IF(HOUR(D2)>=18,1,0) 在VBA中,将公式放置在引号中:“=IF(HOUR(D2)>=...[A10] rng.AutoFilter rng.Offset(1, rng.Columns.Count).Resize(lr - 1, 1).ClearContents End Sub...本文学习整理自thesmallman.com,你可以到该网站下载示例文件,也可以到知识星球App完美Excel社群下载示例文件。

    1.3K30

    Range单元格对象方法(三)Specialcells方法

    大家好,上节介绍了单元格的自动筛选AutoFilter方法。在结尾处引出了单元格Speicalcells方法,利用它删除可见单元格。本节就介绍快速定位特定单元格specialcells方法。...Specialcells 方 法 单元格Specialcells方法,其实就是在使用excel时候,查找和选择时的定位条件。...可选择的条件如下图所示: 下面具体来介绍下Specialcells方法,通过VBA代码来实现定位条件能。先看下specialcells方法的语法格式。...(对于单元格的address属性,它就是返回单元格的坐标) 二、定位空值单元格 Sheet1.UsedRange.SpecialCells(xlCellTypeBlanks).Address 代码中Sheet1...首先按条件筛选出相应相应条件的结果,之后以所用单元格作为对象。 SpecialCells(xlCellTypeVisible).EntireRow.Delete。

    6.5K11

    VBA实战技巧35:使用VBA组织图形2

    引言:本文的代码与昨天发表的《VBA实战技巧34:使用VBA组织图形1》一样,都整理自mrexcel.com,一个很好的令人兴奋的示例,有兴趣的朋友可以仔细研究。...代码所使用的工作表数据与《VBA实战技巧34:使用VBA组织图形1》相同,如下图1所示,包含所需信息的源数据表,其中: 列A和列B – 两个元素之间的关系。形状填充颜色将来自列A。...列C – 要显示的描述性文本。 列D – 放置在形状旁边的辅助数据。 列E – 形状是否有轮廓。...图1 与《VBA实战技巧34:使用VBA组织图形1》不同,本文的代码自顶向下组织图形,代码运行后的效果,如下图2所示。...Range("q1").CurrentRegion.Address, "$")(4) Range("a74:g" & Range("a" &Rows.Count).End(xlUp).Row).AdvancedFilter

    1.8K40
    领券