ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1831|回复: 16

[求助] 感谢figfig,但不太准确:能解释一下代码及思路吗?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2010-6-28 08:16 | 显示全部楼层 |阅读模式
请热心高手帮我给孩子做个英语单词分类程序。
标注相同解释的单词(只要单元格中有连续的两个字相同的词就用相同数字表示)

[ 本帖最后由 EJR 于 2010-6-29 06:59 编辑 ]

book1.rar

105.76 KB, 下载次数: 34

TA的精华主题

TA的得分主题

发表于 2010-6-28 09:05 | 显示全部楼层
不明确何为“单元格中有连续的两个字相同的词”

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-6-28 10:59 | 显示全部楼层
谢谢楼上朋友,我用红色标记了。
比如:F7中有:adj 英明的;明智的;聪明的,F16中有:adj.欢快的, 聪明的, 伶俐的。
都有共同的“聪明”二字,就视为相同,就在G列中标注相同的数字:2。
但如果不连续例如另一单元格中的:失聪,光明。则不能视为相同,不能标注2。

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-6-28 22:55 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2010-6-28 23:50 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Sub kkk()

'须安装ACTIVERUBY.才能运行
'下载地址  http://www.artonx.org/data/asr/ActiveRuby.msi
Set x = CreateObject("scriptcontrol")
x.Language = "rubyscript"
y = x.eval("def aa aa;@aa=aa;1;end")
x.Run "aa", Sheet12.UsedRange.Value
y = x.eval("$KCODE='n';h1,h2={},{};arr=@aa[2..-1].map{|x| x[5]};brr=arr.join('-').gsub(/\w+|\s+|的|&|(.*?)|《.*?》|\./,'');crr=brr.split(/\-|,|;|,/);crr.each{|x|  if h1.key?(x);h2[x]=h2.keys.count;end;h1[x]=0;};drr=[];arr.each{|x| ll='';h2.each_pair{|k,v| ll=v if x.include?(k)};drr<<ll;};drr;")
Sheet12.[g3:g8888] = Empty
Sheet12.[g3].Resize(UBound(y) + 1) = Application.Transpose(y)

End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-6-29 06:23 | 显示全部楼层
高!!!谢谢了!

不太准确,请看附件。能完美一下吗?

恳请:
能解释一下各重要代码吗?
Sheet12是什么啊?

[ 本帖最后由 EJR 于 2010-6-29 07:07 编辑 ]

不太准确.rar

116.5 KB, 下载次数: 8

TA的精华主题

TA的得分主题

发表于 2010-6-29 08:52 | 显示全部楼层

  1. Sub GetTag()
  2.     Dim Oj As Object, Str$, tag%
  3.     Dim Arr, Ary, k%, i%, m%

  4.     [G3:G65536].ClearContents
  5.     Arr = Range("F3", [F65536].End(3)(1, 2))
  6.     Str = Join(Application.Transpose(Application.Index(Arr, , 1)))
  7.     Set Oj = CreateObject("ScriptControl"): Oj.Language = "JScript"
  8.     Oj.eval "function getstr(str){return str.replace(/的/g,'').match(/[一-龥]+/g,'')}"

  9.     For k = 1 To UBound(Arr)
  10.         If Len(Arr(k, 2)) Then GoTo 1
  11.         Ary = Split(Oj.codeobject.getstr(Arr(k, 1)), ",")
  12.         For i = 0 To UBound(Ary)
  13.             If InStr(Replace(Str, Arr(k, 1), ""), Ary(i)) Then tag = tag + 1
  14.             For m = k To UBound(Arr)
  15.                 If InStr(Arr(m, 1), Ary(i)) And m <> k Then Arr(m, 2) = tag: Arr(k, 2) = tag
  16.             Next
  17.         Next
  18. 1
  19.     Next

  20.     [G3].Resize(k - 1) = Application.Index(Arr, , 2)
  21. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2010-6-29 08:53 | 显示全部楼层
单词标注.rar (110.81 KB, 下载次数: 18)

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-6-29 17:26 | 显示全部楼层
感谢一念大师赐教!仍然不太准确,不知是哪里的问题?

仍然不太准确.rar

123.32 KB, 下载次数: 12

TA的精华主题

TA的得分主题

发表于 2010-6-29 21:01 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

增加新功能,列出多对多匹配

Sub kkk()

'须安装ACTIVERUBY.才能运行
'下载地址  http://www.artonx.org/data/asr/ActiveRuby.msi
Set x = CreateObject("scriptcontrol")
x.Language = "rubyscript"
y = x.eval("def aa aa;@aa=aa;1;end")
x.Run "aa", Sheet12.UsedRange.Value
y = x.eval("$KCODE='N';h1,h2={},{};arr=@aa[2..-1].map{|x| x[5]};brr=arr.join('-').gsub(/\w+|\s+|的|&|(.*?)|《.*?》|\./,'');crr=brr.split(/\-|,|;|,/);crr.each{|x|  if h1.key?(x) && x.size>2;h2[x]=h2.keys.count+1;end;h1[x]=0 if x.size>2;};drr=[];arr.each{|x| ll='';h2.each_pair{|k,v|  if x.include?(k);ll=v.to_s+' '+ll;end;};drr<<ll;};drr;")


Sheet12.[g3:g8888] = Empty
Sheet12.[g3].Resize(UBound(y) + 1) = Application.Transpose(y)

End Sub
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-6-26 16:53 , Processed in 0.050051 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表