indirect+text:多行多列转单列(二)

小伙伴们,大家好。昨天说了多行多列转单列的方法,不过区域中都是非空单元格;如果区域中有空单元格,又该怎么办呢?今天就来说说这个问题。先来看下数据源和转换后的效果。下图左表是数据源,F列和H列是转换后的效果。F列是按行的方向排列,H列是按列的方向排列。

先来看按行方向排列的,在F2单元格输入公式=INDIRECT(TEXT(SMALL((A$2:D$7="")/1%%+ROW($2:$7)/1%+COLUMN(A:D),ROW(A1)),"r0c00"),)&"",按ctrl+shift+enter三键结束,向下填充。

=(A$2:D$7="")/1%%这部分返回的结果如下图红色框所示,将空单元格的变为10000,非空单元格的变为0。

=(A$2:D$7="")/1%%+ROW($2:$7)/1%+COLUMN(A:D)这部分是在上一步的基础上加上行号扩大100倍,再加上列号。目的就是将空单元格的变成比较大的数字,然后非空单元格的数字按行的方向从小到大排列。

=SMALL((A$2:D$7="")/1%%+ROW($2:$7)/1%+COLUMN(A:D),ROW(A1))这部分就是用small取出上一步的第1个最小值201,公式下拉取出第2个最小值203,然后204,301,302,。。。如下图红色框所示,201代表2行1列。这样刚好就是按行的方向提取,并且把空单元格排除出去。

=TEXT(SMALL((A$2:D$7="")/1%%+ROW($2:$7)/1%+COLUMN(A:D),ROW(A1)),"r0c00")这部分就是用text将上一步的数字转为文本型单元格地址,也就是r1c1样式,如下图红色框所示。

=INDIRECT(TEXT(SMALL((A$2:D$7="")/1%%+ROW($2:$7)/1%+COLUMN(A:D),ROW(A1)),"r0c00"),)这部分就是用indirect将文本型单元格地址转为单元格引用。结果如下图红色框所示,其实就是F列的结果。最后&""是为了将空单元格返回空文本。

也可以用if函数来完成,if相对会好理解一点,公式为=INDIRECT(TEXT(SMALL(IF(A$2:D$6<>"",ROW($2:$6),4^8)/1%+COLUMN(A:D),ROW(A1)),"r0c00"),)&"",按三键结束,向下填充。

再来看按列方向排列的,在H2单元格输入公式=INDIRECT("r"&MOD(SMALL((A$2:D$6="")/1%%+COLUMN(A:D)/1%+ROW($2:$6),ROW(A1)),100)&"c"&INT(SMALL((A$2:D$6="")/1%%+COLUMN(A:D)/1%+ROW($2:$6),ROW(A1))%),)&"",按三键结束,向下填充。

这个公式的思路和昨天的差不多,只不过多了个条件,对空单元格的判断处理,这里就不再详细说明了,可以参考昨天的文章。

用if来完成的话,公式为=INDIRECT("r"&MOD(SMALL(IF(A$2:D$6<>"",COLUMN(A:D),4^7)/1%+ROW($2:$6),ROW(A1)),100)&"c"&INT(SMALL(IF(A$2:D$6<>"",COLUMN(A:D),4^7)/1%+ROW($2:$6),ROW(A1))%),)&"",按三键结束,向下填充。

如果你还有其他的方法,欢迎在留言区写出答案,让我们共同学习。

文件链接:

https://pan.baidu.com/s/1lOByITx0ypNNh874lTp3mw

提取码:psj6

(0)

