易表在线答疑技术与交流用户社区 → 如何检测某列内容没有重复数据?


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

主题:如何检测某列内容没有重复数据?

帅哥哟,离线,有人找我吗?
Czy
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13147 积分:-89 威望:0 精华:0 注册:2006/8/11 11:14:00
  发帖心情 Post By:2008/2/15 12:40:00 [显示全部帖子]

第一列中每行的最多字符数能达到多少?

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


加好友 发短信
等级:超级版主 帖子:13147 积分:-89 威望:0 精华:0 注册:2006/8/11 11:14:00
  发帖心情 Post By:2008/2/15 13:18:00 [显示全部帖子]

试试这个公式行不行?

Eval("If(Len([第一列])-Len(Substitute([第一列],"""+Substitute(Substitute(Substitute(Format([第一列],Rept("|@",Len([第一列]))),"|","",1)," |",""),"|",""","""")) > 1 Or Len([第一列])-Len(Substitute([第一列],""")+""","""")) > 1,"""",""*"")")

如果出现函数嵌套,可改为。
表达式变量公式:
Substitute(Substitute(Format([第一列],Rept("|@",Len([第一列]))),"|","",1)," |","")

原公式改成:

Eval("If(Len([第一列])-Len(Substitute([第一列],"""+Substitute([%表达式变量%]," |",""),"|",""","""")) > 1 Or Len([第一列])-Len(Substitute([第一列],""")+""","""")) > 1,"""",""*"")")


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


加好友 发短信
等级:超级版主 帖子:13147 积分:-89 威望:0 精华:0 注册:2006/8/11 11:14:00
  发帖心情 Post By:2008/2/15 14:03:00 [显示全部帖子]

13楼的公式还存在问题,公式得重写。

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


加好友 发短信
等级:超级版主 帖子:13147 积分:-89 威望:0 精华:0 注册:2006/8/11 11:14:00
  发帖心情 Post By:2008/2/15 14:34:00 [显示全部帖子]

不好意思,今天感冒发烧,昏沉沉的公式不知做的对不对。

egd文件下载


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


加好友 发短信
等级:超级版主 帖子:13147 积分:-89 威望:0 精华:0 注册:2006/8/11 11:14:00
  发帖心情 Post By:2008/2/15 14:43:00 [显示全部帖子]

再改一下,表达式变量公式:
Substitute(Substitute(format(Lower([第一列]),Rept("|@",Len([第一列]))),"|","",1)," |","")

刷新公式:
eval("If(Len([第一列])-Len(Substitute(Lower([第一列]),"""+Substitute(Substitute(Eval("Substitute(""|@|"",""|"","""+Substitute([%表达式变量%],"|",""")+""|""+Substitute(""|@|"",""|"",""")+""")"),"@",""",""""))>Len("""),"|",""") or Len([第一列])-Len(Substitute(Lower([第一列]),""")+"""),"""",""*"")")

做出完全符合楼主要求有难度,因为全角半角字符不易区分,抛砖引玉,希望能看到更好的解决办法。


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


加好友 发短信
等级:超级版主 帖子:13147 积分:-89 威望:0 精华:0 注册:2006/8/11 11:14:00
  发帖心情 Post By:2008/2/15 17:23:00 [显示全部帖子]

承认,想到楼上的思路并不难,要写出公式是难上难,完成你的思路比18楼要难得多。

当然路并非一条,你要是仔细想想还有多条路可走。


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


加好友 发短信
等级:超级版主 帖子:13147 积分:-89 威望:0 精华:0 注册:2006/8/11 11:14:00
  发帖心情 Post By:2008/2/17 15:01:00 [显示全部帖子]

下面引用由fsrsj2008/02/17 11:16am 发表的内容:
多谢wjq1072和czy总版主。此题虽无普遍意义,但对数据库数据的统计处理还是有用的。以上只是单个字符,如果是不定长的数据可能就更复杂了。所以期盼新易表早日推出,让我们能通过多行编程轻松解决这个问题。

教你个思路,利用操作公式将当前行数据写入辅助表,一行一个字母或者一个汉字,用Len、ListFor对辅助表的数据进行计算,用Len计算当前行数据,最后两者进行比较,相等无重复,不相等为重复,这样不管你和每行字符有多少都不会有问题。


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


加好友 发短信
等级:超级版主 帖子:13147 积分:-89 威望:0 精华:0 注册:2006/8/11 11:14:00
  发帖心情 Post By:2008/2/19 17:03:00 [显示全部帖子]

如果是以空格进行区分,楼主的问题越发变得简单了,处理速度也会越快。

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


加好友 发短信
等级:超级版主 帖子:13147 积分:-89 威望:0 精华:0 注册:2006/8/11 11:14:00
  发帖心情 Post By:2008/6/29 22:39:00 [显示全部帖子]

浮点问题。
楼主文件可以在汇总后用evalfor处理一下,如:

Subtotal(...) and evalfor(grid,"其他","Round([其他],2)","学校","Instr","计")


 回到顶部