以文本方式查看主题

-  易表在线答疑  (http://egrid2000.com/dvbbs/index.asp)
--  用户社区  (http://egrid2000.com/dvbbs/list.asp?boardid=2)
----  [求助]怎样将科目设置表中损益类中期间费用科目的编码相同部分提取。  (http://egrid2000.com/dvbbs/dispbbs.asp?boardid=2&id=19214)

--  作者:还不错
--  发布时间:2010/3/31 14:59:00
--  [求助]怎样将科目设置表中损益类中期间费用科目的编码相同部分提取。
这是原公式:LocateFor("科目类别","=","损益","科目名称","Instr","费用") And SetCellText("系统说明",[系统说明!row],"期间费用",mid([科目编码],0,3))。这样的公式有一个缺点,即当科目编码发生变化时,不能得到正确的结果。请高手帮忙!egd文件下载
--  作者:smileboy
--  发布时间:2010/3/31 16:36:00
--  
没看懂,详细说明一下
--  作者:wjq1072
--  发布时间:2010/3/31 16:48:00
--  
SetCellText("系统说明",[系统说明!row],"期间费用",mid([科目编码],0,3))
文件中没有“系统说明”表啊?
--  作者:还不错
--  发布时间:2010/3/31 17:34:00
--  
上传的文件我将“系统说明”改成“系统设置”了。
--  作者:还不错
--  发布时间:2010/3/31 17:36:00
--  
举例:科目编码 6602   管理费用   6603 销售费用  6601 销售费用
期间费用科目编码前缀=“660”,因为前三位编码相同,而第四位不同。

-=-=-=- 以下内容由 还不错2010年03月31日 05:37pm 时添加 -=-=-=-
如果科目编码改成:602、601、603
前面的公式就得不到正确的结果了。

-=-=-=- 以下内容由 还不错2010年03月31日 05:50pm 时添加 -=-=-=-
上面就应该提取成:60
--  作者:wjq1072
--  发布时间:2010/3/31 18:40:00
--  
egd文件下载
--  作者:还不错
--  发布时间:2010/4/1 8:21:00
--  

当然有问题。

-=-=-=- 以下内容由 还不错2010年04月01日 08:23am 时添加 -=-=-=-
如按上图科目编码,期间费用前缀应为60,是前两位,而不前三位。因为第三科目编码不同。

-=-=-=- 以下内容由 还不错2010年04月01日 08:25am 时添加 -=-=-=-
我想法是:怎么自动判断前位相同,应取前几位。而不是固定取前3位或前2位。
--  作者:wjq1072
--  发布时间:2010/4/1 8:58:00
--  
egd文件下载
--  作者:还不错
--  发布时间:2010/4/1 9:11:00
--  
首先谢谢总版主,虽然能够达到目前的要求,但没有考虑到:如果科目编码长度变为5、6位怎么办?是不是还要修改公式?
--  作者:还不错
--  发布时间:2010/4/1 9:24:00
--  
这是我的公式:
LocateFor("科目类别","=","损益","科目名称","Instr","费用") And SetCellText("系统设置",[系统设置!row],"期间费用",mid([科目编码],0,len([科目编码])-1)) And OpenWindow(1)
现在存在一个问题:len([科目编码])-1公式中怎样用公式求出这个1
即:符合"科目类别","=","损益","科目名称","Instr","费用"的记录数。再用Len()函数计算记录数的长度。用CountFor()公式系统出现错误。