地瓜君的excel小课堂——行函数与列函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了地瓜君的excel小课堂——行函数与列函数相关的知识,希望对你有一定的参考价值。

大家用Excel处理数据的时候经常会用到一些查找引用函数,今天地瓜君就来和大家一起学习一下查找引用函数中的行函数与列函数啦。

导航:1、row函数

2、rows函数

3、column函数

4、columns函数

我们重点介绍这4个函数里最常见也是非常实用的函数row函数,其他3个函数不是最常用所以就稍微简单的介绍下啦

一、row函数(返回一个引用的行号)

语法:=row(reference)

说明:如果省略reference(参数),则默认返回row函数所在单元格的行号。

参数reference不能同时引用多个区域

函数本身是很好理解的,比如说输入公式=row(C5) ,那么就是返回C5单元格所在的行,即第5行

如果这个参数是一个区域,那么返回引用区域中第一行的行号。比如说,输入公式=row(B2:B10),那么返回的是区域中第一行B2所在行的行号,即第2行。

听起来挺简单的,那我们来看看有哪些地方可以用到这个函数呢?

例1:自动生成顺序序号

大家在做编号的时候是不是直接输入1234数字往下拖的呢→_→

我们可以在A3中输入公式=row()-2,如下图

技术分享

那为什么这个A3单元格在第3行却显示1呢?秘密就在我们的-2上啦!

上文函数说明中有提到,如果省略reference(参数),则默认返回row函数所在单元格的行号。那我们在A3单元格先输入=row(),返回的是A3单元格所在的行号3,那我们序号是从1开始的,如果我们要变成第1行,是不是要向上移2行呢?在Excel中向下移动单元格是+n,向上移动单元格就是-n,这就是-2的由来啦!

接下来做的事就是按住单元格右下角的小方块向下拖动就行啦!

例2:生成中文+数字编号

让我们根据上面的序号再添点文字,这就需要将上例的函数嵌套到text函数里啦

我们在B3单元格里输入公式=TEXT(ROW()-2,"第0名"),如下图

技术分享

text函数是根据指定的格式将数字转化为文本,就是把数字序号1,指定一个格式"第0名",就完成啦!

难道row函数就用来做序号吗?当然不是啦╮(╯▽╰)╭让我们再高级一点

例3:在A1单元格里输入987654321,然后对这些数字进行相加求和。

这里涉及到数组公式,让我们先上公式然后慢慢讲解↓

