excel制作自动计算的工程量计算稿
(添加备注后也能正常计算)
一、如图所示的制作如下图所示的工程量计算表,在D2单元格显示C2单元格的结果
二、点击D为什么vlookup显示的是公式2单元格,点击菜单栏公式-名称管理器
三、新建如下图所示的名称(个人喜好,随便起,我一般都是定义为计算结果,)引用位置输入如下公式
=EVALUATE(SUBSTITUTE(SUBSTITUTE(Sheet1!$C2,"【","*ISTEXT(""【"),"】","】"")"))
注意:3.1、引用位置用的Sheet1!$C2为计算的单元格的位置,因为计算过程中C列是不变的,变化的是计算的行数,所以在列前面加绝对引用的符号$;如果计算指定单元格的位置,可以用配合使用vlookup、match等函数;3.2、中括号【是中文状态输入的,符合国人汉字备注习惯,如果不喜欢可以都替换成英文状态下的。
四、在D2单元格输入=计算结果,回车即可正常显示。
五、如果想理解公式的解析可以继续学习
5.1、关于excel制作的带备注工程量计算稿的个人理解
EVALUATE(SUBSTITUTE(SUBSTITUTE(Sheet1!$C2,"【","*ISTEXT(""【"),"】","】"")")),""
代表:SUBSTITUTE(签证!$D4,"【","*ISTEXT(""【")
解析把签证D4中的"【"替换成*替换成*ISTEXT("
SUBSTITUTE(,"】","】"")")
把上一个结果中的变成】")
5.2、论坛大神的解析
例:=EVALUATE(SUBSTITUTE(SUBSTITUTE(Sheet1!E5,"[","*ISTEXT(""["),"]","]"")"))
5.2.1、大神一的解析
1、SUBSTITUTE(Sheet1!E5,"[","*ISTEXT(""[")
把E5中的[,替换成*ISTEXT("[,结果是:(1+1.6)*1.1*ISTEXT("[墙长+墙长*墙高]+(1+1.6)*0.15*ISTEXT("[墙长+墙长*墙梁搭接]。
2、SUBSTITUTE(SUBSTITUTE(Sheet1!E5,"[","*ISTEXT(""["),"]","]"")")
把上一步结果中的],替换成]"),结果是:(1+1.6)*1.1*ISTEXT("[墙长+墙长*墙高]")+(1+1.6)*0.15*ISTEXT("[墙长+墙长*墙梁搭接]")。Istext文本判断后相当于:(1+1.6)*1.1*1+(1+1.6)*0.15*1。
3、EVALUATE(SUBSTITUTE(SUBSTITUTE(Sheet1!E5,"[","*ISTEXT(""["),"]","]"")")
即:=(1+1.6)*1.1*1+(1+1.6)*0.15*1,结果是:3.25。
5.2.2、大神二的解析
六、疑问解析
在学习过程中也曾对(为什么"*ISTEXT(""[" 和"]"")"  都要用到两个引号”,  如””)百思不得其解,后续在论坛上看到的两个回复用以解答吧
6.1、回复一:
6.2回复二:图文并茂
两者结合吧!
七、其它应用
1、对于出现如图D3错误的解决方法使用
=IFERROR(EVALUATE(SUBSTITUTE(SUBSTITUTE(Sheet1!$C3,"【","*ISTEXT(""【"),"】","】"")")),"")
八、根据本工程量计算表的扩展
8.1、例如想在下图结算表中备注栏添加备案表中的签证的编号
可采用在“备案表编号9”单元格输入以下
=INDEX(备案表!$A$4:$A$47,MATCH($B21,备案表!$B$4:$B$50,0))
Index函数的意思是返回制定位置的值    match函数定位
解析:1、MATCH($B21,备案表!$B$4:$B$50,0)
match函数查“变电所院墙维修”【单元格编号$B21】在备案表!$B$4:$B$50的行号,返回结果为9
2、INDEX(备案表!$A$4:$A$47,9,0)
在“备案表A4到A47”列返回第9行的数值
3、这时候会在该单元格显示“9”,选择设置单元格格式—数字----自定义格式在“G/通用格式”前加入“备案表序号”即可,样式为“备案表序号G/通用格式”

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。