4

我的单元格看起来像这样,每行一个:

达菲,约翰:“遗产:文明与犹太人”——大张旗鼓和合唱,交响舞曲 + 管弦乐组曲。伯恩斯坦,《镇上》舞蹈剧集。皇家爱乐乐团/R.Williams

莉莲,伊格纳斯 1897-1963:歌曲,1920-1935。Anja van Wijk,女中音和 Frans van Ruth,钢琴

欣德米特,Trauermusik。珀塞尔,“童话女王”套房。罗西尼,第六弦乐奏鸣曲。彼得罗夫,《创造世界》芭蕾舞组曲。巴托克,罗马尼亚民间舞蹈,Sz 56。塔尔蒂尼,G 大调长笛协奏曲马约罗夫列宁格勒管弦乐团古代与现代音乐/谢罗夫

Bizet,Verdi,Massenet,Puccini:来自Carmen,Rigoletto,Werther,Manon Lescaut,Tosca,Turandot的咏叹调+ Lara,Di Capua等人的歌曲。Peter Dvorsky,男高音 w.Bratislava Orch./Lenard 同时表演“Carmen”Overt.和“Thais”冥想。Rec.Live,10/87

Fantini,Rauch,C.Straus,Priuli,Bertali:“1648 年维也纳皇宫的节日弥撒”约克郡巴赫合唱团和巴洛克独奏家 + 伦敦/西摩的巴洛克铜管

芬奇、莱昂纳多 1690-1730 年:来自 Semiramide Riconosciuta、Didone Abbandonata、La Caduta dei Decemviri、Lo Cecato Fauzo、La Festa de Bacco、尤蒂卡的 Catone 的咏叹调。玛丽亚·安吉利斯·彼得斯 wMCararo 指挥

格鲁克、莫扎特、贝多芬、韦伯、威尔第、瓦格纳、庞基埃利、马斯卡尼、普契尼:来自阿尔塞斯特、唐乔瓦尼、费德里奥、奥伯龙、巴洛、特里斯坦、沃库尔、齐格弗里德、哥特丹默龙、乔孔达、骑士、托斯卡的咏叹调。海伦·维尔德布伦。建议 1919-24

我想删除所有号码。我如何用公式做到这一点?或者也许只是搜索并用正则表达式替换?

4

3 回答 3

11

如何使用 VBA 做到这一点...

  1. 打开 Excel 工作簿并以这种方式粘贴您提供的文本: 替代文字

  2. 让那些行被选中。

  3. 按“ALT+F11”打开 Visual Basic 编辑器。

  4. 转到插入菜单并打开一个模块。

  5. 输入这个函数:

    Sub clear()
    s = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9")
    For Each r In Selection
    v = r.Value
    For i = 0 To 9
    v = Replace(v, s(i), "")
    Next
    r.Value = v
    Next
    End Sub
    

  6. 单击绿色的“播放”按钮以执行 VBA 脚本。 替代文字

  7. 回到工作表并查看结果(不再有数字): 替代文字

于 2010-08-26T23:07:38.343 回答
2

我遇到了类似的问题,但换了一种方式,想避免使用 vba。对我来说,递归使用替代品可以解决问题,如下图所示:

原始数据 (in A1:An, n=integer) ROE -1.00 P/E 0.07 -0.85 ROC-ROE 0.02 -0.03 etc..

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,"1","")),"0",""),"2",""),"3" ,""),"4",""),"5",""),"6",""),"7",""),"8",""),"9"," ")

可以扩展以去掉“-”和小数点指示符“。” 以及“+”(如果相关),最后,多余的空格使用

=trim(替代(替代(替代(替代(替代(替代(替代(替代(替代(替代(替代(替代(替代(替代(A1,"1","")),"0",""),"2" ,""),"3",""),"4",""),"5",""),"6",""),"7",""),"8"," "),"9",""),"-",""),"+","")," .",""))

其中小写字母表示在当前步骤中添加的复杂性。

这通过更改要解析的整个数组的范围引用 (A1:An) 并将公式作为数组输入(即使用 Ctl+Enter 而不是 Enter 来完成任务),自然地映射到整个数组。

然后我使用 len(B1) 检查结果是我想要的。

诚然,不优雅。但对于教学生“即时”思考和编码来说,这可能是一个有用的练习。

于 2017-02-15T16:43:59.547 回答
1

更新:我不小心发布了一个包含函数而不是替换!

使用正则表达式搜索和替换效果很好,但您可能想要编辑文本后缀(例如数字之前的逗号等)。

这是功能。模式很简单 =RegexReplace(cell, "\d", "")

Function RegexReplace(ByVal text As String, _
                      ByVal replace_what As String, _
                      ByVal replace_with As String) As String

Dim RE As Object
Set RE = CreateObject("vbscript.regexp")

RE.Pattern = replace_what
RE.Global = True
RegexReplace = RE.Replace(text, replace_with)

End Function
于 2011-06-30T03:00:25.310 回答