Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 4801|回复: 6

[已解决]解释下Replace函数?

[复制链接]
发表于 2014-10-25 13:48 | 显示全部楼层 |阅读模式
本帖最后由 sdfsdfs 于 2014-10-25 14:42 编辑

Sub Macro1()
Dim regex As Object
Dim x As String
x = "This is a test 10."
Set regex = CreateObject("VBScript.RegExp")
With regex
    .Global = True
    .Pattern = "\d"     '数字字符匹配
    MsgBox .Replace(x, "-")
End With
End Sub
在正则表达式里,Replace函数括号里是不是省略一个参数,完整的语法参数是什么?

比如MsgBox Replace("123123tech", "123", "") 返回结果是tech,好像和上面的括号里面的参数不太一样?


最佳答案
2014-10-25 14:40
本帖最后由 dsmch 于 2014-10-25 14:41 编辑

Replace 方法
参阅参阅参阅参阅应用于 Range 对象的 Replace 方法。
返回 Boolean 类型,指示指定区域内单元格中的字符。使用本方法并不会更改选定区域或活动单元格。
expression.Replace(What, Replacement, LookAt, SearchOrder, MatchCase, MatchByte, SearchFormat, ReplaceFormat)
expression      必需。该表达式返回一个 Range 对象。
What      Variant 类型,必需。Microsoft Excel 要搜索的字符串。
Replacement      Variant 类型,必需。替换字符串。
LookAt      Variant 类型,可选。可为以下 XlLookAt 常量之一:xlWhole 或 xlPart。
SearchOrder      Variant 类型,可选。可为以下 XlSearchOrder 常量之一:xlByRows 或 xlByColumns。
MatchCase      Variant 类型,可选。如果为 True,则进行区分大小写的搜索。
MatchByte      Variant 类型,可选。只有当在 Microsoft Excel 中选择或安装了双字节语言支持时,才可以使用本参数。如果为 True,则使双字节字符仅匹配双字节字符。如果为 False,则双字节字符可匹配其等价的单字节字符。
SearchFormat      Variant 类型,可选。该方法的搜索格式。
ReplaceFormat      Variant 类型,可选。该方法的替换格式。

Replace函数
描述
返回一个字符串,该字符串中指定的子字符串已被替换成另一子字符串,并且替换发生的次数也是指定的。
语法几
Replace(expression, find, replace[, start[, count[, compare]]])
Replace函数语法有如下命名参数:
部分 描述
expression 必需的。字符串表达式,包含要替换的子字符串。
find 必需的。要搜索到的子字符串。
replace 必需的。用来替换的子字符串。
start 可选的。在表达式中子字符串搜索的开始位置。如果忽略,假定从1开始。
count 可选的。子字符串进行替换的次数。如果忽略,缺省值是 –1,它表明进行所有可能的替换。
compare 可选的。数字值,表示判别子字符串时所用的比较方式。关于其值,请参阅“设置值”部分。
设置值
compare参数的设置值如下:
常数 值 描述
vbUseCompareOption –1 使用Option Compare语句的设置值来执行比较。
vbBinaryCompare 0 执行二进制比较。
vbTextCompare 1 执行文字比较。
vbDatabaseCompare 2 仅用于Microsoft Access。基于您的数据库的信息执行比较。
返回值
Replace的返回值如下:
如果 Replace返回值
expression长度为零 零长度字符串("")。
expression为Null 一个错误。
find长度为零 expression的复本。
replace长度为零 expression的复本,其中删除了所有出现的find 的字符串。
start > Len(expression) 长度为零的字符串。
count is 0 expression的复本。
说明
Replace函数的返回值是一个字符串,但是,其中从start所指定的位置开始,到expression字符串的结尾处的一段子字符串已经发生过替换动作。并不是原字符串从头到尾的一个复制。
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2014-10-25 14:30 | 显示全部楼层
这里的Replace不是函数,是方法,可以参考适用于Range的Replace方法
用法,示例,百度很多


回复

使用道具 举报

发表于 2014-10-25 14:40 | 显示全部楼层    本楼为最佳答案   
本帖最后由 dsmch 于 2014-10-25 14:41 编辑

