需要帮助在 Word 中使用通配符将数字的最后一位替换为零

需要帮助在 Word 中使用通配符将数字的最后一位替换为零

我有一堆表格,所有数字的最后一位都需要替换为零,但我不知道该如何编写代码才能使它工作。我的数字范围从 1 到 20,000,因此必须考虑逗号。我能想到的最接近的方法是将零添加到最后,而不是替换最后一个零。

因此列应该从以下开始:3,271 1,559 1,712 12 279

至此: 3,270 1,550 1,710 10 270

答案1

试试这个……如果您合并了单元格,它可能会出问题,但这对您来说是个起点。它还假设(因为您没有说明)它正在搜索的表格单元格内容是数字。如果单元格中混合了字母和数字数据,它将找不到它们。

Sub ChangeLastToZero()
    Dim doc As Word.Document, rng As Word.Range
    Dim tbl As Word.Table, r As Long, c As Long
    Set doc = ActiveDocument
    
    For Each tbl In doc.Tables
        For r = 1 To tbl.rows.Count
            For c = 1 To tbl.rows(r).Cells.Count
                Set rng = tbl.rows(r).Cells(c).Range
                Do While Asc(rng.Characters.Last) = 13
                    rng.MoveEnd Word.WdUnits.wdCharacter, Count:=-1
                Loop
                If IsNumeric(rng.Text) Then
                    rng.Characters.Last = 0
                End If
            Next
        Next
    Next
End Sub

答案2

看起来你把每个数字都向下舍入了。你可以将每个数字除以 10,得到整数部分,然后再乘以 10。

Dim numTxt As String
Dim num As Long
Dim result As Long
Dim resultTxt As String

numTxt以字符串格式设置表中的每个数字。

然后将数字numTxt从字符串转换为长整型

num = CLng(numTxt)

然后,将其除以 10,四舍五入,再乘以 10。

result = CLng(num / 10)*10

最后,再次格式化。

resultTxt = Format(result, "#,##0")

相关内容