0

我有一个列表“列表 A”,其中包含数万个条目(下面显示了 4 个示例条目)。我想从“列表 A”创建另一个列表,“列表 B”。我需要“列表 B”的每个条目仅包含“列表 A”中每个条目开头的“>”字符之后的第一个“单词”的前 4 个(共 5 个)字符。

因此,例如,我想要一个看起来像这样的“列表 B”:2JUG 3JU9 1JU8 3JUE

我是脚本编写的新手,如果您能提供任何帮助,我将不胜感激。我最接近解决我的问题的是打印第一列,但这给了我第一个“单词”的所有 5 个字符,加上下一行中的一长串字母。我是脚本写作的新手,所以如果可能的话,请尽量给我你的解释的“傻瓜”版本。谢谢!

以下“列表 A”中的示例条目

2JUGA 78 NMR NA NA NA 没有 TubC 蛋白 [血管球菌 DISCIFORMIS] || 2JUGB GPLGSSAGALLAHAASLGVRLWVEGERLRFQAPPGVMTPELQSRLGGARH ELIALLRQLQPSSQGGSLLAPVARNGRL

3JU9A 237 XRAY 2.10 0.207 0.253 无伴刀豆球蛋白-Br [巴西咖啡豆] || 1AZDA 1AZDB 1AZDC 1AZDD 4H55A ADTIVAVELDTYPNTDIGDPSYPHIGIDIKSVRSKKTAKWNMQNGKVGTA HIIYNSVGKRLSAVVSYPNGDSATVSYDVDLDNVLPEWVRVGLSASTGLY KETNTILSWSFTSKLKSNSTHETNALHFMFNQFSKDQKDLILQGDATTGT EGNLRLTRVSSNGSPQGSSVGRALFYAPVHIWESSAVVASFEATFTFLIK SPDSHPADGIAFFISNIDSSIPSGSTGRLLGLFPDAN

1JU8A 37 NMR NA NA NA 没有 Leginsulin [NA] ADCNGACSPFEVPPCRSRDCRCVPIGLFVGFCIHPTG

3JUEA 368 XRAY 2.30 0.203 0.219 无 ARFGAP,带有卷曲螺旋、ANK 重复和含 PH 结构域的蛋白质 1 [智人] || 3JUEB GPLGSGSGHLAIGSAATLGSGGMARGREPGGVGHVVAQVQSVDGNAQCCD CREPAPEWASINLGVTLCIQCSGIHRSLGVHFSKVRSLTLDSWEPELVKL MCELGNVIINQIYEARVEAMAVKKPGPSCSRQEKEAWIHAKYVEKKFLTK LPEIRGRRGGRGRPRGQPPVPPKPSIRPRPGSLRSKPEPPSEDLGSLHPG ALLFRASGHPPSLPTMADALAHGADVNWVNGGQDNATPLIQATAANSLLA CEFLLQNGANVNQADSAGRGPLHHATILGHTGLACLFLKRGADLGARDSE GRDPLTIAMETANADIVTLLRLAKMREAEAAQGQAGDETYLDIFRDFSLM ASDDPEKLSRRSHDLHTL

4

1 回答 1

1

这是解决方案 - 非常简单,但假设提供的输入将完成这项工作:

Sub NMRData()
    With Selection.Find
        .Text = "^p>"
        .Replacement.Text = "@@@>"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    With Selection.Find
        .Text = "^p"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    With Selection.Find
        .Text = "@@@>"
        .Replacement.Text = "^p>"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll

    For k = ThisDocument.Paragraphs.Count To 1 Step -1
        Set oPara = ThisDocument.Paragraphs(k)
        oPara.Range.Text = Left(oPara.Range.Text, 5) & vbNewLine
    Next k

    ThisDocument.SaveAs FileName:="listB.docx", FileFormat:=wdFormatXMLDocument

End Sub

所需的输出将保存在与新 DOCX 文件相同的文件夹中。

要运行代码,请按ALT+ F11,然后F5通过 VBA 界面按 - ,或按ALT+F8选择并按名称运行宏。

带有现成代码的示例 DOCM:https ://www.dropbox.com/s/6zt4nfn7rt8eqc7/NMRDataListA.docm

PS这是我的第一个Word-VBA体验)

于 2013-02-07T21:37:39.630 回答