我有一堆表格,所有数字的最后一位都需要替换为零,但我不知道该如何编写代码才能使它工作。我的数字范围从 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")