易表在线答疑技术与交流用户社区 → 不规则数据的拆分


  共有15665人关注过本帖树形打印复制链接

主题:不规则数据的拆分

帅哥哟,离线,有人找我吗?
紫莲花
  31楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:207 积分:0 威望:0 精华:0 注册:2007/7/10 16:20:00
  发帖心情 Post By:2007/9/7 22:12:00 [只看该作者]

lxl 老师,还得麻烦你解释一下.

if([%判断%],"",left([yhzl!1交接箱出线],search("p",[yhzl!1交接箱出线])))

这里if([%判断%] 后面,没有比较条件.是不是指

[%判断%] 这个变量成立,= true,

如果[%判断%] 这个变量不成立,=flase .?


 回到顶部
帅哥哟,离线,有人找我吗?
lxl
  32楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:蜘蛛侠 帖子:1191 积分:-50 威望:0 精华:0 注册:2007/5/25 12:56:00
  发帖心情 Post By:2007/9/7 22:21:00 [只看该作者]


[%判断%] 是自定义的 表达式变量  
这个表达式的执行结果 就是 True 或者Flase



-=-=-=- 以下内容由 lxl2007年09月07日 10:25pm 时添加 -=-=-=-
我看了 很多很多人都喜欢这样用
if(isdate([时间])=true,true,msgbox("请输入时间",1))
这里isdate([时间])=true完全没有必要
if(isdate([时间]),true,msgbox("请输入时间",1))  就行了

Isnumber Istext IsEmpty IsError 都是这样


 回到顶部
帅哥哟,离线,有人找我吗?
紫莲花
  33楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:207 积分:0 威望:0 精华:0 注册:2007/7/10 16:20:00
  发帖心情 Post By:2007/9/7 23:01:00 [只看该作者]

嗯.我也见过一次CZY 版主用过这样的公式.但看过一次没记住 .

再看到你的公式,想了一会儿.想起来那次看到的了.

加深印象中.......

谢谢你的指导.


 回到顶部
帅哥哟,离线,有人找我吗?
gdlgh
  34楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:职业侠客 帖子:449 积分:-10 威望:0 精华:0 注册:2006/8/27 12:47:00
  发帖心情 Post By:2007/9/7 23:43:00 [只看该作者]

呵。我也讲下我的思路,看下是否可行!

1项.(在yhzl表中)用Substitute来拆分要拆分的内容,使分解出来的内容变成AddRow("用户信息情","用到的列","分解出来的内容")函数的规则内容!这样就可以把要拆分的内容分解了!
2项.一个判断一条拆分公式eval(a1项)、eval(b1项)、eval(c1项)。。。!
3项.evalfor("yhzl",cols,"if(条件1,eval(a1项),if(条件2,eval(b1项),if(........")

相信动态分解增行赋值比用刷新公式来得快,不竟刷新公式是有多少行就计算多少行,有多少列就计算多少列,也就是说要计算n列*n行,而evalfor只是计算n行而已,同时evalfor的计算效率也很高!

 以上只是本人的解法,不对请指正!


 回到顶部
帅哥哟,离线,有人找我吗?
紫莲花
  35楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:207 积分:0 威望:0 精华:0 注册:2007/7/10 16:20:00
  发帖心情 Post By:2007/9/8 0:12:00 [只看该作者]

看楼上朋友的思路,感觉可行.但本人水平太低,不知道如何实现.

可否帮我写出具体实现的公式.不胜感激!


 回到顶部
帅哥哟,离线,有人找我吗?
gdlgh
  36楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:职业侠客 帖子:449 积分:-10 威望:0 精华:0 注册:2006/8/27 12:47:00
  发帖心情 Post By:2007/9/9 15:00:00 [只看该作者]

试试看!

egd文件下载

本机拆分耗时25秒!

-=-=-=- 以下内容由 gdlgh2007年09月09日 03:01pm 时添加 -=-=-=-
1330条记录


 回到顶部
帅哥哟,离线,有人找我吗?
紫莲花
  37楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:207 积分:0 威望:0 精华:0 注册:2007/7/10 16:20:00
  发帖心情 Post By:2007/9/9 18:53:00 [只看该作者]

晕倒.看了半天.变量公式 [%值%] 没看懂.

eval("Substitute(Substitute("""+eval("Split(""0False[%空%]0False0True[%0%]0True2True2False[%2%]2True2False1True[%1yes%]1True1False[%1no%]1False"","""+if([1交接箱入线]="","0False",text(len([1交接箱入线])-len(Substitute([1交接箱入线],"p","")))+text(Split([1交接箱入线],"p",1) = Split([1交接箱出线],"p",1)))+""",2)")+""",""2False"",""""),""2True"","""")")

尤其这一部分   0False[%空%]0False0True[%0%]0True2True2False[%2%]2True2False1True[%1yes%]1True1False[%1no%]1False  


别的公式,看上去不太复杂,应该看得明白。就这个,一下子就蒙了。

你做的这个,运行起来,速度是够快的。我再去增加数据测试一下。



-=-=-=- 以下内容由 紫莲花2007年09月09日 07:01pm 时添加 -=-=-=-
25000 行,一次运行 。一共用时168秒。

这个公式非常好用。万分感谢!


 回到顶部
帅哥哟,离线,有人找我吗?
gdlgh
  38楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:职业侠客 帖子:449 积分:-10 威望:0 精华:0 注册:2006/8/27 12:47:00
  发帖心情 Post By:2007/9/10 13:06:00 [只看该作者]

呵。不要晕呀!你才开始接触eval函数,看这些公式难免的。
其实这公式是替代if函数的作用,是为提高速度而写的!直接用if来写的话,公式会精简好多,但速度不是很理想!
if函数的缺点就是:在多条件时需一个一个计算判断直至判断为真才执行,这就需要时间了。
而用字符函数可直接找到为真的公式,效率就高了。不过写公式就麻烦些!

若不求速度的话,最好还是用if来编,简单明了!

这一部分   0False[%空%]0False0True[%0%]0True2True2False[%2%]2True2False1True[%1yes%]1True1False[%1no%]1False  
  是配合Split函数的第2个参数而设的,这样就可以区分判断条件了,可以实现if函数的判断作用!(效果一样,但速度快好多!)

建议多接触字符函数,它是拼写公式的基础,一定要学会、精通运用!!


 回到顶部
帅哥哟,离线,有人找我吗?
紫莲花
  39楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:207 积分:0 威望:0 精华:0 注册:2007/7/10 16:20:00
  发帖心情 Post By:2007/9/10 14:43:00 [只看该作者]

谢谢 gdlgh 老师的指导。我得抓紧时间把你这个公式看明白。不只这两列数据拆分呢。还有几列。拆分规则应该都不相同的,因为这一个我还没看明白,就先没考虑去拆分别的。

做不出来的时候,还得麻烦你多多帮忙了!

顺祝 gdlgh 老师节日愉快!


 回到顶部
总数 39 上一页 1 2 3 4