我想问一下excel中这个代码表示的是什么意思? 5
=OFFSET(Sheet1!$A$1,MATCH(LEFT(Sheet2!$A6)&"*",Sheet1!$A:$A,0)-1,,COUNTIF(Sheet1!$A:$...
=OFFSET(Sheet1!$A$1,MATCH(LEFT(Sheet2!$A6)&"*",Sheet1!$A:$A,0)-1,,COUNTIF(Sheet1!$A:$A,LEFT(Sheet2!$A6)&"*"))
展开
6个回答
2017-10-10 · 知道合伙人软件行家
关注
展开全部
首先给你纠正一下:你给的是公式,而不是代码。Excel中的公式是EXCEL工作表中进行数值计算的等式。公式输入是以“=”开始的。简单的公式有加、减、乘、除等计算。而公式中用得比较多的是Excel提供的各种函数。Excel的函数是Excel提供各种计算、查找、判断功能的函数。
先从Excel的offset来理解你这个公式,offset的作用是偏移,即从工作表中某个单元格或区域偏移后的数据区域,它的基本型式是:
OFFSET(reference, rows, cols, [height], [width])
其中的参数:
reference,偏移基点,即从什么位置开始偏移
row,偏移的行数
cols,偏移的列数
前面的三个参数是必需的
height,偏移后的高度,非必需,如果省略,则与选择的基点同高
width,偏移后的宽度,非必需,如果省略,则与选择的基点同宽
简单例子:
=OFFSET(A1, 3, 2, , 3)
从A1开始偏移,3行2列,就到了B4,高度同A1——即1行,宽度为3,即3列宽,也就是公式取得B4:D4区域
再来分析你的公式:
第1个参数是:Sheet1!$A$1,$A$1是绝对引用,前面的Sheet1说明公式的基点不在当前工作表,而是Sheet1,即从Sheet1的A1为基点开始偏移。
第2个参数是:
MATCH(LEFT(Sheet2!$A6)&"*",Sheet1!$A:$A,0)-1,本身又是一个嵌套的公式。
MATCH是查找函数,基本形式是:
MATCH(lookup_value, lookup_array, [match_type])
lookup_value,要在lookup_array匹配的值,为数据或单元格引用
lookup_array,数值、文本、逻辑值或单元格区域引用
match_type,匹配方式
1 或省略,MATCH 查找小于或等于 lookup_value 的最大值。lookup_array 参数中的值必须以升序排序,例如:...-2, -1, 0, 1, 2, ..., A-Z, FALSE, TRUE
0,MATCH 查找完全等于 lookup_value 的第一个值。lookup_array 参数中的值可按任何顺序排列。
-1,MATCH 查找大于或等于 lookup_value 的最小值。lookup_array 参数中的值必须按降序排列,例如:TRUE, FALSE, Z-A, ...2, 1, 0, -1, -2, ... 等等。
那么提问中的lookup_value是什么?是LEFT(Sheet2!$A6)&"*",就是取得A6单元格的第1个字符再连接通配符*
去与Sheet1!$A:$A,即Sheet1中的A列匹配。找到出现的第1个位置。如Sheet2中的A6为“Excel求助”,那么LEFT(Sheet2!$A6)就得到“E”,而Sheet1A列中A8是English,A10是Excel,MATCH(LEFT(Sheet2!$A6)&"*",Sheet1!$A:$A,0)得到的结果是English的位置——8,而不会是Excel的位置——10。公式中查得所在行之后再减去1。
OFFSET的第2个参数直接用了逗号,不输入具体数值,相当于0,即列不偏移,也就是仍为A列。
OFFSET的第3个参数是嵌套的公式:
COUNTIF(Sheet1!$A:$A,LEFT(Sheet2!$A6)&"*"),即统计Sheet1中的A列中所有第1个字符与Sheet2中A6第1个字符相同有多少个,就是OFFSET结果的行数。
OFFSET的第4个参数省略了,就是列数与A1一样,即一列。
所以OFFSET最后得到的结果是Sheet1中A列的一个连续区域。起点和大小都根据Sheet2中的A6来确定,起点位于Shhet1A列中第1次出现A6首字符处,高度为A列首字符与A6相同的行数。
先从Excel的offset来理解你这个公式,offset的作用是偏移,即从工作表中某个单元格或区域偏移后的数据区域,它的基本型式是:
OFFSET(reference, rows, cols, [height], [width])
其中的参数:
reference,偏移基点,即从什么位置开始偏移
row,偏移的行数
cols,偏移的列数
前面的三个参数是必需的
height,偏移后的高度,非必需,如果省略,则与选择的基点同高
width,偏移后的宽度,非必需,如果省略,则与选择的基点同宽
简单例子:
=OFFSET(A1, 3, 2, , 3)
从A1开始偏移,3行2列,就到了B4,高度同A1——即1行,宽度为3,即3列宽,也就是公式取得B4:D4区域
再来分析你的公式:
第1个参数是:Sheet1!$A$1,$A$1是绝对引用,前面的Sheet1说明公式的基点不在当前工作表,而是Sheet1,即从Sheet1的A1为基点开始偏移。
第2个参数是:
MATCH(LEFT(Sheet2!$A6)&"*",Sheet1!$A:$A,0)-1,本身又是一个嵌套的公式。
MATCH是查找函数,基本形式是:
MATCH(lookup_value, lookup_array, [match_type])
lookup_value,要在lookup_array匹配的值,为数据或单元格引用
lookup_array,数值、文本、逻辑值或单元格区域引用
match_type,匹配方式
1 或省略,MATCH 查找小于或等于 lookup_value 的最大值。lookup_array 参数中的值必须以升序排序,例如:...-2, -1, 0, 1, 2, ..., A-Z, FALSE, TRUE
0,MATCH 查找完全等于 lookup_value 的第一个值。lookup_array 参数中的值可按任何顺序排列。
-1,MATCH 查找大于或等于 lookup_value 的最小值。lookup_array 参数中的值必须按降序排列,例如:TRUE, FALSE, Z-A, ...2, 1, 0, -1, -2, ... 等等。
那么提问中的lookup_value是什么?是LEFT(Sheet2!$A6)&"*",就是取得A6单元格的第1个字符再连接通配符*
去与Sheet1!$A:$A,即Sheet1中的A列匹配。找到出现的第1个位置。如Sheet2中的A6为“Excel求助”,那么LEFT(Sheet2!$A6)就得到“E”,而Sheet1A列中A8是English,A10是Excel,MATCH(LEFT(Sheet2!$A6)&"*",Sheet1!$A:$A,0)得到的结果是English的位置——8,而不会是Excel的位置——10。公式中查得所在行之后再减去1。
OFFSET的第2个参数直接用了逗号,不输入具体数值,相当于0,即列不偏移,也就是仍为A列。
OFFSET的第3个参数是嵌套的公式:
COUNTIF(Sheet1!$A:$A,LEFT(Sheet2!$A6)&"*"),即统计Sheet1中的A列中所有第1个字符与Sheet2中A6第1个字符相同有多少个,就是OFFSET结果的行数。
OFFSET的第4个参数省略了,就是列数与A1一样,即一列。
所以OFFSET最后得到的结果是Sheet1中A列的一个连续区域。起点和大小都根据Sheet2中的A6来确定,起点位于Shhet1A列中第1次出现A6首字符处,高度为A列首字符与A6相同的行数。
展开全部
这是offset函数,返回的结果是一个单元格区域,根据参数返回的可能是一个单元格,也可能是多行多列的一个单元格区域。该函数有五个参数,下面就依次解释一下。
1、第一个参数是偏移基点单元格。在这个公式中是sheet1表中的A1单元格。
2、第二个参数是向下偏移的单元格数。等于0不偏移,大于0向下偏移,小于0则向上偏移。在这个公式中是利用match函数查找sheet2表中A6单元格左边第一个字符连接*,在sheet1表中a列的位置,返回的是一个数字,得到的结果-1。
3、第三个参数是向右偏移的单元格数。等于0不偏移,大于0向右偏移,小于0则向左偏移。在这个公式中为空,就是不偏移。
4、第四个参数就是返回单元格的行数。参数必须大于0。在这个公式中是利用countif函数统计sheet1表A列中,有多少个sheet2表中A6单元格左边第一个字符连接*的单元格个数。
5、第五个参数是返回单元格的列数。参数必须大于0。在这个公式中忽略,就是返回1列。
不知以上解释能为你解惑吗?
1、第一个参数是偏移基点单元格。在这个公式中是sheet1表中的A1单元格。
2、第二个参数是向下偏移的单元格数。等于0不偏移,大于0向下偏移,小于0则向上偏移。在这个公式中是利用match函数查找sheet2表中A6单元格左边第一个字符连接*,在sheet1表中a列的位置,返回的是一个数字,得到的结果-1。
3、第三个参数是向右偏移的单元格数。等于0不偏移,大于0向右偏移,小于0则向左偏移。在这个公式中为空,就是不偏移。
4、第四个参数就是返回单元格的行数。参数必须大于0。在这个公式中是利用countif函数统计sheet1表A列中,有多少个sheet2表中A6单元格左边第一个字符连接*的单元格个数。
5、第五个参数是返回单元格的列数。参数必须大于0。在这个公式中忽略,就是返回1列。
不知以上解释能为你解惑吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2017-07-13
展开全部
好几个函数套着,分开说。
LEFT(Sheet2!$A6)&"*":sheet2里面A6单元格第一个字符并符号*,假设A6里面内容是 ABC,那么这个公式处理后是 A*
MATCH(LEFT(Sheet2!$A6)&"*",Sheet1!$A:$A,0)-1:继续上面的假设,那么这个可以简化成MATCH(A*,Sheet1!$A:$A,0)-1,意思就是在sheet1的A列里面找以A开头的单元格第一次出现在A列的第几个单元格,最后再减去1。假设A9是以A开头的第一个单元格,这个公式结果就是9-1=8。
COUNTIF(Sheet1!$A:$A,LEFT(Sheet2!$A6)&"*")):继续上面的假设,那么这个可以简化成COUNTIF(Sheet1!$A:$A,A*)),意思是sheet1中A列以A开头的单元格总个数。假设sheet1A列以A开头的单元格有20个,这个公式结果就是20.
最后整个公式简化=OFFSET(Sheet1!$A$1,8,,20),意思是sheet1中A1,下移8行,就是A9,在向下引用20个单元格,就是A9到A28,这就是这个公式的最后意思
LEFT(Sheet2!$A6)&"*":sheet2里面A6单元格第一个字符并符号*,假设A6里面内容是 ABC,那么这个公式处理后是 A*
MATCH(LEFT(Sheet2!$A6)&"*",Sheet1!$A:$A,0)-1:继续上面的假设,那么这个可以简化成MATCH(A*,Sheet1!$A:$A,0)-1,意思就是在sheet1的A列里面找以A开头的单元格第一次出现在A列的第几个单元格,最后再减去1。假设A9是以A开头的第一个单元格,这个公式结果就是9-1=8。
COUNTIF(Sheet1!$A:$A,LEFT(Sheet2!$A6)&"*")):继续上面的假设,那么这个可以简化成COUNTIF(Sheet1!$A:$A,A*)),意思是sheet1中A列以A开头的单元格总个数。假设sheet1A列以A开头的单元格有20个,这个公式结果就是20.
最后整个公式简化=OFFSET(Sheet1!$A$1,8,,20),意思是sheet1中A1,下移8行,就是A9,在向下引用20个单元格,就是A9到A28,这就是这个公式的最后意思
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
应该是取出Sheet1的A列中首位的值等于【Sheet2A列中第6行值的首位】的数据,不过是Sheet1中A列的满足条件的最后一个咯,一般而言,这样的公式,要求Sheet1的A列是排序的
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个代表一个工程,一个超长的公式
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询