转置函数transpose的用法
今天来说说transpose这个函数,它的作用是转置单元格区域,也就是行列互转。
-01-
函数说明
1.函数语法结构
transpose函数可以对工作表的单元格区域或数组进行转置,实现行列互转。比如一个区域或数组是2行4列,可以转为4行2列。语法结构如下,有1个参数。
TRANSPOSE(array)
array 必须 可以是单元格区域或数组。
-02-
示例解释
如下图所示,将左边A1:B4这个4行2列的区域转为右边2行4列的区域。也就把第一个区域的第1行转为第二个区域的第1列;第一个区域的第2行转为第二个区域的第2列,以此类推,全部转完。
如果要把转置后的结果输出到多单元格中,那么要执行几步操作。
第1步,选择一个区域,这个区域的尺寸是有规定的,行数等于原区域的列数,列数等于原区域的行数,如下图所示。
第2步,在选中区域的情况下,输入公式=TRANSPOSE(A1:B4),如下图所示。
第3步,按ctrl+shift+enter,如下图所示。可以看到编辑栏中的公式加了大括号{}。
-03-
具体应用
1.统计70分到80分的个数
如下图所示,左边是个成绩表,在右边统计出70分到80分的个数。B列的分数是随机数,按F9会自动变化;并且设置了条件格式,将70分到80分的标记出来。在D9单元格中输入公式=SUM(--(B9:B17=TRANSPOSE(ROW(70:80)))),按ctrl+shift+enter三键。
如果你不懂这个公式也没关系。先说下思路:将每个分数分别与70,71,72,73,74,75,76,77,78,79,80做比较,看看它们是不是相等。相等的返回true,不相等的返回false。最后将条件成立的全部加起来。实际上就是方向不同的一维数组的运算,如下图所示。
那么现在的问题就是70-80这个横向数组怎么构造?如果用column的话,70-80对应的字母是多少?你要找的话是不是很麻烦。
这里就用到row和transpose的组合,先用row(70:80)构建一个纵向的一维数组,然后用transpose将其转为横向的一维数组。你可以输入=TRANSPOSE(ROW(70:80)),查看是不是变成横向一维数组了。
后面就是将方向不同的一维数组进行运算,得到上图的二维数组,用负负将逻辑值转为0或1,最后用sum求和,完成。
2.提取数字
如下图所示,A列是一些字符串,要求将其中的数字提取出来。在B24单元格中输入公式=MAX(IFERROR(--MID(A24,ROW($1:$20),TRANSPOSE(ROW($1:$20))),)),按ctrl+shift+enter三键,向下填充。
可以看到mid函数的第2参数和第3参数都是用的数组,ROW($1:$20)是纵向的一维数组,TRANSPOSE(ROW($1:$20))是将纵向的一维数组转成横向的一维数组,这样mid函数就会得到一个二维数组。
思路是这样的:在每个单元格中,从第1位开始提取,提取1位,2位···一直到20位;然后从第2位开始提取1位,2位···一直到20位;以此类推,直到从第20位开始提取1位,2位···一直到20位,构成一个二维数组。
然后对这个二维数组进行负负运算,这样文本转为错误值,文本型数字转为数字;用iferror将错误值转为0,最后用max取最大值,完成。
如果对你有所帮助或启发,请打赏或分享一下,你的支持就是我最大的动力!
此公众号没有留言功能,如果有问题可以发到邮箱715704566@qq.com,有时间会回复的。