以文本方式查看主题

-  易表在线答疑  (http://egrid2000.com/dvbbs/index.asp)
--  用户社区  (http://egrid2000.com/dvbbs/list.asp?boardid=2)
----  [求助]公式  (http://egrid2000.com/dvbbs/dispbbs.asp?boardid=2&id=26827)

--  作者:iyplx2425
--  发布时间:2013/12/26 11:46:00
--  [求助]公式

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:编号录入.egd

文件中,在“01月份”表的[产品编号_1]至[产品编号_80]写入刷新公式。由于列太多,想用一个统一的公式一次性写入,但执行起来不对,请老师看看问题出在哪里。
刷新公式的目的:当某个批次中某道工序的产品编号在“上年结转”表中已经勾选过了,在“01月份”表中对应的编号就不能再勾选。

谢谢。


--  作者:iyplx2425
--  发布时间:2013/12/26 11:49:00
--  
另外,转换函数中被转换的字符还有没有其他办法精简?
--  作者:dancedy
--  发布时间:2013/12/26 12:27:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:222.egd


--  作者:iyplx2425
--  发布时间:2013/12/27 8:45:00
--  

谢谢3楼老师,但如果在“上年结转”表中[批次号]、[工序名称]相同的行不止一行时,这个公式还是有问题的,FindText()函数只能返回“上年结转”表中第一次出现的行中的数据。好像用CountFor()函数能解决这个问题: 

IF(CountFor(GridName,"批次号", "=" ,[批次号],"工序名称", "=" ,[工序名称],"产品编号_4", "=" ,[产品编号_4]) > 0,0,[产品编号_4])。因为对colname()函数用法不熟悉,比如colname(2)括号中的2表示什么意思。请老师按这个公式帮我写下各列通用的公式。谢谢。

 


--  作者:wjq1072
--  发布时间:2013/12/27 9:32:00
--  

产品编号_列通用公式:

Eval("If(FindText(""上年结转"",ColName,""批次号"", ""="" ,[批次号],""工序名称"", ""="" ,[工序名称])=-1,0,["+ColName+"])")


--  作者:iyplx2425
--  发布时间:2013/12/27 9:49:00
--  
 

Eval("IF(CountFor(""上年结转"",""批次号"", ""="" ,[批次号],""工序名称"", ""="" ,[工序名称] ,""产品编号_" + colname(2) + """, ""="",[产品编号_" + colname(2) + "]) = - 1,0,[产品编号_" + colname(2) + "])")

依样画瓢,不知对不对。


--  作者:wjq1072
--  发布时间:2013/12/27 10:08:00
--  

 

两表的产品编号_1-----完全相同(用ColName就可以),为什么要使用产品编号_" + colname(2) ?不是“画蛇添足”吗?


--  作者:iyplx2425
--  发布时间:2013/12/27 10:42:00
--  

哦。

 


--  作者:iyplx2425
--  发布时间:2013/12/27 10:49:00
--  
请问老师,条件“上年结转”中的编号=本表中的编号,通用公式怎么表述?
--  作者:iyplx2425
--  发布时间:2013/12/27 10:54:00
--  
 

IF(CountFor(GridName,"批次号", "=" ,[批次号],"工序名称", "=" ,[工序名称], ColName, "=" , ColName) > 0,0, ColName)

能这样表达吗?用到Eval()中又该怎样用?

谢谢