ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: jiuyuedefeng

[求助] 如何在一篇英文中把含有某个单词的句子都列出来?

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-10-12 16:55 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
另外,原文中有些只是短语,不是句子,行末是没有句号等符号的,如何批量删除?

TA的精华主题

TA的得分主题

发表于 2010-10-12 18:08 | 显示全部楼层
全选——复制,EXCEL中选中A2——粘贴——(A1随便打入标题)——数据,筛选,自动筛选——选“包含”,number,确定。
选中结果——复制——WORD中粘贴。

TA的精华主题

TA的得分主题

发表于 2010-10-12 21:01 | 显示全部楼层
原帖由 jiuyuedefeng 于 2010-10-12 16:49 发表
谢谢sylun老大的解答。烦请老大把问题二的代码再修改一下,比如单词表里有number,……,那么在原文中只要第一次找到含有number的例句,把这个例句摘出来后,就直接搜索下一个单词。也就是每个单词一个例句。应该是改 ...

可试试:
  1. Sub test3()
  2.     Dim fs, f
  3.     Dim Dlg As FileDialog, findtext() As String
  4.     Dim i As Integer, c As Long, info As String
  5.    
  6.     Set fs = CreateObject("Scripting.FileSystemObject")
  7.     Set Dlg = Application.FileDialog(msoFileDialogFilePicker)
  8.     With Dlg
  9.         .Title = "请指定单词列表文本文件"
  10.         .InitialFileName = ActiveDocument.Path
  11.         .AllowMultiSelect = False
  12.         If .Show <> -1 Then Exit Sub
  13.         Set f = fs.OpenTextFile(.SelectedItems(1))
  14.         findtext() = Split(f.ReadAll, vbCrLf)
  15.         f.Close
  16.         Set fs = Nothing
  17.     End With
  18.     With ActiveDocument.Content.Find
  19.         .MatchAllWordForms = True
  20.         For i = 0 To UBound(findtext)
  21.             info = info & vbCrLf & findtext(i) & vbCrLf
  22.             .Text = findtext(i)
  23.             If .Execute Then
  24.                 c = c + 1
  25.                 With .Parent
  26.                     .Expand wdSentence
  27.                     If .Text Like "*" & Chr(13) Then .End = .End - 1
  28.                     info = info & .Text & Chr(13)
  29.                 End With
  30.             End If
  31.             .Parent.WholeStory
  32.         Next
  33.     End With
  34.     info = "共搜索到" & c & "条。" & vbCrLf & info
  35.     Documents.Add.Content.Text = info
  36. End Sub
复制代码
另外,原文中有些只是短语,不是句子,行末是没有句号等符号的,如何批量删除?
  1. Sub test4()
  2.     Application.ScreenUpdating = False
  3.     With ActiveDocument.Content.Find
  4.         .Text = "[!^13]@[A-Za-z]^13"
  5.         .MatchWildcards = True
  6.         .Replacement.Text = ""
  7.         .Execute Replace:=wdReplaceAll
  8.     End With
  9.     Application.ScreenUpdating = True
  10. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-10-13 01:22 | 显示全部楼层
谢谢老大,程序很好用。但是单词列表里单词一多就会出现如图的错误,是因为单词太多了吗?
运行时错误'5610'.JPG
另外再询问老大一个问题,比如例句"She was the mainstay of the team.",当用单词列表搜索时,那么 mainstay 词条会显示这个例句,如果team搜索时也是第一条例句就是这个句子,那么team词条也会显示这个例句。这样两个句子就重复了。能不能把两个词归并,只显示一个句子。
mainstay  team
She was the mainstay of the team.
或者针对team找可以搜索到的第二个例句把它列出来肯定就不重复了。
设计这个文档的目的就是给定一个单词表,另给一个例句库,使得选出来最少的句子都包含这个单词表里的单词,这样就可以用最少的句子来记整个单词表。所以需要把重复句子去掉。

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-10-13 01:49 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
对于“有限的句子涵盖给定的单词表”这个方案提供个思路,老大参考一下看是否可行。
比如单词表里第一个单词是"she"搜索到的句子是"She was the mainstay of the team.",这个句子包含6个单词,那么就在给定的单词表里把这六个单词删掉。然后程序开始搜索单词列表里的第二个单词,假如是"estate",搜索到的例句是"He made over the whole estate to his son."那么就在给定的单词表中删除这个句子包含的单词。这样应该可以保证最少的句子包含全部单词。
我不会编程,也不知道这样是否可行,或者还是照原来的方式更简单些。老大费心了。

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-10-13 02:02 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
出现运行时错误'5610',似乎是单词列表里有"according to"这样的短语,因为中间有空格。

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-10-13 02:46 | 显示全部楼层
如果删除重复句子的代码不好做,老大就不用做了。我用您现在给的代码把句子做好,删掉每个句子前的单词,把句子复制到excel,然后按升序排序,这样就会看到重复的句子了。不过这样的话,老大能不能受累给编一个excel中批量删除相同句子的程序。
另外现有的代码能不能修改一下,可以使其能够搜索单词列表中的短语,比如"according to",因为中间有空格现在的代码无法通过。

