为什么Replace(x,Chr(160))替换空白和逗号而不是仅替换空白

时间:2019-07-17 13:08:04

标签: excel vba

我的目标是删除整个工作表中的一些空格。下面的代码有效,但也使一些数字失去逗号,使数字错误。

Sub Deletespaces()

Dim cell As Range

For Each cell In ActiveSheet.UsedRange

cell.Value = Replace(cell.Value, Chr(160), "")

Next

End Sub

enter image description here = = = => enter image description here

对于大于1.00的每个数字,代码都会将,删除。
我该如何更正我的代码以保持逗号

2 个答案:

答案 0 :(得分:0)

等等,我想我的第一个评论是问题所在……

您希望小数位没有小数位并且它们之间没有空格?

For i = top to bottom 'define these
    Cell(i,"BI").value = Cell(i,"BI").value*1000 
Next i
Columns("BI").Numberformat = "###0"

乘以1k,因为您有3个小数位。


为乘以1k添加非循环替代:

dim rng as range
set rng = range(cells(top,"BI"),cells(bottom,"BI")) 'define top and bottom
rng = Evaluate(rng.address & "*1000")
rng.Numberformat = "###0"

如果我的理解正确,那么您将离开:

Old    |    New
1.652  |    1652
0.903  |    903
0.816  |    816 

如果您希望前导0,则可以使用rng.Numberformat = "0000"进行格式化,它看起来像:

Old    |    New
1.652  |    1652
0.903  |    0903
0.816  |    0816 

答案 1 :(得分:0)

我认为如果单元格包含数字,则不应执行此替换操作,因为“替换”可用于字符串,并且“单元格的值”是根据许多规则设置格式的,具体取决于您所在的位置。

因此,我认为您只应对包含字符串的单元格执行此操作。为此,我在代码中添加了一个“如果”:

<Router>
                <Switch>

                    <Route path={"/panel"} exact render={() =><span>Panel Page</span>}/>
                    <Route path={"panel/link1"} exact render={() => <h1>Link1 is OPEN</h1>}/>
                    <Route render={() => <h1>Not Found!</h1>}/>

                </Switch>
</Router>

注意:我认为其他值类型不能包含不可中断的空间。