=SUM(MID(A1,ROW(1:9),1)*1

我们来一部分一部分拆解。

mid函数大家应该挺熟悉,是"从一个文本字符串的指定位置开始,截取指定数目的字符"。

MID(text,start_num,num_chars)

=mid(需要截取的文本或其所在单元格,从第几位开始截取,截几位)

比如:我们取A1单元格的第1位数字=mid(A1,1,1)

取A1单元格的第2位数字=mid(A1,2,1)

取A1单元格的第3位数字=mid(A1,3,1)

以此类推

我们需要把A1单元格里的每位数字加起来,那么逻辑是:mid()+mid()+……分别提取9位数字再用sum函数相加,即9+8+7+6+5+4+3+2+1=45

那么我们如何把繁琐的公式简化呢?这就用到row函数的数组功能

row(1:9)在很多比较高端的函数里都有这样的写法,表示1-9行的行数,它是一组数,即1;2;3;4;5;6;7;8;9。用数组形式表示row(1:9)={1;2;3;4;5;6;7;8;9}

这里row(1:9)生成1~9的一组数字,它会分别作用于mid函数,达到分别截取各个位置数字的目的

然后是最后一项*1,因为mid函数是取出文本,而我们要求和数字,那么我们就把截取出的数据乘以1,转换成数字

最后,最重要的一点=====这个公式是个数组公式,所以输入完公式不能直接按回车,要按ctrl+shift+enter三键组合键完成输入!!!

技术分享

技术分享例4:对矩阵数据的筛选(截取对角线)

技术分享


看起来挺炫酷的0.0,Excel中很多函数都能做到,比如vlookup、index函数等等,我们今天用的是row函数来截取矩阵。

首先放上我们的数据源,我们准备了一个小一点的矩阵,方便大家观察:

技术分享

这是一个长10宽10的正方形矩阵,所在的位置是“A2:J11”,那我们一步步来思考,是不是我们需要去除的单元格是B1,C1,C2,D1,D2,D3……就是我们下面红框标出的部分都是去除的↓

技术分享

既然要用到row函数我们就要向行数上考虑,那来找一下规律,比如我们看这个矩阵可以很轻易的得到:A列的第2行及以下保留,B列的第3行及以下保留,C列的第4行及以下保留,……。那我们是不是可以得到要去除的单元格呢?

因为Excel里不接受≥的判断逻辑,我们需要整理一下,那么判断逻辑应该是:A列<第2行的去除,B列<第3行的去除,C列<第4行的去除,……以此类推,就是红框里的要去除的部分。那我们在Excel中怎么实现呢?就要用到if判断函数了。

IF(logical_test,value_if_true,value_if_false)

“如果A列的A2单元格<行数2,那么显示为空值(去除),否则返回A2单元格的值”;

“如果B列的B2单元格<行数3,那么显示为空值(去除),否则返回B2单元格的值”;

“如果C列的C2单元格<行数4,那么显示为空值(去除),否则返回C2单元格的值”;

……

好了逻辑不多说相信大家应该明白了,想必大家也看到了每一列都有一个可以参考的规则参数,那么我们在空白区域添加一行辅助行,帮助我们简化公式,如下图

技术分享

接下来我们在L2单元格里用if函数描述我们的逻辑:

=IF(ROW(A2)<L$1,"",A2)(这里需要注意部分绝对引用)

技术分享

接下来只要向下及向右拖拽公式,就能得到我们需要的对角矩阵啦

技术分享

其实Excel的函数应用看似繁琐,但是只要我们发现其中的规则就迎刃而解了。

二、rows函数(用于返回数组或单元格区域中的行数。)

语法:=ROWS(array)

array:表示要返回行数的数组、数组公式或单元格引用。

注意:array是必需的,不能省略。

比如:=rows(A1:B5) 就是返回A1到B5区域有几行,结果为5

又比如:=rows({1,2,3;4,5,6}),这是一个两行三列的数组(逗号为列,分号为行),返回行数是2

rows函数我们还有另一种写法就是:=rows($1:1),下拉。返回的结果是从第1行(绝对引用)至当前行的行数(相对引用,可变),例如=rows($1:5),结果为5

rows函数和row函数的区别:

  1. 我们经常用ROW(1:1)解决生成自然数(序号)问题,有时也可以使用ROWS($A$1:A1)替代ROW(1:1)。

  2. ROWS($A$1:A1)返回的是单纯的数字,返回单值,而不是数组;而ROW(1:1)返回的是数组中的数字。

  3. 从运算速度上分析,ROWS($A$1:A1)的运算速度比ROW(1:1)快,是Rows()本身的函数性质有关。


接下来是列函数(列函数跟行函数差不多,只不过从行换成了列)

三、column函数(返回所选择的某一个单元格的列数。)

语法:=column (reference)

说明:如果省略reference(参照),则默认返回row函数所在单元格的列数。

参数reference不能同时引用多个区域

例如输入公式=column(E6),那么返回E6单元格所在列,返回5

例1:利用column函数嵌套vlookup函数

=VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)

=vlookup(要查找的值,要查找的区域,返回数据在查找区域的第几列数,模糊匹配/精确匹配)

用vlookup函数得出的是这样的↓:

技术分享

那我们用column嵌套进去就是这样 下:

技术分享

四、columns函数(用于返回数组或单元格区域中的列数。)

语法:=columns(array)

array:表示要返回列数的数组、数组公式或单元格引用。

注意:array是必需的,不能省略。

columns函数和rows函数是类似的,所以就不介绍案例啦^_^

想必大家看了这么多也乏了,那我们下次再讲另外的查找引用函数啦!大家下次见╮(╯▽╰)╭


以上是关于地瓜君的excel小课堂——行函数与列函数的主要内容,如果未能解决你的问题,请参考以下文章

excel小技巧之快速调整行高列宽 如何快速调整行高列宽

烤地瓜小程序

皮皮君的C++第八周(?)总结

为啥 CROSS APPLY 与列和聚合函数需要 Group by

Pandas高级数据分析快速入门之数据编辑——删除行与列

jdk8函数式编程,10行代码实现 Excel 导出方案