相关推荐

  • 如何用公式将多列合并为一列

    点击上方 蓝色 文字  关注我们吧! 送人玫瑰,手有余香,请将文章分享给更多朋友 动手操作是熟练掌握EXCEL的最快捷途径! EXCEL函数总是可以给我们带来不断的惊喜.前一段时间,一位朋友问我了一个 ...

  • 你还不会去重多列合并一列吗?快来看看这里吧!

    送人玫瑰,手有余香,请将文章分享给更多朋友 动手操作是熟练掌握EXCEL的最快捷途径! 小伙伴问了我这样一个问题:如何利用公式将下表中的多列合并为一列,而且要剔除重复值. 这个题目和我们之前的帖子如何 ...

  • 解读分析多区域查找的难题

    说起查找 你可能想到我们最常用的 VLOOKUP或者INDEX+MATCH组合 基本可以解决大部分查询引用问题 当时有的时候由于数据布局问题,这个套路就搞不定了 今天的就是其中之一 对于新手这个使用函 ...

  • 一招解决多行多列变一列的问题

    前言 你是不是也有过类似的经历,将表格设计成横向格式,给统计和分析带来很大的不方便,其实正确的姿势是第二个,正确的表格应有标题和记录组成,不应该合并单元格,每一列具有相同的属性,每一行代表一条完整的记 ...

  • 总结篇--斜线求和问题

    点击上方 蓝色 文字  关注我们吧! 送人玫瑰,手有余香,请将文章分享给更多朋友 动手操作是熟练掌握EXCEL的最快捷途径! 小伙伴们啊,在EXCEL中大家经常会遇到行或列的求和问题.可是,大家遇到过 ...

  • indirect+text:多行多列转单列的改进(按列的方向)

    小伙伴们好,今天对前面文章<indirect+text:多行多列转单列(一)>中的方法做个改进,主要改进的是按列的方向排列的.当时的公式有一部分重复用了2次,所以公式会比较长,不知道你是否 ...

  • indirect+text:多行多列转单列(一)

    小伙伴们,大家好.今天要分享的内容是多行多列转单列的方法,主要利用的是indirect和text函数.先来看下数据源和实现后的效果.下图左表是数据源,转换成单列的效果如F列和H列所示.F列是按行的方向 ...

  • 一万零一,是个神奇的数字。多行多列转单列就靠它!

    下图A2:D6是数据源,记录的是一些姓名.现在要将这个区域的姓名逐列提取,并放置在一列中,结果如F列所示.也就是先提取A列的姓名,然后是B列的.C列的.D列的. 这个问题用函数来完成还是挺困难的.除了 ...

  • 多行多列转单列(按列的方向)

    将下列二维区域中的名字按列的方向转为单列,结果如F列所示.对于这种问题,我们的思路是以终为始,也就是由结果往回推.方法是用引用函数+构造序列数. -01- offset函数 第一种方法先用offset ...

  • 假设客车的座位数是9行4列,使用二维数组在控制台应用程序中实现简单的客车售票系统。

    具体要求为: 使用一个二维数组记录客车售票系统中的所有座位号,并在每个座位号上都显示有票,然后用户输入一个坐标位置,按Enter键,即可将该座位号显示为已售. 首先我定义的输入格式为:1,2 个人认为 ...

  • indirect+text:多行多列中提取不重复值(二)

    小伙伴们,大家好.今天要分享的内容还是多行多列中提取不重复值,但是要比昨天的难一点,今天的区域中包含空单元格.如下图所示.F列和H列是提取后的结果.F列是按行提取的,H列是按列提取的. 还是先来看按行 ...

  • indirect+text:多行多列中提取不重复值(一)

    小伙伴们好啊,今天要分享的内容是从多行多列中提取不重复值,用的还是indirect+text.先来看下数据源和提取后的效果.下图左表是数据源,是一些城市,其中有重复的.现在要提取出不重复的,并且放在一 ...

  • Excel多行多列数据,包含多空格,快速转换成单列

    大家请看范例图片,Excel多行多列数据,包含多空格,快速转换成单列.メ メ我们先打开剪贴板,复制表格区域.メ メ单选单个单元格,双击进入编辑模式.メ メ点击剪贴板中的全部粘贴.メ メCTRL+H打开 ...

  • 单列数据转换为M行N列数据

    版权所有 转载须经Excel技巧网/Office学吧允许 [ Excel ]:如何将小于60分的成绩替换为不及格?