Regex 如何使用函数或正则表达式删除单元格中的所有数字?
我有这样的细胞,每行一个: 约翰·达菲:“遗产:文明 犹太人的大张旗鼓& 合唱、交响舞蹈+管弦乐 一套伯恩斯坦,“在镇上”的舞蹈 情节。皇家菲尔。/R.威廉姆斯 利莲,伊格纳斯1897-1963: 歌曲,1920-1935年。Anja van Wijk,中音& 弗朗斯·范鲁斯,钢琴 辛德米特,特劳尔穆斯克。“仙女 女王套房。罗西尼,弦乐奏鸣曲6。 彼得罗夫,“创造世界”芭蕾舞 一套巴托克,罗马尼亚民俗Sz 56塔尔蒂尼,G w.A.马约罗夫·列宁格勒奥奇长笛协奏曲,为古代 &现代音乐 比泽特、威尔第、马塞内、普契尼:咏叹调 来自卡门、里戈莱托、维特、马农 莱斯科、托斯卡、图兰朵+歌曲 Lara,Di Capua等人,Peter 德沃斯基,男高音w.布拉迪斯拉发 奥奇/勒纳德也在表演《卡门》 公开和“泰国人”冥想。 现场记录,1987年10月 范蒂尼、劳赫、斯特劳斯、普里里、贝尔塔利: “朝廷的节日弥撒 维也纳,1648'约克郡巴赫合唱团& 巴洛克独奏家+巴洛克铜管乐队 伦敦/西摩 芬奇,莱昂纳多1690-1730:来自 地龙 阿班多纳塔,拉卡杜塔德西姆维里,洛城 塞卡托·福佐,巴科节日,凯通 在尤蒂卡。玛丽亚·安吉尔·彼得斯。 w、 卡拉罗先生 格鲁克、莫扎特、贝多芬、韦伯、威尔第、瓦格纳、庞切利、马斯卡尼、普契尼: 阿塞斯特的阿里亚斯,唐 乔瓦尼、菲德里奥、奥伯伦、巴洛、特里斯坦、沃库雷、齐格弗里德、戈特达默隆、乔康达、卡瓦莱里亚、托斯卡。 海琳·威尔德布伦。记录1919-24Regex 如何使用函数或正则表达式删除单元格中的所有数字?,regex,excel,worksheet-function,Regex,Excel,Worksheet Function,我有这样的细胞,每行一个: 约翰·达菲:“遗产:文明 犹太人的大张旗鼓& 合唱、交响舞蹈+管弦乐 一套伯恩斯坦,“在镇上”的舞蹈 情节。皇家菲尔。/R.威廉姆斯 利莲,伊格纳斯1897-1963: 歌曲,1920-1935年。Anja van Wijk,中音& 弗朗斯·范鲁斯,钢琴 辛德米特,特劳尔穆斯克。“仙女 女王套房。罗西尼,弦乐奏鸣曲6。 彼得罗夫,“创造世界”芭蕾舞 一套巴托克,罗马尼亚民俗Sz 56塔尔蒂尼,G w.A.马约罗夫·列宁格勒奥奇长笛协奏曲,为古代 &现代音乐 比泽特、威
我想删除所有数字。我如何使用公式来实现这一点?或者只是搜索并替换为regex?如何使用VBA实现这一点
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
更新:我无意中发布了一个包含函数而不是替换 搜索并替换为正则表达式可以很好地工作,但您可能希望编辑文本的后置词(如数字前的逗号等) 下面是函数。模式仅为=RegexReplace(单元格“\d”和“)
我也遇到过类似的问题,但我走了另一条路,希望避免使用vba。对我来说,递归使用replacement起到了作用,如下所示: 原始数据(A1:An,n=整数) 净资产收益率-1.00 市盈率0.07-0.85 ROC-ROE 0.02-0.03 等等 代词(代词)(代词)(代词)(代词)(代词)(代词)(代词(代词)(A1,“1”,“0”,“0”,“2”,“3”,“4”,“4”,“6”,“5”,“7”,“7”,“9”,“8”,“9”,“8”,“8”,“8”,“8”,“8”,“8”,“8”,“8”,“8”,“8”,“8”,“8”,“9”,“8”,“8”,“8”,“8”,“8”,“8”,“8”,“8”,“8”,“8”,“8”,“8”,“8”,“8”,“8”,“8”,“8”,“8”,“8”,“8”,“8”,“8”,“8”,“8”,“8”,“8”,“9”,“8”,“9”,“8”,“ 它可以扩展为去掉“-”和十进制指示符“.”以及“+”(如果相关),最后,使用 替换(替换(替换(替换)(替换(替换)(替换)(替换)(替换)(替换(替换)(替换)(替换(替换)(A1,“1”,“0”,“0”,“2”,“2”,“2”,“2”,“3”,“4”,“4”,“6”,“5”,“7”,“9”,“8”,“9”,“9”,“8”,“8”,“8”,“8”,“8”,“8”,“8”,“8”,“9”,“9”,“9”,“9”,“8”,“8”,“8”,“8”,“8”,“8”,“8”,“8”,“9”,“9”,“9”,“9”,“9”,“9”,“9”,“9”,“9”,“8”,“8”,“8”,“8”,“8”,“8”,“8”,“8”,“8”,“8”,“8”,“8”,“8”,“8”,“8”,“8”,“8”,“8”,“8”,“8”,“8”,“8”,“8”,“8”,“8”,“8”,“ 其中,小写表示在当前步骤中添加的复杂度 通过将范围引用更改为要分析的整个数组(A1:An)并将公式作为数组输入(即使用Ctl+Enter而不是Enter来完成任务),可以自然地映射到整个数组 然后我用len(B1)检查结果是否符合我的要求
诚然,这并不优雅。但这可能是一个有用的练习,可以教学生“动态”思考和编码。是否要删除带有数字的破折号?所有可能模式的范围是多少?
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