Excel – 一对多查找,表格还转置,你用哪种方法?

Excel 查找方式千千万,但是下面这种布局的查找,你会吗?

总结一下,这个查找涉及这几个知识点:一对多查找,表格转置,二维变一维(原本两列内容,查找后放在同一行)。

案例:

图 1 是原始表格,需要按班级提取所有人的姓名,向右填充,布局如图 2 的右边所示。

解决方案 1:万金油公式

先将班级列表去重,提取到右边蓝色区域:

1. 将 D 列作为辅助列,在 D2 输入以下公式,下拉复制公式:

=COUNTIF(A$2:A2,A2)

公式释义:

  • 统计每个班级是第几次出现
  • A$2:A2:第一个单元格的行必须固定,第二个活动,这样随着公式下拉,始终统计 A$2 到当前行所在单元格区域内,班级名称的重复次数,即第几次出现

2. 在 E2 单元格输入以下公式,按 Ctrl+Shift+Enter 使数组公式生效,下拉复制公式:

=INDEX($A$2:$A$10,SMALL(IF($D$2:$D$10=1,ROW($A$2:$A$10),4^8),ROW(A1)))

公式释义:

  • index+small+if+row 就是传说中的万金油公式,什么都能查
  • $A$2:$A$10:要查找的数据区域
  • $D$2:$D$10=1:表示班级名称第一次出现,即去重值
  • ROW($A$2:$A$10):如果满足上述去重条件,则返回班级名所在的行值
  • 4^8:如果不满足,则返回 4 的 8 次方,即 65536,这是 Excel 2003 的最大行数,通常用来表示找不到就返回最后一个空单元格
  • ROW(A1):a1 的行值,为“1”,随着公式下拉,会产生步长为 1 的序列值
  • small(...,row(a1)):依次取出数组中第 n 小的值,这个 n 就是 row() 函数返回的值;这一组第 n 小的值就是每个班级名第一次出现时的行值
  • 最后用 index 函数根据行值,查找出班级
  • 这是个数组公式,所以最后一定要按 Ctrl+Shift+Enter 结束

现在根据班级一对多查找姓名:

3. 在 F2 单元格输入以下公式,按 Ctrl+Shift+Enter 使数组公式生效,向右向下拖动复制公式::

=INDEX($B:$B,SMALL(IF($A$2:$A$10=$E2,ROW($A$2:$A$10),4^8),COLUMN(A1)))&''

公式释义:

再次使用万金油公式,挑不同之处解释

  • $A$2:$A$10=$E2:将 A 列中的班级名与 E2 匹配
  • COLUMN(A1):因为这次表格转置了,向右拖动的时候 row 函数结果不会递增,所以改用 column 函数
  • &'':当找到 65536 行时,index 会返回“0”,为了不显示无意义的“0”值,&'' 的作用是把数值转换为文本,“0”就不会显示出来了。

解决方案 2:vlookup

1. 在“班级”左边增加一个辅助列,公式如下:

=B2&E2

  • E 列就是解决方案 1 中的辅助列 D,只是增加了 A 列之后顺序右移了
  • F 列也是在解决方案 1 中用第一个万金油公式提取出的班级名

2. 在 G2 单元格输入以下公式,向右向下拖动复制公式:

=IFERROR(VLOOKUP($F2&COLUMN(A1),$A:$C,3,0),'')

公式释义:

  • $F2&COLUMN(A1):向右拖动到时候,column 函数会返回步长为 1 的序列值,结果就为“一班1”,“一班2”……这就与 A 列的值匹配上了
  • vlookup 是大家最熟悉的配方,就不多解释了
  • 最后用 iferror() 函数将错误值显示为空
(0)

相关推荐

  • Excel一对多查找方法大全

    经常被问道Excel中如果实现一对多查找,我多多少少写过不少了,但是不够完善,今天我们就抽点时间,写过专题,彻底总结一下!这么多方法和思路,你会几种? 最后一种,专门为小白准备,保证人人学得会的方法~ ...

  • 万金油公式在二维数组中的应用

    今天和小伙伴们学习下万金油公式在二维数组中的应用.对于万金油公式,相信常用excel函数的同学都很了解,我这里把它叫做筛选公式.如果不了解,也没有关系,可以慢慢积累. -01- 表格转换 1.将左表转 ...

  • ROW函数和COLUMN函数,简单实用!

    行云里讲堂(ID:xingyunli2022) 践行终身学习,专注个人提升. 整理编辑:枏北 一 ROW函数 ROW函数作用是返回一个引用的行号. 其语法为:ROW(参照区域). 如果省略参照区域,则 ...

  • 按指定次数重复内容的套路合集

    -套路合集- 按指定次数重复内容 1.vlookup精确查找(4参为0) 如下图所示,B列的是要重复的内容,C列是要重复的次数,最后想要的效果是E列那样.A重复2次,B重复3次...... 首先在A列 ...

  • VLOOKUP函数不能查找最后一个值,怎么办?

    VLOOKUP函数是使用最多的Excel函数之一,能够查找到第一个值并返回对应的值,然而,如果查找的项有多个,如何查找到最后一个值呢? 举个例子,如下图1所示的数据,要查找"员工15&quo ...

  • 全面总结Excel一对多查找,一篇足够

    在Excel中一对多查找是一种常见的需求,但是对于新手来说有一定的难度!为了让大家更好的理解和解决类似的问题,我也一直在思路,是否有一种更好的方式解决这个问题!今天就把最近的一些思路总结一下! 考虑大 ...

  • Excel一对多查找 万金油函数详解

    Excel一对多查找 万金油函数详解

  • 全面总结Excel一对多查找,一篇足够!

    在Excel中一对多查找是一种常见的需求,但是对于新手来说有一定的难度!为了让大家更好的理解和解决类似的问题,我也一直在思路,是否有一种更好的方式解决这个问题!今天就把最近的一些思路总结一下! 考虑大 ...

  • Excel一对多查找,你会吗?

    点击上方蓝字关注 Excel应用大全 置顶公众号或设为星标,避免收不到文章 每天分享Excel应用技巧,让你不仅用得上,还用的爽! 微信公众号:Excel应用大全(ExcelApp520) 个人微信号 ...

  • 删除Excel表格中多余空白行的4种方法,你会几个?

    表格中难免会出现了一些多余的空白行/空白列/空白单元格,怎样快速删除这些空白呢?至少有4种方法,看看你都会几个 一.排序法 1.行与行之间没有顺序 那么强烈推荐你重新给数据按照数值升序排列,排列之后所 ...

  • Excel实战技巧105:转置数据的3种方法

    excelperfect 所谓转置数据,就是将数据从水平转变成垂直,或者从垂直转变成水平.换句话说,在Excel工作表中,将行中的数据转变到列中,将列中的数据转变到行中.下面将展示3种转置数据的方法: ...

  • Excel怎样在表格里打勾(√)五种方法任君选择! 图文教程

    一.Excel特殊符号 Step1:点击插入符号 Step2:在弹出的符号对话框中,选择子集为"数字形式" Step3:找到√ Step4:点击插入即可. 二.输入法输入 你已经有 ...

  • Excel快速统计提成,还能查看公式,这个方法!

    本技巧是学院第707个原创office技巧. 往期技巧查询 请访问学院官网:www.zloffice.net ----------------------- 今天总结一下如何利用透视表计算销售提成的方 ...