Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 11847|回复: 8

[已解决]有没有办法让excel单元格里含文本的数字加千分号?

[复制链接]
发表于 2010-9-8 12:55 | 显示全部楼层 |阅读模式

请教一下,有没有办法让excel某单元格里的一段话中的数字部分加上千分号?整数加上小数点和小数点后的2个零,这样的话就不用复制到word中手动加千分号和小数点。如果能做到在word中直接让数字加千分号也行。

最佳答案
2010-9-8 14:27

启动宏alt+f11,输入代码后需要手工按一下ALT+F8 (注明不是本人的,是去请教老师的)

Sub 改变数字格式为千分位格式 ()
    
    Dim strWithTh As String '用于保存处理后的数字
    Dim intI As Integer   '循环给定的数字
    Dim intLen As Integer '求数字长度
    Dim intCount As Integer '保存改变个数
   
    With Selection

    .HomeKey Unit:=wdStory '回到文章开头
    .Find.ClearFormatting
   
    Do
        .Find.Text = "^#^#^#^#" '查找4位数字

        '如果没有找到,退出
        If .Find.Execute = False Then
            MsgBox "千分位设置完毕!共改变 " & intCount & "个数字。", vbInformation
            Exit Sub
        End If

        intCount = intCount + 1 '计数器增加
   
        .MoveLeft '移到整个数字的左边       
        .MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend '选择整个数字
       
        intLen = Len(.Text)
        strWithTh = "" '清空
       
        For intI = intLen To 1 Step -3

            If intI > 3 Then
                strWithTh = "," & Mid(.Text, intI - 2, 3) & strWithTh
            Else
                '对于长度为3的倍数的数字特别处理
                strWithTh = Left(.Text, IIf(intLen Mod 3 = 0, 3, intLen Mod 3)) & strWithTh
            End If

        Next
           
        .Text = strWithTh
        .MoveRight '右移一个来取消选择
    Loop

    End With

End Sub

[此贴子已经被作者于2010-9-8 14:34:38编辑过]
发表于 2010-9-8 13:17 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2010-9-8 13:23 | 显示全部楼层

QUOTE:
以下是引用那么的帅在2010-9-8 13:17:00的发言:

能具体说说嘛?

比如单元格里是下面这段话,我想把数字加上千分号,整数自动保留2位小数

工资福利支出预算10548656元,实际完成11281234.22元,商品和服务支出预算2062527.68元,实际完成5291236.08元,对个人和家庭的补助支出预算3126161元,实际完成6687360.38元

回复

使用道具 举报

发表于 2010-9-8 13:28 | 显示全部楼层

变成什么样的?
回复

使用道具 举报

 楼主| 发表于 2010-9-8 13:34 | 显示全部楼层

QUOTE:
以下是引用那么的帅在2010-9-8 13:28:00的发言:
变成什么样的?

变这样

工资福利支出预算10,548,656.00元,实际完成11,281,234.22元,商品和服务支出预算2,062,527.68元,实际完成5,291,236.08元,对个人和家庭的补助支出预算3,126,161.00元,实际完成6,687,360.38元

回复

使用道具 举报

发表于 2010-9-8 13:43 | 显示全部楼层

试试看



[此贴子已经被作者于2010-9-8 13:43:58编辑过]

有没有办法让excel单元格里含文本的数字加千分号?

有没有办法让excel单元格里含文本的数字加千分号?
回复

使用道具 举报

发表于 2010-9-8 13:56 | 显示全部楼层

谢谢niuniu和班主任

回复

使用道具 举报

发表于 2010-9-8 14:27 | 显示全部楼层    本楼为最佳答案   

启动宏alt+f11,输入代码后需要手工按一下ALT+F8 (注明不是本人的,是去请教老师的)

Sub 改变数字格式为千分位格式 ()
    
    Dim strWithTh As String '用于保存处理后的数字
    Dim intI As Integer   '循环给定的数字
    Dim intLen As Integer '求数字长度
    Dim intCount As Integer '保存改变个数
   
    With Selection

    .HomeKey Unit:=wdStory '回到文章开头
    .Find.ClearFormatting
   
    Do
        .Find.Text = "^#^#^#^#" '查找4位数字

        '如果没有找到,退出
        If .Find.Execute = False Then
            MsgBox "千分位设置完毕!共改变 " & intCount & "个数字。", vbInformation
            Exit Sub
        End If

        intCount = intCount + 1 '计数器增加
   
        .MoveLeft '移到整个数字的左边       
        .MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend '选择整个数字
       
        intLen = Len(.Text)
        strWithTh = "" '清空
       
        For intI = intLen To 1 Step -3

            If intI > 3 Then
                strWithTh = "," & Mid(.Text, intI - 2, 3) & strWithTh
            Else
                '对于长度为3的倍数的数字特别处理
                strWithTh = Left(.Text, IIf(intLen Mod 3 = 0, 3, intLen Mod 3)) & strWithTh
            End If

        Next
           
        .Text = strWithTh
        .MoveRight '右移一个来取消选择
    Loop

    End With

End Sub

[此贴子已经被作者于2010-9-8 14:34:38编辑过]
回复

使用道具 举报

 楼主| 发表于 2010-9-8 14:42 | 显示全部楼层

我再回去好好研究一下

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-21 07:28 , Processed in 0.312903 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表