就您的=SUM(OFFSET(offset indirect嵌套(CHAR(64+COLUMN())&2),,,ROW()-2))这个公式咨询下! 这个是计算某一列的求和

《查询引用方法全集》公式说明(1)_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
《查询引用方法全集》公式说明(1)
上传于||暂无简介
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩9页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢前言(占座帖-_-!)  抛开对微软和盖兹同学的RPWT不谈,Excel在众多制表软件中还是出类拔萃的,它凭借其丰富而强大的功能,在办公应用领域得到了广泛的应用。从本版有关excel的讨论中来看,有众多使用者只是把它当作文字处理排版和简单计算的工具,而对其自动化处理功能研究较少,手执利器而不知其用。    鄙人不才,于Excel函数公式及VBA方面稍有心得,愿与电脑版众网友共享之,望乞垂青:)    PS!自从混天涯电脑版以来,从众网友的问题讨论中受益匪浅,也曾在解决几个关于excel问题的帖子中得过几位网友谬赞,感激之余,作此帖。本想从简到繁系统地讲解一下excel的功能及其实际应用,但考虑工程庞大,非我力所能及。所以在此只针对某些网友提出的比较有代表性的问题对其解决思路和方法做详细解说,尽量附上样例文件和图片说明。    另外,出于版面整洁性考虑,本帖谢绝一切回帖和顶帖,请大家见谅。如有问题,可在本版发帖或去下面帖子回复,我会尽早回复:    /New/PublicForum/Content.asp?flag=0&idWriter=0&Key=0&idArticle=205582&strItem=it  电脑网络 [软件工具]有excel应用方面(函数、数组公式、VBA等)问题的请进来
05:01    稍候片刻,马上进入实例(一)。  
楼主发言:1次 发图:0张 | 更多
  沙发,半夜也不容易!
  实例一:医药费分段报销  重点内容:“插入>名称>定义”菜单项,查找和引用函数(indirect(),adress(),row(),column()函数)和if函数  样本下载:/excel/inst1.xls(14k)    问题:  -----------  作者:读过小学 回复日期: 8:56:00 
    我也有一个问题,涉及到医药费报销:    分三段:1、乡镇卫生院起付线300元,县级医院起付线800元,县外医院起付线1200元,同时分段报销,5000元以下30%,要扣除起付线,以上10000元以下40%,1元以上50%。比如我在乡镇卫生院看了11000,能报销    (.3++=3910元    另外县外医院还要*0.9要求输入医药费总额就能自动得出实报金额。如图。不要太复杂。多谢。  。。。。  不好意思,乡镇卫生院的数据写错了,应分别为810,。  
  解决方法一-if公式嵌套法(可行,但不易编写,容易出错):看到上面这个题目,相信大多数excel使用者的第一反应是利用多重if()函数嵌套,用伪代码表示即为:    单元格C2实报金额:=if(A2=&县外&,应报金额*0.9,应报金额)    其中,应报金额=if(B2&起报线,0,if(B2&5000,(B2-起报线)*0.3,if(B2&1-起报线)*0.3+(B2-,(5000-起报线)*0.3++(B2-1)))    其中,起报线=if(A2=&乡镇卫生院&,300,if(A2=&县级&,800,1200))  当然,如果if嵌套小于7层,这个办法是完全可行的,但如果真正把“起报线”代入“应报金额”再把“应报金额”代入C2单元格的话,完整的公式将如下:  =IF(A2=&县外&,(IF(B2&(IF(A2=&乡镇卫生院&,300,IF(A2=&县级&,800,1200))),0,IF(B2&5000,(B2-(IF(A2=&乡镇卫生院&,300,IF(A2=&县级&,800,1200))))*0.3,IF(B2&1-(IF(A2=&乡镇卫生院&,300,IF(A2=&县级&,800,1200))))*0.3+(B2-,(5000-(IF(A2=&乡镇卫生院&,300,IF(A2=&县级&,800,1200))))*0.3++(B2-1))))*0.9,(IF(B2&(IF(A2=&乡镇卫生院&,300,IF(A2=&县级&,800,1200))),0,IF(B2&5000,(B2-(IF(A2=&乡镇卫生院&,300,IF(A2=&县级&,800,1200))))*0.3,IF(B2&1-(IF(A2=&乡镇卫生院&,300,IF(A2=&县级&,800,1200))))*0.3+(B2-,(5000-(IF(A2=&乡镇卫生院&,300,IF(A2=&县级&,800,1200))))*0.3++(B2-1)))))  虽说一步解决问题,但公式冗长,编写过程中容易出各种错误,不建议新手使用    解决方法二-公式+辅助列法(简单明了,推荐使用):  通过方法一中的思路和过程,我们很容易看到在最后的长公式中,有很多重复片段,如(IF(A2=&乡镇卫生院&,300,IF(A2=&县级&,800,1200)这段,其实就是对起报线的判断过程,我们可以把这些中间变量存到一个单元格中(比如D2单元格),而且引用这个单元格时只需两个字母D2就可以了。这样,操作步骤是:  1。在D1中输入“起报线”,在D2中输入:   =IF(A2=&乡镇卫生院&,300,IF(A2=&县级&,800,1200)) **注一  2。在E1中输入“应报金额”,在E2中输入:   =IF(B2&D2,0,IF(B2&5000,(B2-D2)*0.3,IF(B2&1-D2)*0.3+(B2-,(.3++(B2-1)))  3。回到C2,输入:   =IF(A2=&县外&,E2*0.9,E2)  这个方法过程清晰,使用者如果不犯逻辑错误的话不易出问题,特别适用于Excel公式初入门者使用。    办法三-VBA自定义函数法(适用于Excel高级用户,在此问题上不推荐)  主要思路同上,但计算部分利用Excel的VBA自定义函数,在此给出个主要结构,具体代码不写了。  1。在Excel中按Alt+F11键,进入VB编辑器中。  2。插入一个模块,在模块中加入一个自定义函数。  然后粘入下列代码:  Public Function Reimburse(hos_type, total_cost)  Dim payable As Integer ‘应报金额  Dim minCost As Integer ‘起报线    Select Case hos_type  
Case &乡镇卫生院&  
minCost = 300  
Case &县内&  
minCost = 800  
Case &县外&  
minCost = 1200  End Select    If total_cost & minCost Then  
Reimburse = 0  ElseIf total_cost & 5000 Then  
Reimburse = (total_cost - minCost) * 0.3  ElseIf total_cost & 10000 Then  
Reimburse = (5000 - minCost) * 0.3 + (total_cost - 5000) * 0.4  Else  
Reimburse = (5000 - minCost) * 0.3 + 2000 + (total_cost - 10000) * 0.5  End If    If hos_type = &县外& Then  
Reimburse = Reimburse * 0.9  End If    End Function    这种方法有个缺点,就是受excel安全性的限制,如果安全性为高,则因无法运行任何宏代码而出错,而安全性为中时,每次打开文件都会有一个是否运行宏代码的提示。    累了,先歇会儿,过一会儿再说附件中的定义名称法。    楼主家没有板凳坐了,请大家自觉,非常感谢(恶狼居然抢俺沙发,555)
  回来了,继续侃:)    方法四-定义名称法  在不能用方法二的情况下(如出于表格布局、打印效果等方面的考虑而不能使用辅助列),可以考虑把辅助列放到自定义的名称(也称做“三维引用”)下。这里的自定义名称所起的效果相当于编程中的中间变量。  在这里,主要的问题是,在目标单元格位置未知的情况下,如何确定引用单元格的位置。这里先用不带参数的row()和column()函数取得目标单元格的行号和列号,再根据引用单元格和目标单元格的相对位置用address(row(),column-1)得到引用单元格的地址,然后用indirect函数得到对引用单元格的引用。  关于这些函数的说明,在excel的帮助文件里讲解得很清楚,我就不多说了。  这里方法三和方法四并非最优解法,主要是把一些excel中不太常用的功能、命令、函数介绍给大家,给大家开阔视野和思路。    临屏所写,谬误之处难免,还望高手斧正。
  ....叹
  嘿嘿EXCEL强人,楼主能否发个消息给偶留个QQ或是EMAIL?偶以后做报表,碰到不知道的地方可以探讨一下。
  谢绝回帖?
  大家可以回贴讨论嘛  这样才是论坛  至于灌水的回复打乱你本来的次序  我可帮你清理啊    顺及:不用谢,呵呵
  实例二:活动区域求和/平均数  重点内容:查找和引用函数(offset();indirect(),row(),column())  样本下载:/excel/inst2.xls    例题:  ---------------------  发件人: gamsen  收件人: super_   日期:
11:34   主题: 帮我,谢谢  附件列表
(新建 Microsoft Excel 工作表 (2).xls)    我的意图是:在o列后插入新的一列,而后面的公式能把计算范围自动+上去;比如插入P列,则Q列的average(d3:o3)中的o3变成q3;谢谢了  ---------------  附图:
  思考:对于固定区域求和/平均数,用sum()和average()这两个堪称经典的excel函数。这里的问题主要是如何引用不固定区域(在上图中,对于目标单元格Q3来说,区域起始单元格已知为D3,区域高度为1行,主要的任务就是确定区域的宽度)。不用着急解题,下面先介绍几个实用的引用函数:  1) row([reference])函数  row([reference])函数返回引用的行号。当reference为单元格或单元格区域时,返回该单元格或单元格区域左上角单元格所在的行号;当reference省略时,返回目标单元格所在的行号。  如:row(A8)返回A8单元格所在的行号:8; row(B3:C6)返回B3:C6单元格区域左上角单元格B3所在的行号:3; 而如果在C2中输入=row(),则相当于row(C2),返回目标单元格C2所在的行号:3。  2) column([reference])函数  与row()函数类似,column函数返回的是引用单元格所在列的列号。在上图中,如果在Q3单元格中输入=column(),则返回Q列的列号:17。  3) offset(reference,rows,cols,[height],[width])函数  与常见的运算函数不一样,offset()返回的不是数值,而是对一个单元格或单元格区域的引用,即以某参照单元格(reference)为基准,上下方向上平移rows个行(向下为正方向),左右方向上平移cols个列(向右为正方向)后,高度为height行,宽度为width列的单元格区域。当height或width省略时,结果区域与reference区域的宽度或高度一致。如:  offset(A1,2,3)返回的是以A1为基准,向下平移2行(第3行),向右移3列(D列)位置处的单元格D3。  又如:offset(A1,2,3,2,2)返回的是以D2开始,高为2行、宽为2列的单元格区域D3:E4。  同理,offset(D3,-2,0,1,2)返回单元格区域D1:E1。  ***注1:单独使用offset()函数时,如果返回单元格区域内含有多于一个的单元格,会出现#VALUE错误。但这并不影响offset在数组公式中或用作其他函数参数时所起的强大作用。    分析完上面三个函数,今天这道题目的第一种解法已经出来了:  解法一:sum()+offset()+column() ***注2:这里暂不讨论average(),因为还有一个细节问题,到最后再讨论。  思路:在本题中,我们要求的是从D3单元格开始,一直到目标列左侧一列为止的单行单元格区域的和,用column()函数可以求得目标列(Q列)的列号17,再减去ABC三列和目标列共4列,即可得到引用区域的列数,即column()-4=13。  再填到offset()函数中,即可得到引用区域offset($D3,0,0,1,column()-4),这个函数返回的即是D3:P3。  ***注3:这里D3单元格中列标前加上绝对引用符号$是防止插入新列后起始列随关变化,而行号3前不加是为了向下填充时引用的行号随着目标单元格行号变化。  最后,把offset()返回的结果代到sum()函数内部求和,得到最终公式:=sum(offset($D3,0,0,1,column()-4))  之后,把Q3单元格的公式向下填充就可以了。    PS!对解说不详的地方或与本主题有关的讨论可以在本帖中回复中,如有其他问题加我QQ,请不要为了灌水或顶帖而回复,谢谢合作。此帖我会定期用实例顶的,请大家放心,再次感谢诸位支持。鞠躬+敬礼!    稍息片刻,马上进入方法二的解说。
  在介绍解法二之前,照例先介绍所要用到的两个查找和引用函数indirect()和address()。  4) address(row_num,column_num,[abs_num],[a1],[sheet_text])按照给定的行号row_num和列标column_num,返回文本类型的单元格地址。  其中abs_num为返回的引用类型,绝对引用为1或省略不写,绝对行号相对列标为2,相对行号绝对列标为3,相对引用为4。  a1为引用样式,TRUE或非0数字时返回a1引用样式,FALSE或0时返回R1C1引用样式。  如果引用外部工作表的内容,表名应写在sheet_text中。   例如ADDRESS(2,3)返回第二行第三列交点处单元格的绝对引用 ($C$2)  ADDRESS(2,3,2)返回绝对行号,相对列标 (C$2)   ADDRESS(2,3,2,FALSE) 返回R1C1引用样式中的绝对行号,相对列标 (R2C[3])   在本题目中,参照解法一中关于row()/column()函数的说明,目标单元格左侧的单元格可写为address(row(),column()-1)    5)indirect(ref_text,[a1])  excel帮助文件中对此函数的说明是“返回由文本字符串指定的引用。此函数立即对引用进行计算,并显示其内容。”-听起来很唬人,结合实例看一下就明白了。  其中ref_text是一个单元格引用的字符串(如C2单元格的a1样式引用为C2、$C2、C$2或$C$2,R1C1样式引用为R2C3、R[2]C3、R2C[3]或R[2]C[3])  a1为逻辑值,指明ref_text的引用样式。如果ref_text为a1引用样式,a1应为TRUE或可以省略,如果为R1C1引用样式,a1应必须为FALSE。  比如:indirect(&B3&) 或 indirect(&B& & 3),则返回B3单元格中的内容。  又如:如果A1单元格内容为&B3&,则indirect(A1)=indirect(&B3&),同样返回B3单元格内容。  再如:如果A1单元格内容为&3&,则indirect(&B& & A1)=indirect(&B& & 3)=indirect(&B3&),仍然返回B3单元格内容。  indirect在英文中意思是“间接”,从最后两个例子可以看出indirect()函数名称的由来。    现在,可以引出解法二了:  解法二:sum()+address()+indirect()--当然,column()和row()依然是不可少的。  刚才已经说过,目标单元格Q3左侧的单元格P3可表示为address(row(),column()-1),所以单元格区域D3:P3可表示为indirect(&D3& & &:& & address(row(),column()-1)),整修求和公式即为=sum(indirect(&D3& & &:& & address(row(),column()-1)))  单独在Q3单元格中使用此公式是没错的,但向下复制到Q4时,我们求和会发现这样求的是单元格区域D3:P4两行的和,与题目要求就有出入了,原因就出在字符串&D3&在这里是不变的,因此,需要对它做个小改动,让它的行号随目标单元格而改变,即把&D3&变为&D& & row()或ADDRESS(ROW(D3),COLUMN(D3)),这样整个公式就变成:  =sum(indirect(ADDRESS(ROW(D3),COLUMN(D3)) & &:& & address(row(),column()-1))) 或者:  =sum(indirect(&d& & row() & &:& & address(row(),column()-1)))    解法三:  与第二个大同小异,用到两个较生僻的文本函数char(number)和code(text),这里留下点思考的余地,请大家自己查excel帮助文件吧。整个公式为:  =sum(indirect(&d& & row() & &:& & char(column()+63) & row())  顺便解释一下,字母A的ascii码为64,所以第1列的列标应该是char(1+63)=char(64)=A,第n列同理(n&=26)。    这里说明一下***注2,average(range)函数只计算单元格区域内所有数字单元格的平均值,而忽略空白单元格和非数字单元格。如上图,当P3单元格为空白时,如果要忽略空白单元格,只计算D3:P3中所有非空白单元格(即D3:O3)的平均值,可以把上面几种公式中的sum()换成average()求平均值;如果需要把把空白单元格当做0处理的话,需要手动在空白单元格中输入0,或者求平均值公式应该变为D3:P3单元格的和除以单元格的个数,即=sum(offset($D3,0,0,1,column()-4))/(column()-4)    实例2讲完,很明显,解法一是最优解法,简洁明了,但在很多场合下,indirect()和address()函数有着难以替代的作用。    友情提示:对于复杂的公式,编辑过程中难免会出现错误,大家可以用“工具>公式审核>公式求值”菜单项逐步进行跟踪检验。    再一次感谢大家,元宵刚过,给大家拜个晚年,祝晚年快乐^_^
  顶沙发1~~~~~~先收藏起来
  实例三:不用if实现多分支语句  重点内容:查找和引用函数match(),index(),vlookup()/hlookup();文本函数char(),mid()  例题:  ---------------------  『电脑网络』 [应用心得]EXCEL如何实现分支语句?就是类似CASE的语句?    作者:elevenla 提交日期: 13:47:00
  ??EXCEL有没有类似CASE的函数?如果有的话,则句法如何?    :    就是要实现:    若一个记录=1, 则另一个=A     =2 , =B     ……………………     用IF嵌套的话太麻烦了。  ---------------------  查Excel帮助文件,发现excel中并没有直接给出类似于select case的函数,而利用if()函数,公式将如下:  =if(A1=1,&A&,if(A1=2,&B&,if(A1=3,&C&,if(a1=4,&D&,if(.....)))))  这样嵌套的确麻烦,而且由于excel公式本身对嵌套层数的限制,使我们最多能使有7个元素的两集合实现一一对应(excel帮助文件    中“关于函数内部的嵌套函数-嵌套级别限制”中讲到“公式可包含多达七级的嵌套函数”)。  如果我们把1、2、3、4、5、6、7……放到数组A中,把A、B、C、D、E、F、G……放到数组B中,可以发现,只要找出源单元格内容在    数组A中的位置序数,再根据相应的序数到B中提取相应位置的字母就可以了。第一步可以用match()函数实现,第二步可以用index()    函数实现。由此思路,得到解法一:    解法一:match()+index()  照例,我们先对这两个函数做一些讲解:    1) match(lookup_value,lookup_array,match_type)函数  其中lookup_value可以是一个数值、字符串或逻辑值(TRUE或者FALSE)或单元格引用;lookup_array可以是一个数组或excel中一个    连续的单元格区域;match_type是一个数值,指定匹配方式,其中:    如果 match_type 为 1,函数 MATCH 查找小于或等于 lookup_value 的最大数值。Lookup_array     必须按升序排列:...、-2、-1、0、1、2、...、A-Z、FALSE、TRUE。    如果 match_type 为 0,函数 MATCH 查找等于 lookup_value 的第一个数值。Lookup_array 可以按任何顺序排列。    如果 match_type 为 -1,函数 MATCH 查找大于或等于 lookup_value 的最小数值。Lookup_array     必须按降序排列:TRUE、FALSE、Z-A、...、2、1、0、-1、-2、...,等等。    如果省略 match_type,则假设为 1。    这个函数的作用是从数组lookup_array中查找look_value,然后返回数组中与look_value按match_type指定方式相匹配的位置序号。  如:match(&b&,{&a&,&b&,&c&,&d&},0)返回的是字母b在数组a、b、c、d中的位置(2)。  ***注1:excel公式中可以用大括号{}表示一个数组,数组各维(可以理解为excel工作表中的行)之间用半角分号(;)隔开,数组各元素    间(可以理解为excel工作表中同一行中的和单元格)用半角的逗号(,)隔开,如{&apple&,&banana&,&peach&}表示一个含三个元素的字    符串型一维数组,{1,2,3;4,5,6;7,8,9}表示一个含9个元素的数值型三维数组。  又如:match(&abc&,A1:A9,0)返回在A1:A9单元格区域中第一次匹配abc的单元格的行号,如果abc在单元格区域中未出现,则返回错    误#N/A。  再如:match(B1,A1:A9,1)返回的是在A1:A9单元格区域中小于等于B9单元格内容的最大数(最接近且不大于B9的数)。    2) index(array,row_num,column_num)  这个函数的作用是从数组array中提取第row_num行、第column_num列位置的元素。  如:index(A3:a10,5)返回单元格区域A3:A10中第5行的元素(单元格A7)  又如:index(A1:C5,2,3)返回单元格区域A1:C5中第2行、第3列(C列)的元素(单元格C2)  再如:index({&a&,&bc&,&d&,&efg&},2)返回数组{&a&,&bc&,&d&,&efg&}的第二个元素&bc&。    在本题中,如果要根据单元格A1中的整数相应确定B1单元格的字母,可以用公式:  =index({&A&,&B&,&C&,&D&,&E&,&F&,&G&,&H&,&I&},match(A1,{1,2,3,4,5,6,7,8,9},0))  显然,它的简洁性和可扩展性都比利用if嵌套的公式要强很多,且需要更少的运算。但是,这个公式并不是最简单的,因为excel中    本身就带有一个综合这两个函数的查找和引用的函数vlookup()或hlookup()。请看解法二:    解法二:vlookup(lookup_value,table_array,col_index_num,range_lookup)      hlookup(lookup_value,table_array,row_index_num,range_lookup)  这两个函数功能差不多,vlookup函数返回值值的过程有两步,首先它在数组table_array的首列中寻找与lookup_value匹配的一项,    然后返回同一行中第col_index_num列的单元格内容;range_lookup参数是逻辑值,指定是否使用近似匹配,当为TRUE或省略时,使    用近似匹配,即如果找不到精确匹配值,则返回小于 lookup_value 的最大数值,当range_lookup为false时,使用精确匹配。  直观起见,我们先从vlookup在工作表中的应用说起,假设C1:C8单元格的内容分别为1、2、3、4、5、6、7、8,D1:D8单元格的内容    分别为A、B、C、D、E、F、G、H,我们要根据A1单元格中放着1-8之间的任意整数,按照C1:D8单元格区域中数字与字母的对应关系来    确定B1单元格中的字母,可以在B1中使用下面的公式:  =vlookup(A1,C1:D8,2,0)  它表示,在单元格区域C1:D8的第一列(C列)中查找与A1单元格相等的数,然后返回此区域中相同行的第二列(D列)处单元格的值    。当我们改变A1单元格的值为3时,函数首先在C1:C8中查找值等于3的单元格(C3),然后返回同一行中D列单元格的值(C)。  到这里,可以认为本题已经用函数+辅助列的方法解完。但是使用辅助列还是有其弊端的,首先,辅助列与表格内容无关,只是计算的中间步骤,影响版面的美观;其次,辅助列容易被用户不小心修改,这样直接会影响到计算结果;即使考虑上述因素将其隐藏,依然会对公式编写和VBA中调用usedarea(先使用区域)造成混乱。因此,在有可能避免使用辅助列的情况下,应该尽量避免。通常取代辅助列的方法有两种,一种是用定义名称,另一种就是我们上面讨论过的{}形式的数组。这里,单元格区域C1:D8的内容可以为数组{1,&A&;2,&B&;3,&C&;4,&D&;5,&E&;6,&F&;7,&G&;8,&H&}来代替。这样,上面的公式将变为:  =vlookup(A1,{1,&A&;2,&B&;3,&C&;4,&D&;5,&E&;6,&F&;7,&G&;8,&H&},2,0)    hlookup()函数与vlookup()类似,只不过将行和列的角色置换了一下(英语中lookup是查询,这里v是vertical(竖直方向的)的缩写,vlookup()我理解为竖直方向上的查询;同样hlookup是水平方向(horizontal)的查询),这里不说用hlookup的公式了,留做一道思考题吧。    休息一下,马上回来:)
  哭,我是在记事本中编辑的,没想到粘过来多了这么多断行,请版主帮忙排一下版,把所有的“(没有句号结尾的)换行+空行”去掉,感激涕零,  另外拜托版主把标题中的“谢绝回帖”去掉吧,每次来电脑版这帖都被埋得很深,俺面子上也感到无光-_-!
  下面这两种解法是专门针对本问题的特殊性设计的,与多分支判断无关,普适性不如前面两种解法。  解法三:mid(text,start_num,num_chars)函数  相对于上面那些查找和引用函数来说,字符串函数就相对容易理解了。mid()函数返回文本字符串text中从start_num开始的num_chars个字符。  如mid(“abcdefg”,3,2)返回字符串”abcdefg”中从第三个字符(c)开始后面的两个字符,即字符串”cd”  应用到本题中,公式即为:  =mid(“ABCDEFG”,A1,1)    解法四:char(number)函数  Char()函数返回的是ASCII码等于参数number的字符,如字母A的ASCII码为65,则char(65)返回的就是字符A;同样char(66)返回字母B,char(67)返回字母C………  按照这样的规律,B1单元格公式为:  =char(A1+64)    从对本例的讨论可以看到,通常一个问题的解法不会局限于一两种,我们可以通过此类问题的共性、也可以通过单个问题的个性来解决,具体在实际应用中采用哪一种,我个人建议主要考虑以下几个方面:  1)公式的正确性。这个我想不用多解释了。  2)公式的普适性。这个主要是复制到其他单元格的时候需要考虑的。如正确选择绝对引用、相对引用或混合引用。  3) 公式的健壮性。主要是避免受人为因素干扰或疏忽导致公式不能得出正确结果,如使用辅助列的公式抗干扰性就要差一些,对于辅助列的任何修改或插入/删除列时导致辅助列位置移动都会影响最终结果的正确性。因此,在允许的情况下,要尽量避免使用辅助列,即使不得已而使用时,也要尽量通过隐藏或锁定等方式避免干扰。  4) 公式的兼容性。有一些excel函数是分析工具库或其他加载宏或自定义宏中的,这些函数在移植到其他不同设置的电脑上时、或本机excel安全性或加载宏等设置改变时都可能产生错误或不能得出正确结果。因此,在能够用excel内置函数解决的情况下,尽量避免使用这类函数。  5) 公式的可读性。与他人协作或共同使用文档时要注意。主要是考虑公式长度、嵌套层数、函数选择等,尽量使用常见函数,减小公式长度和层数。想当年俺在某坛子上卖弄生僻函数构成的超长公式,同一问题被另一高手用简单公式解决掉,那个汗呀……  呵呵,不多说了(刹车声~~~),明天见!
  我悄悄回一个帖
  这么强的贴还是得留名!
  小鱼接受回复了:)     我再提个问题:  怎样查找一个文本型字符串里的特定位置的字符?    EXP:  有一个单元格的内容是R123456bcd,长度永远固定是十位。现在我需要判定第2、3、4个字符是啥,然后返回相应值。比如这个例子里就是“123”,则比如返回“猪头三”。:)   至于“判断…………则返回”学生已经明白了。那么,如何去“定位”那第2、3、4个字符呢?
  to: elevenla  定位第2、3、4个字符用mid(A1,2,3),关于mid函数,本帖的上面有说明
  最近一直在学习小鱼同志的这个帖子,获益匪浅。再次表示感谢!  我因为工作常常中接触EXCEL,有没有专门系统的学习过,有很多问题一知半解,可能会常常麻烦楼主:)     小鱼,能不能推荐一些全面系统的文章,比如函数大全什么的?这样菜鸟们就可以先试着自己解决,不行的话再来麻烦您?    比如我现在又有个问题:怎样通过函数来改变一个单元格的格式?  比如“若A1=1,则,B1变红或者变成日期格式什么的…………”    再次拜下楼主!!
  楼主很有心哩~~~  若A1=1,则,B1变红 ,用条件格式,当然用VBA也是可以的
  好贴啊
  很少用,不太懂
  不错哦。excel
  近期将有新内容,敬请关注,谢谢支持。。。  前一阵子找不到好的内容,加上心情有些糟糕,所以有所懈怠,希望大家海涵  另外请版主大人去掉帖子标题中的“谢绝回复”字样,希望大家积极反馈,注意不要纯粹灌水,可以回帖问具体问题,或告诉我您想了解关于excel的哪方面的内容(如果需要的人数多,我会考虑花点时间针对某个内容弄个专题),尽管时间精力有限,我会尽量满足您的要求。
<span class="count" title="
请遵守言论规则,不得违反国家法律法规回复(Ctrl+Enter)

我要回帖

更多关于 sum indirect 的文章

 

随机推荐