永发信息网

excel单元格中替换两个数字之间的某个字符.

答案:4  悬赏:70  手机版
解决时间 2021-02-21 02:11
  • 提问者网友:暮烟疏雨之际
  • 2021-02-20 12:31
例如A*B,a,b为任意数字,*号为任意非数字字符,(可能是字母或者符号)请问如何一次性的替换工作表中所有的*号.
当然只替换a*b数字之间的*号,其余不是数字之间的*号不替换.
*号一般为一个固定的字符比如"_".
最佳答案
  • 五星知识达人网友:爱难随人意
  • 2021-02-20 13:51
用宏来做吧
Sub t()
Dim reg, rep As String
Dim cl As Range
Set reg = CreateObject("vbscript.regexp")
rep = InputBox("请输入替换为字符:")
reg.Pattern = "(\d)[^\d](\d)"
reg.Global = True
For Each cl In ActiveSheet.UsedRange
    If reg.test(cl.Value) = True Then
        cl = reg.Replace(cl.Value, "$1" & rep & "$2")
    End If
Next
End Sub按提示输入字符就可以。
全部回答
  • 1楼网友:鱼芗
  • 2021-02-20 16:42
方法一 用查找---替换的方法: 按下ctrl+h 在查找中写入该字符(可以用ctrl+c复制该字符,再到查找中按下ctrl+v进行粘贴) 在替换中不写入内容 全部替换。   举例如下面的两个图: 替换掉单元格中的“★”号过程         方法二 用公式在另一个单元格中实现: 假设要替换掉a1单元格中的“★”号,则可以在b1单元格写入公式 =substitute(a1,"★",) 下拉填充公式。   如图:
  • 2楼网友:大漠
  • 2021-02-20 15:36
利用查找替换功能,查找a*b替换成你需要的,如:a-b
  • 3楼网友:罪歌
  • 2021-02-20 15:21
用VBA应该是比较方便的,不过我比较无聊,写了个公式: =IF(AND(ISNUMBER(--LEFt(Sheet1!A1,1)),ISNUMBER(--RIGHt(Sheet1!A1,1))),REPLACE(Sheet1!A1,MATCH(100,IFERROR(FIND(MId(Sheet1!A1,ROW(INDIRECT("1:"&LEN(Sheet1!A1))),1),"0123456789"),100),0),LOOKUP(2,1/(IFERROR(FIND(MId(Sheet1!A1,ROW(INDIRECT("1:"&LEN(Sheet1!A1))),1),"0123456789"),100)=100),ROW(INDIRECT("1:"&LEN(Sheet1!A1))))+1-MATCH(100,IFERROR(FIND(MId(Sheet1!A1,ROW(INDIRECT("1:"&LEN(Sheet1!A1))),1),"0123456789"),100),0),""),Sheet1!A1) ctrl+shift+enter结束 假设数据在sheet1,从A1开始的 在另一个工作表比如sheet2的A1填入公式,根据sheet1的区域来填充sheet2,然后把sheet2的值复制到sheet1就行了,那个空字符换成你要替换的东西 看来我理解有点错了,不是替换所有字符
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