ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > 我的酷贴 > Word > word如何让数字自动添加千位分隔符?

word如何让数字自动添加千位分隔符?

作者:绿色风 分类: 时间:2022-08-18 浏览:303
楼主
传递
Q:word如何让数字自动添加千位分隔符?
整篇文章里面有很多长数字
例如123456789987654321
如何能够自动转化为下面的形式
123,456,789 ?
以便不用再数个十百千万。


A:
有多种方法,但一般推荐用VBA
~
查找替换会改变原数据

 

代码1如下

  1. Sub 设置千分位格式()
  2. Dim myRange As Range, myValue As Double
  3. Application.ScreenUpdating = False '关闭屏幕更新,加快程序运行
  4. Do '进入一个循环
  5. '定义myRange为活动文档的主文字部分
  6. Set myRange = ActiveDocument.Content
  7. With myRange.Find '查找设置
  8. .ClearFormatting '清除格式
  9. .Text = "[0-9]{4,}[!年]" '查找四个以上的数字且其后为不为年的内容
  10. .MatchWildcards = True '使用通配符
  11. If .Execute = False Then Exit Do '如果未找到则退出循环
  12. myValue = Val(myRange.Text) '取得数字
  13. myRange.SetRange myRange.Start, myRange.End - 1 '重新定义myRange对象
  14. myRange.Text = VBA.Format$(myValue, "#,##0") '写入千分位格式
  15. End With
  16. Loop
  17. Application.ScreenUpdating = True '恢复屏幕更新
  18. End Sub

代码二

  1. Sub 千元()
  2. '
  3. ' 千元 Macro
  4. ' 宏在 2011-09-03 由 传递 创建
  5. '
  6. If Selection.Start = Selection.End Then
  7.     Selection.MoveLeft Unit:=wdCharacter, Count:=1
  8.     Selection.MoveRight Unit:=wdCharacter, Count:=1
  9.      
  10.     Ch = Left(Selection.Text, 1)
  11.     isDigit = (Asc(Ch) >= Asc("0") And Asc(Ch) <= Asc("9")) Or Ch = "," Or Ch = "."
  12.    
  13.     If isDigit Then
  14.       Do
  15.         isDigit = False
  16.         If Selection.MoveRight = 1 Then
  17.           Ch = Left(Selection.Text, 1)
  18.           isDigit = (Asc(Ch) >= Asc("0") And Asc(Ch) <= Asc("9")) Or Ch = "," Or Ch = "."
  19.         End If
  20.       Loop While isDigit
  21.      
  22.       Do While Left(Selection.Text, 1) = "," Or Left(Selection.Text, 1) = "."
  23.         Selection.MoveLeft
  24.       Loop
  25.     End If
  26.    
  27.     icount = Selection.End
  28.    
  29.     Do
  30.       isDigit = False
  31.       If Selection.MoveLeft = 1 Then
  32.         Ch = Left(Selection.Text, 1)
  33.         isDigit = (Asc(Ch) >= Asc("0") And Asc(Ch) <= Asc("9")) Or Ch = "," Or Ch = "."
  34.       End If
  35.     Loop While isDigit
  36.    
  37.     If Selection.Start > 0 Then Selection.MoveRight
  38.     Do While Left(Selection.Text, 1) = "," Or Left(Selection.Text, 1) = "."
  39.       Selection.MoveRight
  40.     Loop
  41.    
  42.     Selection.End = icount
  43. End If

  44. If Selection.Start < Selection.End Then
  45.   tmpstr = Format(Selection.Text, "")
  46.   tmpnum = Val(tmpstr)
  47.   If Abs(tmpstr - Format(tmpnum, "")) < 0.00000000001 Then Selection.Text = Format(tmpnum / 10000, "#,##0.00")
  48.   'Selection.Start = Selection.End
  49. End If
  50. End Sub


百度上的代码如下:
  1. Sub CurrencyNumber()
  2. Dim i As Range, Acell As Cell, CR As Range
  3. On Error Resume Next
  4. Application.ScreenUpdating = False
  5. If Selection.Type = 2 Then
  6. For Each i In Selection.Words
  7. If i Like "####*" = True Then
  8. If i.Next Like "." = True And i.Next(wdWord, 2) Like "#*" = True Then
  9. i.SetRange Start:=i.Start, End:=i.Next(wdWord, 2).End
  10. i = Format(i, "Standard")
  11. Else
  12. i = Format(i, "Standard")
  13. End If
  14. End If
  15. Next i
  16. ElseIf Selection.Type = 5 Then
  17. For Each Acell In Selection.Cells
  18. Set CR = ActiveDocument.Range(Acell.Range.Start, Acell.Range.End - 1)
  19. MsgBox CR
  20. If CR Like "####*" = True Then
  21. If CR Like "####.#*" = True Then
  22. Yn = Format(CR, "Standard")
  23. CR.Text = Nn
  24. Else
  25. Yn = Format(CR, "Standard")
  26. CR.Text = Nn
  27. End If
  28. End If
  29. Next Acell
  30. Else
  31. MsgBox "您只能选定文本或者表格之一!", vbOK + vbInformation
  32. End If
  33. Application.ScreenUpdating = True
  34. End Sub
保存---运行(F5--关闭
进入word2007---顶端的自定义工具栏---其他命令--从下列位置选择命令---CurrencyNumber--添加至右边--修改(自己改个图标)及名称--确定           就完成了。

查找替换法
步骤一<Ctrl+Home>组合键
步骤二<Ctrl+H>组合键,打开"查找与替换",进行下图的设置

 
步骤四单击"全部替换"

如果有只个别需要设置,可以通过域进行设置,方法:
<ctrl+f9>组合键,输入一对域括号,输入"=数字 \#"#,##0.00"
再按一下<F9>即可


 

2楼
天南地北
百度上的代码为杨版代码
怎么将WORD中的数字批量加上千位分隔符 http://www.exceltip.net/thread-2319-1-1.html
3楼
李小喵的兔兔
这里给出的查找与替换的方法似乎只能查找替换出 六位数的数字吧?

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap