首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Excel公式技巧17: 使用VLOOKUP函数在多个工作表中查找相匹配的值(2)

    我们给出了基于在多个工作表给定列中匹配单个条件来返回值的解决方案。本文使用与之相同的示例,但是将匹配多个条件,并提供两个解决方案:一个是使用辅助列,另一个不使用辅助列。 下面是3个示例工作表: ?...图3:工作表Sheet3 示例要求从这3个工作表中从左至右查找,返回Colour列中为“Red”且“Year”列为“2012”对应的Amount列中的值,如下图4所示的第7行和第11行。 ?...图4:主工作表Master 解决方案1:使用辅助列 可以适当修改上篇文章中给出的公式,使其可以处理这里的情形。首先在每个工作表数据区域的左侧插入一个辅助列,该列中的数据为连接要查找的两个列中数据。...Sheets是定义的名称: 名称:Sheets 引用位置:={"Sheet1","Sheet2","Sheet3"} 这个公式的运行原理与上文相同,可参见《Excel公式技巧16:使用VLOOKUP函数在多个工作表中查找相匹配的值...C:C"}),2012)>0,0) 转换为: =MATCH(TRUE,{0,0,1}>0,0) 结果为: 3 表明在工作表列表的第3个工作表(即Sheet3)中进行查找。

    14.1K10

    Excel公式技巧16: 使用VLOOKUP函数在多个工作表中查找相匹配的值(1)

    在某个工作表单元格区域中查找值时,我们通常都会使用VLOOKUP函数。但是,如果在多个工作表中查找值并返回第一个相匹配的值时,可以使用VLOOKUP函数吗?本文将讲解这个技术。...最简单的解决方案是在每个相关的工作表中使用辅助列,即首先将相关的单元格值连接并放置在辅助列中。然而,有时候我们可能不能在工作表中使用辅助列,特别是要求在被查找的表左侧插入列时。...图3:工作表Sheet3 示例要求从这3个工作表中从左至右查找,返回Colour列中为“Red”对应的Amount列中的值,如下图4所示。 ?...B1:D10"),3,0) 其中,Sheets是定义的名称: 名称:Sheets 引用位置:={"Sheet1","Sheet2","Sheet3"} 在公式中使用的VLOOKUP函数与平常并没有什么不同...,我们首先需要确定在哪个工作表中进行查找,因此我们使用的函数应该能够操作三维单元格区域,而COUNTIF函数就可以。

    25.5K21

    一文带你搞定跳表

    作为一种查找效率较高的数据结构,它在复杂性上介于数组和平衡树之间。跳表的存在类似于《西游记》中所描述的六耳猕猴,它不属于常规数据结构类别,甚至在许多经典算法书籍中也难觅其踪影。...当碰到比目标大的节点时,再跳到原始链表中查找。...过程和之前差不多但是路径更短了。当数据量足够大的时候,这种多层链表能让我们跳过很多中间节点,极大地加快查找速度。上面的查找过程类似于二分查找,使得时间复杂度可以降低到 O(log n)。...跳表,英文是 SkipList,指的就是除了最下面原始链表之外,它会产生多层冗余、稀疏的链表。我们在查找数据时先在上层的链表中找,然后逐层向下,最终到原始链表来查找目标位置。...总结今天我们聊了跳表,跳表是一种由多个层次的链表组成的数据结构,其中高层次的链表更为稀疏。在查找数据时,我们首先从最高层次的链表开始,然后逐层向下查找,直至找到目标。

    9110

    ConcurrentSkipListMap原理

    而就查询的性能而言,跳表的时间复杂度也是 O(logn), 所以在并发数据结构中,JDK 使用跳表来实现一个 Map。 跳表的本质是同时维护了多个链表,并且链表是分层的, ?...查找时,可以从顶级链表开始找。一旦发现被查找的元素大于当前链表中的取值,就会转入下一层链表继续找。这也就是说在查找过程中,搜索是跳跃式的。如上图所示,在跳表中查找元素 18。 ?...跳表分为许多层(level),每一层都可以看作是数据的索引,这些索引的意义就是加快跳表查找数据速度。...跳表包含一个表头,它查找数据时,是从上往下,从左往右进行查找。现在“需要找出值为32的节点”为例,来对比说明跳表和普遍的链表。 情况1:链表中查找“32”节点 路径如下图所示: ?...需要4步(红色部分表示路径)。 情况2:跳表中查找“32”节点 路径如下图所示: ? 忽略索引垂直线路上路径的情况下,只需要2步(红色部分表示路径)。

    2K10

    项目动态|Apache IoTDB 新功能发布:InsertTablet接口支持写入空值,通配符使用方法更新

    ▎在0.12中,* 在路径中间表示单层,在路径结尾表示多层;无 ** 相关定义 ▎在最新的0.13版本中,* 在路径中任何位置都表示单层;** 在路径中任何位置都表示多层 2 InsertTablet...作为分隔符,例子如root.sg.d.s 前缀路径 (Prefix Path):路径开头的连续若干个节点连接所形成的路径 通配符 (Wildcard):用于表示多个节点的符号,“ * ” 在路径中用于匹配一层节点...在pattern中用于匹配一层或多层节点 ▎旧版通配符使用的问题 痛点1:无法表示树中间某一层的所有序列 例子:欲表达下图所示树中第4层的所有序列(root为第0层),root.*.*....3.2 版本0.13 ▎功能的定义 路径 (Path):在元数据树中,从root节点到当前节点依次经过的所有节点的名称的连接,连接时以 “.”...** :在pattern中用于匹配一层或多层节点 ▎使用示例 示例一:表示树中间某一层的所有序列 root.*.*.

    1K30

    「数据结构与算法Javascript描述」二叉树

    一棵树最上面的节点称为「根节点」,如果一个节点下面连接多个节点,那么该节点称为「父节点」,它下面的节点称为「子节点」。一个节点可以有 0 个、1 个或多个子节点。...继续回到上图,沿着一组特定的边,可以从一个节点走到另外一个与它不直接相连的节点。从一个节点到另一个节点的这一组边称为「路径」,在图中用虚线表示。以某种特定顺序访问树中所有的节点称为「树的遍历」。...我们定义树的层数就是树的深度。 2. 二叉树 正如前面提到的那样,二叉树每个节点的子节点不允许超过两个。通过将子节点的个数限定为 2,可以写出高效的程序在树中插入、查找和删除数据。...在一些二叉树的实现中,左节点包含一组特定的值,右节点包含另一组特定的值。下图展示了一棵二叉树。 二叉树 当考虑某种特殊的二叉树,比如「二叉搜索树」时,确定子节点非常重要。...在 inOrder()方法中,show() 函数像夹在两个递归调用之间;在 preOrder() 方法中,show()函数放在两个递归调用之前。 下图展示了先序遍历的访问路径。

    54720

    B-Tree 索引简介

    它以树状结构的方式组织数据,每个节点都有多个子节点,形成一个平衡的树,使得在大规模数据集上进行高效的查找操作成为可能。...2.B-Tree 结构:B-Tree 索引通常包括以下几个要点:•根节点:树的入口,从这里开始搜索。•叶子节点:存储实际数据行的地方。•分支节点:用于导航到叶子节点的路径。...3.索引创建:在 MySQL 中,可以使用 CREATE INDEX 或 ALTER TABLE 语句创建 B-Tree 索引。通常,你可以为表中的一个或多个列创建索引,以提高查询性能。...4.查询性能:B-Tree 索引使得数据的查找操作非常高效。在最坏情况下,检索一条记录所需的时间与树的高度成正比,因此通常具有 O(log n) 的时间复杂度。...8.聚集索引:在 InnoDB 存储引擎中,B-Tree 索引通常与表数据行存储在一起,称为聚集索引。聚集索引的叶子节点包含了完整的数据行。

    25430

    Redis数据结构-跳跃表

    跳表(skiplist)是一个特殊的链表,相比一般的链表,有更高的查找效率,其效率可比拟于二叉查找树。...跳跃表来源 跳跃表在 1990 年由 William Pugh 提出,而红黑树早在 1972 年由鲁道夫·贝尔发明了。红黑树在空间和时间效率上略胜跳表一筹,但跳跃表实现相对简单得到程序猿们的青睐。...跳表的性质: 由很多层结构组成 每一层都是一个有序的链表 最底层(Level 1) 的链表包含所有元素 如果一个元素出现在 Level i 的链表中,则它在 Level i 之下的链表也都会出现。...举例: 在这个skiplist中查找score=89.0的元素(即Bob的成绩数据),在查找路径中,我们会跨域图中标红的指针,这些指针上面的span值累加起来,就得到了Bob的排名(2+2+1)-1=4...通过这种方式就能得到一条O(log n)的查找路径 基本操作 查找操作 ? 实际上列表中是按照key进行排序的,查找过程也是根据key在比较。

    82922

    常用的数据检索结构

    哈希表 哈希表支持增、删、改、查操作,但是支持范围查找较差;因为哈希表特性,如果进行范围查找,一个范围的所有数据都必须经过哈希计算来查找对应的链表节点,这几乎是需要这个范围每一个数据都需要去哈希表中查找一次...B+树 B+树支持增、删、改、查操作,并且很好支持范围查找,插入和查找性能均衡。 B+树的结构每个非叶子节点是数据索引,叶子节点是数据或者数据的指针。...采用随机写是因为在B+树中,写操作是原地更新数据。比如修改B+树中某个叶子节点的数据,基本分为两步,第一是查找叶子节点数据,第二是原地更新这个值。...LSM树基本设计思想是把多个磁盘随机写合并为顺序写,它会把LSM树中节点更改记录到新的磁盘上,而不是直接修改LSM树中节点的值。...在LSM树的相关论文中给的一种实现方式,它把一棵树分割为多层,每一层都是B+树,并且越下面的层包括的树越大。 如上图内存中C0保存了新写入的数据,余下的C1~C{N}都存储在磁盘上。

    51730

    索引的数据结构

    联合字段索引在 where 条件中虽然是精确查询:where c2 = 4 and c3 = 'u' 但是在非叶子节点中是以范围查找的,可以理解为:where c2 >= 4 and c3 >= 'u'...B+Tree 本质上就是一个大的多层级目录,每经过一个目录时就会过滤掉很多无效的子目录,最终会查找到存储真实数据的目录。 如果说一个大的目录中只存放一个子目录是啥效果?...也就是会有很多层目录,并且我们从根节点开始查找,经过很多层目录之后,最后找到了一个目录,里面只存储了一条数据,你说气人不,费老大劲,经历了那么多次数据库 I/O,就查到一条数据,效率贼低。...B-Tree 在增删改的时候会导致树不平衡,这个时候就需要树进行自旋保持树的自平衡。 关键字结合分布在整棵树中,也就是叶子节点和非叶子节点都会存储数据。...其搜索性能等价于在关键字集合内做一次二分查找。 真正 B-Tree 的结构如下: B+Tree B+Tree 也是一种多路搜索树,在 B-Tree 的基础上改进。

    8910

    Redis 为什么用跳表,而不用平衡树?

    可以看到,这个查找过程就是在多个层级上跳来跳去,最后定位到元素。当数据量很大时,跳表的查找复杂度就是 O(logN)。 那跳表节点是怎么实现多层级的呢?...跳表是一个带有层级关系的链表,而且每一层级可以包含多个节点,每一个节点通过指针连接起来,实现这一特性就是靠跳表节点结构体中的zskiplistLevel 结构体类型的 level 数组。...因为跳表中的节点都是按序排列的,那么计算某个节点排位的时候,从头节点点到该结点的查询路径上,将沿途访问过的所有层的跨度累加起来,得到的结果就是目标节点在跳表中的排位。...举个例子,查找图中节点 3 在跳表中的排位,从头节点开始查找节点 3,查找的过程只经过了一个层(L2),并且层的跨度是 3,所以节点 3 在跳表中的排位是 3。...在平衡树上,我们找到指定范围的小值之后,还需要以中序遍历的顺序继续寻找其它不超过大值的节点。如果不对平衡树进行一定的改造,这里的中序遍历并不容易实现。

    60720

    Redis跳跃表是如何添加元素的?

    跳跃表 skiplist 是一种有序数据结构,它通过在每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的。...跳跃表支持平均 O(logN)、最坏 O(N) 复杂度的节点查找,还可以通过顺序性操作来批量处理节点。...跳跃表介绍 跳跃表 Skip List,也称之为跳表,是一种数据结构,用于在有序元素的集合中进行高效的查找操作。它通过添加多层链表的方式,提供了一种以空间换时间的方式来加速查找。...跳跃表由一个带有多层节点的链表组成,每一层都是原始链表的一个子集。最底层是一个完整的有序链表,包含所有元素。每个更高层级都是下层级的子集,通过添加额外的指针来跳过一些元素。...这使得它比普通的有序链表具有更快的查找性能,并且与平衡二叉搜索树(如红黑树)相比,实现起来更为简单。

    19120

    跳表很难吗?手把手教你如何跳跃它!

    查找长度指的是查找路径上跨越的跳数,而查找过程中的比较次数就等于查找长度加1。以前面图中标出的查找23的查找路径为例,从左上角的头结点开始,一直到结点22,查找长度为6。 ​...Ⅳ. skiplist与平衡树、哈希表的比较 ​ 如果要实现一个 key-value 结构,需求的功能有插入、查找、迭代、修改,那么首先Hash表就不是很适合了,因为哈希表迭代的时间复杂度比较高;而红黑树的插入很可能会涉及多个结点的旋转...所谓范围查找,指的是查找那些大小在指定的两个值之间的所有节点。 在 范围查找的时候,平衡树比 skiplist 操作要复杂。...在平衡树上,我们找到指定范围的小值之后,还需要以中序遍历的顺序继续寻找其它不超过大值的节点。如果不对平衡树进行一定的改造,这里的中序遍历并不容易实现。...在 SkiplistNode 中当然还是比较明显的,因为 skiplist 是基于链表产生,那么我们肯定得**用到链表的结构;除此之外,为了实现多层高度的节点,我们可以用数组,数组中存放的是下一个节点的指针

    59341

    Redis跳跃表是如何添加元素的?

    跳跃表 skiplist 是一种有序数据结构,它通过在每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的。...跳跃表支持平均 O(logN)、最坏 O(N) 复杂度的节点查找,还可以通过顺序性操作来批量处理节点。...跳跃表介绍跳跃表 Skip List,也称之为跳表,是一种数据结构,用于在有序元素的集合中进行高效的查找操作。它通过添加多层链表的方式,提供了一种以空间换时间的方式来加速查找。...跳跃表由一个带有多层节点的链表组成,每一层都是原始链表的一个子集。最底层是一个完整的有序链表,包含所有元素。每个更高层级都是下层级的子集,通过添加额外的指针来跳过一些元素。...这使得它比普通的有序链表具有更快的查找性能,并且与平衡二叉搜索树(如红黑树)相比,实现起来更为简单。

    21510

    如何让SQL速度飞起来 入门YashanDB优化器

    但是CBO优化器依赖数据特征的准确性,当数据变化较频繁的时候,数据特征的维护与实时更新很难做到,经过多层复杂运算后,其数据特征通过传统的统计计算也很难准确地评估出来,这些都影响了CBO中计划准确性,这也是过去几十年中...SQL语句经过Parse后生成抽象表达树,在进入到CBO后,根据SQL的语义,生成一个初始的逻辑执行树。从而初始化搜索空间,语句在CBO框架中的表示如图一。...在YashanDB数据库中,Group By的物理算子实现了Hash Group,Sorted Group和Sdt group,这样在每个阶段的Group操作,都会产生3个物理Group的路径,表示如图三...2 选择最佳计划在生成多个可选执行路径后,优化器需要选出最优的方式。...优化器会遍历所有可用计划路径,根据Cost计算,选出最优计划,在计划表示中,总访问路径的个数是每层节点之间的可选计划的乘积,比如在Group By没有下推的路径中,Group By有三种执行方式,Join

    8010

    【java-数据结构】Java优先级队列揭秘:堆的力量让数据处理飞起来

    在 Java 中,PriorityQueue 是基于堆的实现。堆是一种特殊的二叉树结构,满足特定的顺序性质:最大堆保证每个父节点的值大于等于其子节点的值,而最小堆则相反。...二、堆的基本原理 JDK1.8中的PriorityQueue底层使⽤了堆这种数据结构,⽽堆实际就是在完全⼆叉树的基础上进⾏了⼀些调整。...堆的性质: • 堆中某个节点的值总是不⼤于或不⼩于其⽗节点的值; • 堆总是⼀棵完全⼆叉树。.../最大值 获取最近的数据流中的最大值/最小值,实时计算排名前N的元素 最短路径算法 在图算法(如 Dijkstra 算法)中,用堆优化路径的计算 Dijkstra 算法,最短路径计算中的优先级队列 K...数组 排序、查找 O(n log n) 方便查找和排序,简单易用。 插入、删除操作较慢,尤其是在无序数据中。 链表 插入、删除 O(1) 插入和删除效率高,尤其适合频繁变动的场景。

    8310
    领券