EXCEL里的分数, 怎样实现同一单元格内的不同字体大小

来源:百度知道 编辑:UC知道 时间:2024/05/09 16:41:58
1 1/2
1 1/2
1 1/2
31/32
31/32
1 5/16
1 5/16
1 5/16
1 5/16
1 5/16
1 5/16
1 5/16
1 3/4
1 3/4
1 3/4
1 3/4
1 3/4
1 3/4
2
2
2

如上, 有N行数字, 有整数, 有分数, 有整数又分数
要求: 整数为10号字
分数为8号字
整数又分数的要去掉中间空格

举例:
1 1/2 这格里, 1又1/2 要去掉中间空格, 变成 11/2 第一个整数1变10号字, 1/2变8号字

31/32 这格里, 全部变8号字

1 5/16 这格里, 1变10号字, 中间空格去掉, 5/16变8号字

2 这格里, 变10号字

有几万个数, 要整理成上面要求的格式, 要在同一单元格里实现不同字体大小, 手工做是不现实的,
求快速的解决办法, 函数也好宏也好不管什么都行.

附图: 整理后的样子. (颜色忽略)
各位...........说得好简单..........可我是菜鸟啊............能不能说详细些啊................

提供给你下面的宏,但是有几点需要注意一下,下面的宏只是把A列中的分数形式,按照你的要求改写到B列中。因为我不清楚你的具体格式,只是知道你想做什么。这个宏会遍历A列中所有符合条件的判断。判断是这样的。如果数据有“/”则表示有分数,那么进行下一步判断,如果没有空格,则判断为纯分数,直接以8号字体填写到B列,如果有空格则进行拆分,把整数部分和分数部分分开来。然后以你要求10号字体和8号字体填写到B列中,如果没有“/”则直接以10号字体填写到B列中。另外提一下,你的提供的样本中整数部与分数部中间还不止一个空格,不过程序也会自动处理掉,只是麻烦了一下。

重要的是,你把分数从别处粘贴到Excel中的话,先把A列及B列的格式设置为文本,因为如果不是文本格式 Excel显示的是1 1/2,然而实际值确是1.5,因此我转换后填到B列就变成1.5了,所以,这点一定要注意。如果你的数据原来就在Excel了,直接改格式势必会让把1 1/2变成1.5,先把它粘到记事本里,改了格式后再粘回到Excel中。记住,这点很重要。

Sub Trans()
Dim Acdoc As Worksheet
Set Acdoc = ThisWorkbook.ActiveSheet
Dim I, Loc As Integer
Dim Str, Str1 As String
I = 1
Do Until Acdoc.Cells(I, 1) = ""
Str = Acdoc.Cells(I, 1)
If Strings.InStr(Str, "/") > 0 Then
If Strings.InStr(Str, " ") > 0 Then
Do
Str1 = Str
Str = Strings.Replace(Str, " ", ""