TA的精华主题

TA的得分主题

发表于 2010-10-13 08:31 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
7楼的方法很实用,17楼老师的方法是变通,同样好用,谢了

[ 本帖最后由 szh9388 于 2010-10-13 08:44 编辑 ]

TA的精华主题

TA的得分主题

发表于 2010-10-13 10:33 | 显示全部楼层
我想单词在句子中还应考虑动词时态、名词复数等变化因素吧?看来楼主的想法还不够成熟。
我对英语并没多少研究,现根据楼主前面的说明对程序再作一次修改,希望能符合楼主的意思,至于其他问题,我无法解决。
  1. Sub test5()
  2.     Dim fs, f
  3.     Dim findtext() As String, temp As String
  4.     Dim i As Integer, c As Long, info As String
  5.    
  6.     Set fs = CreateObject("Scripting.FileSystemObject")
  7.     With Application.FileDialog(msoFileDialogFilePicker)
  8.         .Title = "请指定单词列表文本文件"
  9.         .InitialFileName = ActiveDocument.Path
  10.         .AllowMultiSelect = False
  11.         If .Show <> -1 Then Exit Sub
  12.         Set f = fs.OpenTextFile(.SelectedItems(1))
  13.         findtext() = Split(f.ReadAll, vbCrLf)
  14.         f.Close
  15.         Set fs = Nothing
  16.     End With
  17.     With ActiveDocument.Content.Find
  18.         For i = 0 To UBound(findtext)
  19.             .MatchAllWordForms = IIf(findtext(i) Like "*[!A-Za-z]*", False, True)
  20.             info = info & vbCrLf & findtext(i) & vbCrLf
  21.             .Text = findtext(i)
  22.             If .Execute Then
  23.                 c = c + 1
  24.                 With .Parent
  25.                     .Expand wdSentence
  26.                     temp = .Text
  27.                     If Right(temp, 1) <> Chr(13) Then temp = temp & vbCrLf
  28.                     If InStr(info, vbCrLf & temp) = 0 Then
  29.                         info = info & temp
  30.                     Else
  31.                         info = Replace(info, vbCrLf & findtext(i) & vbCrLf, "")
  32.                         info = Replace(info, vbCrLf & temp, "|" & findtext(i) & vbCrLf & temp)
  33.                         c = c - 1
  34.                     End If
  35.                 End With
  36.             End If
  37.             .Parent.WholeStory
  38.         Next
  39.     End With
  40.     info = "共搜索到" & c & "条。" & vbCrLf & info
  41.     Documents.Add.Content.Text = info
  42. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-10-13 11:34 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
谢谢老大,完全解决了我的问题。对于常规的动词或名词形态变化,这个搜索程序完全适用。比如搜索abandon,例句里含有abandoned,"abandoned"是包含了"abandon"的。主要的思路是用最少的句子包含全部单词列表,老大给定程序完全可以解决。至于想要某个动词的不规则形态,大不了单独把它添加到单词列表里参加搜索。
最后再请老大帮个忙,现在程序是每次列出一个例句,能不能添加一个对话框,在程序执行前,可以自由输入想要给每个单词配几个句子。比如输入3,就会给单词列表里的单词配三个例句。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-23 22:23 , Processed in 0.032636 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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