解释一下Excel的代码

=TEXT(IF(ISERROR(VLOOKUP(B3,INDIRECT(A3&"!B:C"),2,0)),0,VLOOKUP(B3,INDIRECT(A3&"!B:C"),2,0)),"[>0]0;")

看函数从最里层看起
1、VLOOKUP(B3,INDIRECT(A3&"!B:C"),2,0)

INDIRECT(A3&"!B:C")函数是引用工作表名为A3单元格的内容的B、C列
VLOOKUP就是精确查找(后面那个0表示精确查找)B3单元格在表格数组(indirect引用的B、c列数组)的第一列(引用的B列)中查找和他精确匹配的值(相同的值,找不到就找近似的最大值),返回该值所在B列的位置相对应的C列的位置(这就是第三个参数2的作用,如果是1就返回B列,是2就返回C列。比如引用的B:D,B就是第一列,C是第二列,D是第三列……)。
2、if(iserror(),0,Vlookup)
如果VLOOKUP返回不了值,会出错。iserror就是判断是否出错。出错为true,没出错返回false。
那if为ture的时候就返回0,if为false的时候就返回VLOOKUP查找的值
3、text(……,"[>0]0;")

返回的值,如果大于0,就返回原值。比如1,1>0,返回结果为1.如果<=0,返回空值。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-08-13
INDIRECT(A3&"!B:C"),得到A3代表的工作表中B:C区域引用;
VLOOKUP(B3,INDIRECT(A3&"!B:C"),2,0)),在A3代表的工作表中B:C区域中的第1列查找B3,得到对应的第2列,就是C列的值;(精确查找)
用IF函数判断,当没有找到时,为0,找到后返回相应的值;
最外面的TEXT是格式化函数,当大于0时,显示该值,否则为空。本回答被提问者采纳
第2个回答  2014-08-13
如果在以A3为工作表名的工作表B列包含当前工作表B3的内容,则返回其对应的的C列的内容,大于0的正常显示,小于等于0的显示为空白;如果在以A3为工作表名的工作表B列不包含当前工作表B3的内容,则返回0
这个公式还可以简化:
=TEXT(IF(COUNTIF(INDIRECT(A3&"!B:B"),B3),VLOOKUP(B3,INDIRECT(A3&"!B:C"),2,0),),"[>0]0;")
第3个回答  2014-08-13
Dim rg As Range, arr() 定义rg为一个Range(指单元格或单元格区域)类型的变量,定义一个数组变量arr
For Each rg In Range("a1:c9") 开始一个循环,对于"a1:c9"单元格区域中的每一格,
If rg.Value > 60 Then 如果单元格的值大于60,
R = R + 1 让R(统计变量)增加1,
ReDim Preserve arr(1 To R) 将数组变量arr的元素个数扩充为R个,以前已有的元素保留
arr(R) = rg.Address 将找到的这个单元格地址赋给第R个arr元素
End If
Next
Range(Join(arr, ",")).Select 将所有arr中记录的所有地址区域选中。Join(arr, ",")是指将arr中的每个元素以","为分隔符连接起来。追问

跟上面的代码有半毛钱关系吗?

相似回答