以文本方式查看主题

-  易表在线答疑  (http://egrid2000.com/dvbbs/index.asp)
--  用户社区  (http://egrid2000.com/dvbbs/list.asp?boardid=2)
----  能否这样查找筛选  (http://egrid2000.com/dvbbs/dispbbs.asp?boardid=2&id=4602)

--  作者:老有所乐
--  发布时间:2006/10/28 16:57:00
--  能否这样查找筛选
要求表1“工资”列的数据,通过公式从表2对应“职务”、“任职年限”、“工作年限”筛选并填入。该公式如何设置?请老师、高手们指点。谢谢!egd文件下载
--  作者:wjq1072
--  发布时间:2006/10/28 19:42:00
--  
用这个函数试试?
FindText()
在指定的表、指定的列中查找指定内容,并返回符合条件的行中指定列的内容。
FindText(Grid,Col,CompareCol,CompareMode,CompareValue,......,Position)

Grid        在表中进行查找,可以用表名表示,也可以用位置表示。
Col         返回该列的内容,可以用列名称表示,也可以用位置表示。
CompareCol  进行比较的列,可以用列名称表示,也可以用位置表示。CompareMode  比较方式,包括=、>、<、>=、<=、<>、Like、Instr共8种比较方式。
CompareValue 比较值
Position     这个参数决定返回第几个符合条件的行的数据,如果省略,则返回第一个符合条件的行,如果设为-1,则返回最后一个符合条件的行。

例子:
FindText("订单","数量","客户","=","CS01")
返回订单表中CS01客户的第一个订单的订购数量。

FindText("订单","日期","客户","=","CS01",-1)
返回订单表中客户CS01最后一次下订单的日期。

FindText("订单","数量","客户","=","CS01","产品","=","PD01")
返回订单表中CS01客户第一次订购产品PD01的数量 。

FindText("订单","数量","客户","=","CS01","产品","=","PD01",2)
返回订单表中CS01客户第二次订购产品PD01的数量 。


--  作者:老有所乐
--  发布时间:2006/10/28 22:35:00
--  
再顶一下
--  作者:smileboy
--  发布时间:2006/10/28 23:14:00
--  
egd文件下载
--  作者:兰花草
--  发布时间:2006/10/29 7:20:00
--  
楼上smileboy版主的文件替楼主规范了一下格式,像工作年限、任职年限这种数字概念的列尽量不要含字符。但是表1工资列刷新公式中的工作年限直接对应表2的工作年限数值及列名,公式是简单了,不过局限性大。我下面的文件不改变原年限数字与字符混用的形式,不增加辅助列,公式中不涉及表2的工作年限数值及列名,优点是适用性、扩展性好,缺点是公式复杂,可读性差(这也是目前易表的缺点),我不作解释的话,恐怕大多数人不易看懂。若楼主暂时不能理解其中的公式,建议还是用smileboy版主的文件,本文件仅作换一种思路的参考。egd文件下载
公式提示:用ListCols取得工作年限列名列表,用Substitute去字符和组成判断工作年限的逻辑表达式集合,用Eval求出一组逻辑值,然后用Find得到工作年限列位移,填入FindText的Col。同样,用ListFor取得任职年限列表,用Substitute去字符和组成判断任职年限的逻辑表达式集合,用Eval求出一组逻辑值,然后用Find得到任职年限行位移,填入FindText的Position。比较列就是职务了。
--  作者:老有所乐
--  发布时间:2006/10/29 15:12:00
--  
谢谢版主!谢谢兰花草先生!先生真是诲人不倦,不但给我做出公式,还对公式的每个转折点进行解释,我非常感激,再次表示衷心感谢!
我来认真学习消化一下。