Replace 方法
参阅参阅参阅参阅应用于 Range 对象的 Replace 方法。
返回 Boolean 类型,指示指定区域内单元格中的字符。使用本方法并不会更改选定区域或活动单元格。
expression.Replace(What, Replacement, LookAt, SearchOrder, MatchCase, MatchByte, SearchFormat, ReplaceFormat)
expression      必需。该表达式返回一个 Range 对象。
What      Variant 类型,必需。Microsoft Excel 要搜索的字符串。
Replacement      Variant 类型,必需。替换字符串。
LookAt      Variant 类型,可选。可为以下 XlLookAt 常量之一:xlWhole 或 xlPart。
SearchOrder      Variant 类型,可选。可为以下 XlSearchOrder 常量之一:xlByRows 或 xlByColumns。
MatchCase      Variant 类型,可选。如果为 True,则进行区分大小写的搜索。
MatchByte      Variant 类型,可选。只有当在 Microsoft Excel 中选择或安装了双字节语言支持时,才可以使用本参数。如果为 True,则使双字节字符仅匹配双字节字符。如果为 False,则双字节字符可匹配其等价的单字节字符。
SearchFormat      Variant 类型,可选。该方法的搜索格式。
ReplaceFormat      Variant 类型,可选。该方法的替换格式。

Replace函数
描述
返回一个字符串,该字符串中指定的子字符串已被替换成另一子字符串,并且替换发生的次数也是指定的。
语法几
Replace(expression, find, replace[, start[, count[, compare]]])
Replace函数语法有如下命名参数:
部分 描述
expression 必需的。字符串表达式,包含要替换的子字符串。
find 必需的。要搜索到的子字符串。
replace 必需的。用来替换的子字符串。
start 可选的。在表达式中子字符串搜索的开始位置。如果忽略,假定从1开始。
count 可选的。子字符串进行替换的次数。如果忽略,缺省值是 –1,它表明进行所有可能的替换。
compare 可选的。数字值,表示判别子字符串时所用的比较方式。关于其值,请参阅“设置值”部分。
设置值
compare参数的设置值如下:
常数 值 描述
vbUseCompareOption –1 使用Option Compare语句的设置值来执行比较。
vbBinaryCompare 0 执行二进制比较。
vbTextCompare 1 执行文字比较。
vbDatabaseCompare 2 仅用于Microsoft Access。基于您的数据库的信息执行比较。
返回值
Replace的返回值如下:
如果 Replace返回值
expression长度为零 零长度字符串("")。
expression为Null 一个错误。
find长度为零 expression的复本。
replace长度为零 expression的复本,其中删除了所有出现的find 的字符串。
start > Len(expression) 长度为零的字符串。
count is 0 expression的复本。
说明
Replace函数的返回值是一个字符串,但是,其中从start所指定的位置开始,到expression字符串的结尾处的一段子字符串已经发生过替换动作。并不是原字符串从头到尾的一个复制。
回复

使用道具 举报

发表于 2014-10-25 14:47 | 显示全部楼层
dsmch 发表于 2014-10-25 14:40
Replace 方法
参阅参阅参阅参阅应用于 Range 对象的 Replace 方法。
返回 Boolean 类型,指示指定区域内单 ...

这个最佳受之有愧,这类问题要学会用f1键(在vbe窗口,把光标移动代码后,按f1),f1键磨平了,楼主自然不会有这类问题了。
回复

使用道具 举报

 楼主| 发表于 2014-10-25 14:54 | 显示全部楼层
.Replace(x, "-")
好像不太对,如果是Replace方法,”x“对应的是哪个参数,“-”对应的是哪个参数

点评

正则用法:.代表CreateObject("VBScript.RegExp")对象,x被替换的字符,"-"替换结果,三种用法各有不同。  发表于 2014-10-25 14:58
回复

使用道具 举报

 楼主| 发表于 2014-10-25 15:04 | 显示全部楼层
dsmch 发表于 2014-10-25 14:47
这个最佳受之有愧,这类问题要学会用f1键(在vbe窗口,把光标移动代码后,按f1),f1键磨平了,楼主自然不 ...

.代表CreateObject("VBScript.RegExp")对象是不是指数字,在x里找到数字替换为“-”???

点评

对的,我是这样理解的  发表于 2014-10-25 15:08
回复

使用道具 举报

发表于 2014-10-25 17:02 | 显示全部楼层
dsmch 发表于 2014-10-25 14:47
这个最佳受之有愧,这类问题要学会用f1键(在vbe窗口,把光标移动代码后,按f1),f1键磨平了,楼主自然不 ...

受之应当!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-26 04:42 , Processed in 0.221677 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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