WPS单元格中如何分别设置中英字体为不同字号

一、问题的提出

早上,有一位英语老师需要把单元格中的英文和中文设置成不同的字体。问题如下:

李老师,我有一个Excel表格,里面的单元格都是前半部分英文、后半部分中文,一个单元格里同时有英文字符和中文字符。我想排版时把英文字体设为12号,中文字体设为10号,这样排版更美观,也能突出英文。请问该怎么实现统一处理?有没有可以直接粘贴运行的代码,或者其他简便方法?我平时都是先把整个表格统一设置成10号,然后再逐个单元格手动选,把中文设为10号,一个个处理实在太慢了,想求一个高效的解决办法。

所需要设置的表格如下所示。

示例表格

以往他设置的方法是每一个单元格中的英文和中文分别手动设置字号,不仅速度慢,而且容易出错,于是他想找一种可以批量操作的办法。

二、问题的解决

这种批量设置英文字号的思路是选中所有英文字体,再设置字号。于是,我想到使用VBA代码来实现。

首先,创建用于匹配英文单词的正则表达式 \b[A-Za-z]+\b,并将查找范围设定为当前工作表的已使用区域(ActiveSheet.UsedRange)。随后,通过 For 循环遍历区域内每个单元格,利用正则表达式检索其中的英文单词,并将匹配到的单词格式调整为:字号 12、加粗,同时通过修改 RGB 参数(如 RGB(0, 102, 204))来设定其字体颜色。

设置完成后,将会弹窗显示:已设置完成。

vbnet 复制代码
Sub SetEnglishWordsFontByRegex()
    Dim rng As Range, cell As Range
    Dim regex As Object
    Dim matches As Object
    Dim match As Object
    
    ' 创建正则表达式
    Set regex = CreateObject("VBScript.RegExp")
    With regex
        .Global = True
        .IgnoreCase = True
        .Pattern = "\b[A-Za-z]+\b"  ' 匹配整个英文单词(边界)
    End With
    
    Application.ScreenUpdating = False
    
    Set rng =  ActiveSheet.UsedRange
    
    For Each cell In rng
        If Not IsEmpty(cell.Value) And VarType(cell.Value) = vbString Then
            Set matches = regex.Execute(cell.Value)
            
            For Each match In matches
                ' 设置每个匹配到的英文单词的字号
                cell.Characters(match.FirstIndex + 1, match.Length).Font.Size = 12
                cell.Characters(match.FirstIndex + 1, match.Length).Font.Color = RGB(0, 102, 204)
                cell.Characters(match.FirstIndex + 1, match.Length).Font.Bold = True
            Next match
        End If
    Next cell
    
    Application.ScreenUpdating = True
    MsgBox "已完成设置", vbInformation
    
    Set regex = Nothing
End Sub

三、解决方法

打开要操作的工作表,先用CTRL+A全选表格,设置字体为9号,这样英文和中文字体均为9号。

然后按下ALT+F11,双击当前工作表如:sheet1进入到代码编辑区,复制上面的代码,然后按下F5或点上方的蓝色运行按钮即可批量修改英文单词的格式。

四、总结

这是一种基于VBA正则表达式的高效解决方案,用于在WPS或者Excel工作表中批量识别和格式化英文单词。

这种方法能够智能识别完整的英文单词边界,并对符合条件的内容进行统一的字体样式设置,显著提升数据可读性和视觉效果,大幅提升工作效率。

测试文件地址:【金山文档 | WPS云文档】 中文9号英文12号

https://www.kdocs.cn/l/cmzmvo1NMbZi

相关推荐
AllData公司负责人5 小时前
AllData数据中台-数据同步平台【Seatunnel-Web】整库同步MySQL同步Doris能力演示
大数据·数据库·mysql·开源
加油,小猿猿5 小时前
Java开发日志-双数据库事务问题
java·开发语言·数据库
山岚的运维笔记5 小时前
SQL Server笔记 -- 第20章:TRY/CATCH
java·数据库·笔记·sql·microsoft·sqlserver
Gain_chance5 小时前
33-学习笔记尚硅谷数仓搭建-DWS层交易域用户粒度订单表分析及设计代码
数据库·数据仓库·hive·笔记·学习·datagrip
醇氧6 小时前
【docker】mysql 8 的健康检查(Health Check)
mysql·docker·容器
未来之窗软件服务6 小时前
计算机等级考试—高频英语词汇—东方仙盟练气期
数据库·计算机软考·东方仙盟
lekami_兰6 小时前
MySQL 长事务:藏在业务里的性能 “隐形杀手”
数据库·mysql·go·长事务
JQLvopkk6 小时前
C# 轻量级工业温湿度监控系统(含数据库与源码)
开发语言·数据库·c#
devmoon8 小时前
在 Polkadot Runtime 中添加多个 Pallet 实例实战指南
java·开发语言·数据库·web3·区块链·波卡
认真的薛薛8 小时前
数据库-sql语句
数据库·sql·oracle