当前位置: 首页 > article >正文

通过 VBA 在 Excel 中自动提取拼音首字母

在excel里面把表格里的中文提取拼音大写缩写怎么弄
在Excel中,如果你想提取表格中的中文字符并转换为拼音大写缩写(即每个汉字的拼音首字母的大写形式),可以通过以下步骤来实现。这项工作可以分为两个主要部分:

提取拼音:Excel本身没有内置的拼音转换功能,因此需要借助第三方工具或VBA(宏)代码来实现。
提取拼音首字母:我们可以将提取的拼音进行处理,提取出每个字的拼音首字母并转换为大写。

方法 1: 使用VBA代码进行拼音转换(推荐方式)

步骤:
1.打开Excel VBA编辑器:

按 Alt + F11 打开VBA编辑器。

2.插入一个新的模块:

在VBA编辑器中,点击插入 -> 模块,这将创建一个新的代码模块。

3.复制并粘贴以下VBA代码: 这段代码将帮助你将中文字符转换为拼音,并提取每个拼音的首字母。

Function GetPinYin(str As String) As StringDim obj As ObjectDim i As IntegerDim result As StringSet obj = CreateObject("SAPI.SpVoice") ' 创建语音识别对象' 遍历字符串的每个字符For i = 1 To Len(str)result = result & GetFirstLetter(Mid(str, i, 1))Next iGetPinYin = result
End FunctionFunction GetFirstLetter(s As String) As String' 获取拼音的首字母,并转为大写Dim obj As ObjectSet obj = CreateObject("SAPI.SpVoice")On Error Resume Nextobj.Speak sGetFirstLetter = UCase(Left(obj.GetVoices().Item(0).GetDescription, 1)) ' 取拼音首字母
End Function

4.保存并关闭VBA编辑器:
完成后按 Ctrl + S 保存,并关闭VBA编辑器。

5.在工作表中使用这个函数: 假设你要转换A1单元格中的中文,可以在B1单元格中使用以下公式:

=GetPinYin(A1)

方法 2: 使用第三方插件(如百度拼音、搜狗拼音)

一些第三方拼音插件(如百度拼音、搜狗拼音等)可以与Excel集成,用来直接提取拼音,但这种方法通常需要你手动下载并安装插件,或者通过宏操作调用外部工具。
步骤:

  1. 安装拼音转换插件:例如可以安装“拼音助手”等第三方插件,直接提供拼音转换的功能。
  2. 转换拼音并提取首字母:通过插件将中文转换为拼音后,再通过Excel的文本函数(如LEFT)提取拼音的首字母并转换为大写。

方法 3: 使用在线工具(适合少量数据)

如果数据量不大,你也可以使用在线拼音转换工具,将中文文本粘贴到在线工具中,获取拼音首字母。然后手动将转换结果粘贴回Excel中。

方法 4: 手动提取拼音首字母(适用于小范围数据)

如果数据量非常小(例如只有几个单词),你也可以手动查找每个汉字的拼音首字母,并将其大写。例如:
• “北京” -> “B”
• “上海” -> “S”
• “广州” -> “G”
总结:

  1. VBA代码:通过编写VBA宏代码,可以自动实现拼音转换并提取拼音首字母。
  2. 第三方插件:可以使用插件(如百度拼音或搜狗拼音)来完成拼音转换。
  3. 在线工具:对于小数据量,可以使用在线拼音转换工具。
  4. 手动提取:如果数据量非常少,可以手动提取拼音首字母。

报错处理

#NAME? 错误通常表示 Excel 无法识别你输入的函数名称或引用。针对你遇到的问题,这里有几个可能的原因和解决办法:
1. VBA代码未正确保存或未启用

如果在执行VBA代码时遇到 #NAME? 错误,最常见的原因是函数没有正确保存或Excel无法识别该自定义函数。请按以下步骤检查和修复:

步骤 1:确保VBA代码正确保存

  1. 打开VBA编辑器:按 Alt + F11 打开VBA编辑器。
  2. 检查函数:确保你的函数代码已正确复制并粘贴到VBA模块中。
    o 确保 GetPinYin 和 GetFirstLetter 函数已经正确输入,且没有错误。
  3. 保存并关闭VBA编辑器:按 Ctrl + S 保存代码,然后关闭VBA编辑器(按 Alt + Q)。
    步骤 2:启用宏
    如果你的工作簿没有启用宏,也会出现此问题。确保你的Excel启用了宏:
  4. 点击 文件 -> 选项 -> 信任中心。
  5. 点击 信任中心设置,选择 启用所有宏(或选择 启用已签名的宏)。
    步骤 3:重新运行函数
    在Excel中重新输入你的函数,比如:
=GetPinYin(A1)

确保输入的函数名称没有错误,并且拼写与VBA中定义的完全一致。
2. Excel不支持SAPI.SpVoice
另外,原代码中的 SAPI.SpVoice 可能需要语音合成引擎支持,而这个可能不在所有版本的Excel中有效。我们可以使用另一种方法来避免这个问题,提取拼音首字母。
方法 2:改进VBA代码(提取拼音首字母)
为了避免依赖 SAPI.SpVoice,我将提供一个更简单的VBA代码,用来提取拼音首字母。
更新后的VBA代码:

  1. 打开VBA编辑器(Alt + F11),然后在新模块中粘贴以下代码:
Function getpychar(char)tmp = 65536 + Asc(char)If (tmp >= 45217 And tmp <= 45252) Thengetpychar = "A" ' 修改为大写ElseIf (tmp >= 45253 And tmp <= 45760) Thengetpychar = "B" ' 修改为大写ElseIf (tmp >= 45761 And tmp <= 46317) Thengetpychar = "C" ' 修改为大写ElseIf (tmp >= 46318 And tmp <= 46825) Thengetpychar = "D" ' 修改为大写ElseIf (tmp >= 46826 And tmp <= 47009) Thengetpychar = "E" ' 修改为大写ElseIf (tmp >= 47010 And tmp <= 47296) Thengetpychar = "F" ' 修改为大写ElseIf (tmp >= 47297 And tmp <= 47613) Thengetpychar = "G" ' 修改为大写ElseIf (tmp >= 47614 And tmp <= 48118) Thengetpychar = "H" ' 修改为大写ElseIf (tmp >= 48119 And tmp <= 49061) Thengetpychar = "J" ' 修改为大写ElseIf (tmp >= 49062 And tmp <= 49323) Thengetpychar = "K" ' 修改为大写ElseIf (tmp >= 49324 And tmp <= 49895) Thengetpychar = "L" ' 修改为大写ElseIf (tmp >= 49896 And tmp <= 50370) Thengetpychar = "M" ' 修改为大写ElseIf (tmp >= 50371 And tmp <= 50613) Thengetpychar = "N" ' 修改为大写ElseIf (tmp >= 50614 And tmp <= 50621) Thengetpychar = "O" ' 修改为大写ElseIf (tmp >= 50622 And tmp <= 50905) Thengetpychar = "P" ' 修改为大写ElseIf (tmp >= 50906 And tmp <= 51386) Thengetpychar = "Q" ' 修改为大写ElseIf (tmp >= 51387 And tmp <= 51445) Thengetpychar = "R" ' 修改为大写ElseIf (tmp >= 51446 And tmp <= 52217) Thengetpychar = "S" ' 修改为大写ElseIf (tmp >= 52218 And tmp <= 52697) Thengetpychar = "T" ' 修改为大写ElseIf (tmp >= 52698 And tmp <= 52979) Thengetpychar = "W" ' 修改为大写ElseIf (tmp >= 52980 And tmp <= 53640) Thengetpychar = "X" ' 修改为大写ElseIf (tmp >= 53679 And tmp <= 54480) Thengetpychar = "Y" ' 修改为大写ElseIf (tmp >= 54481 And tmp <= 62289) Thengetpychar = "Z" ' 修改为大写Else' 如果不是中文,则不处理getpychar = charEnd IfEnd Function' 逐个取ASC码
Function getpy(str)For i = 1 To Len(str)getpy = getpy & getpychar(Mid(str, i, 1))Next i
End Function

这个代码简化了拼音转换部分,并通过拼音字母映射的方式来返回拼音的首字母。
在这里插入图片描述

使用方法:

在Excel中,假设A1单元格有中文文本,你可以在B1单元格使用以下公式来提取拼音首字母:

=getpy(A1)

在这里插入图片描述

  1. 检查拼音库的支持
    如果你遇到#NAME?错误,并且希望进一步完善拼音提取功能,可能需要使用外部拼音库或API来获取更精确的拼音。Excel本身不提供直接的拼音转换功能。

如果在 EXCEL 2007 中的 “信任中心” 选项卡中没有找到 “信任中心设置”

可能是你进入了不正确的设置路径。请按以下步骤进行正确操作:

  1. 打开信任中心设置
  2. 打开 EXCEL 2007,点击左上角的 “OFFICE 按钮”(圆形的按钮)。
  3. 在弹出的菜单中,点击 “EXCEL 选项”(EXCEL OPTIONS)。
  4. 在 “EXCEL 选项” 窗口的左侧,选择 “信任中心”(TRUST CENTER)。
  5. 在 信任中心 页面,点击右侧的 “信任中心设置”(TRUST CENTER SETTINGS)。
  6. 启用宏的设置
    进入 “信任中心设置” 后,找到 “宏设置”(MACRO SETTINGS)选项,并根据需要进行设置。你会看到以下几个选项:
    禁用所有宏,无通知:禁止所有宏,不会显示任何提示。
    禁用所有宏,除了数字签名的宏:只允许受信任的宏运行。
    启用所有宏:允许所有宏运行(不推荐,因为这可能存在安全风险)。
    启用所有宏,带通知:允许宏运行,但每次打开含宏的文件时都会提示用户是否启用宏(推荐)。
    选择 “启用所有宏,带通知” 选项,这样每次打开包含宏的文件时,EXCEL 会提示你是否启用宏。
    勾选 “信任对VBA工程对象模型的访问” 选项。
  7. 保存并退出
    设置完成后,点击 “确定” 保存设置,关闭对话框。
  8. 重新打开文件
    完成上述步骤后,你可以重新打开你的 EXCEL 文件。如果文件包含宏,EXCEL 会提示你是否启用宏,选择 “启用宏”。

相关文章:

通过 VBA 在 Excel 中自动提取拼音首字母

在excel里面把表格里的中文提取拼音大写缩写怎么弄 在Excel中&#xff0c;如果你想提取表格中的中文字符并转换为拼音大写缩写&#xff08;即每个汉字的拼音首字母的大写形式&#xff09;&#xff0c;可以通过以下步骤来实现。这项工作可以分为两个主要部分&#xff1a; 提取拼…...

动态规划dp_4

一.背包 如果求组合数就是外层for循环遍历物品&#xff0c;内层for遍历背包。 如果求排列数就是外层for遍历背包&#xff0c;内层for循环遍历物品。 二.题 1. 思路&#xff1a;dp五部曲&#xff0c;思路在注释 /* dp[i]表示&#xff1a;到达第 i 个台阶有dp[i]种方法 状态转…...

对贵司需求的PLC触摸的远程调试的解决方案

远程监控技术解决方案 一、需求痛点分析 全球设备运维响应滞后&#xff08;平均故障处理周期>72小时&#xff09;客户定制化需求频繁&#xff08;每月PLC程序修改需求超50次&#xff09;人力成本高企&#xff08;单次跨国差旅成本约$5000&#xff09;多品牌PLC兼容需求&am…...

Python用PyMC3马尔可夫链蒙特卡罗MCMC对疾病症状数据贝叶斯推断

全文链接&#xff1a;https://tecdat.cn/?p39937 本文聚焦于马尔可夫链蒙特卡罗&#xff08;MCMC&#xff09;方法在贝叶斯推断中的Python实现。通过介绍MCMC的基础原理、在贝叶斯推断中的应用步骤&#xff0c;展示了其在解决复杂分布采样问题上的强大能力。同时&#xff0c;借…...

网络工程师 (39)常见广域网技术

一、HDLC 前言 HDLC&#xff08;High-level Data Link Control&#xff0c;高级数据链路控制&#xff09;是一种面向比特的链路层协议。 &#xff08;一&#xff09;定义与历史背景 HDLC是由国际电信联盟&#xff08;ITU&#xff09;标准化的&#xff0c;它基于IBM公司早期的同…...

每日Attention学习23——KAN-Block

模块出处 [SPL 25] [link] [code] KAN See In the Dark 模块名称 Kolmogorov-Arnold Network Block (KAN-Block) 模块作用 用于vision的KAN结构 模块结构 模块代码 import torch import torch.nn as nn import torch.nn.functional as F import mathclass Swish(nn.Module)…...

基于Python的Optimal Interpolation (OI) 方法实现

前言 Optimal Interpolation (OI) 方法概述与实现 Optimal Interpolation (OI) 是一种广泛应用于气象学、海洋学等领域的空间数据插值方法。该方法通过结合观测数据与模型预测数据&#xff0c;最小化误差方差&#xff0c;从而实现对空间数据的最优插值。以下是OI方法的一般步骤…...

学习数据结构(10)栈和队列下+二叉树(堆)上

1.关于栈和队列的算法题 &#xff08;1&#xff09;用队列实现栈 解法一&#xff1a;&#xff08;参考代码&#xff09; 题目要求实现六个函数&#xff0c;分别是栈初始化&#xff0c;入栈&#xff0c;移除并返回栈顶元素&#xff0c;返回栈顶元素&#xff0c;判空&#xff0…...

.NET版Word处理控件Aspose.Words教程:使用 C# 删除 Word 中的空白页

Word 文档中的空白页会使其看起来不专业并扰乱流程。用户会遇到需要删除 Word 中的空白页的情况&#xff0c;但手动删除它们需要时间和精力。在这篇博文中&#xff0c;我们将探讨如何使用 C# 删除 Word 中的空白页。 本文涵盖以下主题&#xff1a; C# 库用于删除 Word 中的空…...

《代码随想录》刷题笔记——回溯篇【java实现】

文章目录 组合组合总和 III电话号码的字母组合组合总和组合总和II思路代码实现 分割回文串※思路字符串分割回文串判断效率优化※ 复原 IP 地址优化版本 子集子集 II使用usedArr辅助去重不使用usedArr辅助去重 递增子序列※全排列全排列 II重新安排行程题意代码 N 皇后解数独直…...

【JavaEE进阶】验证码案例

目 &#x1f332;实现说明 &#x1f384;Hutool介绍 &#x1f333;准备工作 &#x1f334;约定前后端交互接口 &#x1f6a9;接口定义 &#x1f6a9;实现服务器后端代码 &#x1f6a9;前端代码 &#x1f6a9;整体测试 &#x1f332;实现说明 随着安全性的要求越来越⾼…...

TCP/UDP 简介,三次握手与四次挥手

一、TCP 三次握手 目的&#xff1a;为了解决在不可靠的信道上建立可靠的网络连接 三次握手是连接请求的过程&#xff1a; A 发送连接请求的数据给 B&#xff08;发送 SYN 包&#xff09; B 同意连接&#xff0c;返回数据给 A&#xff08;返回 SYNACK 包&#xff09; A 收到后回…...

C++之线程池(Thread Pool)

1.介绍 线程池是一种并发编程的设计模式&#xff0c;用于管理和复用多个线程。以避免频繁创建和销毁线程的开销。线程池的核心思想是预先创建一组线程&#xff0c;并将任务分配给这些线程执行&#xff0c;从而提高程序的性能和资源利用率。 2.线程池的核心组件 一个经典的线程…...

Django中实现简单易用的分页工具

如何在Django中实现简单易用的分页工具&#xff1f;&#x1f4da; 嗨&#xff0c;小伙伴们&#xff01;今天我们来看看如何在 Django 中实现一个超简单的分页工具。无论你是在处理博客文章、产品列表&#xff0c;还是用户评论&#xff0c;当数据量一大时&#xff0c;分页显得尤…...

【kafka系列】Exactly Once语义

目录 1. Exactly-Once语义的定义 2. Kafka实现Exactly-Once的机制 3. 端到端Exactly-Once示例 场景描述 3.1 生产者配置与代码 3.2 消费者配置与代码 4. 异常场景与Exactly-Once保障 场景1&#xff1a;生产者发送消息后宕机 场景2&#xff1a;消费者处理消息后宕机 场…...

export default与export区别

1.定义&#xff1a; export default‌&#xff1a;用于导出模块中的默认成员。一个模块中只能有一个export default&#xff0c;通常用于导出模块的主要功能或对象。导入时可以使用任意名称&#xff0c;因为它没有具体的名称‌ ‌export‌&#xff1a;用于导出模块中的多个成…...

Qt Creator 5.0.2 (Community)用久了突然变得很卡

目录 1.现象 2.解决方案 1.现象 很久没有用Qt Creator开发项目了&#xff0c;刚刚结束的项目又是用VS2019开发的&#xff1b;这两天刚好有时间去学习一下Qt&#xff0c;刚好要用Qt Creator&#xff0c;结果一打开就没反应&#xff0c;主界面显示出来要好几分钟&#xff0c;最…...

Windows搭建CUDA大模型Docker环境

Windows搭建CUDA大模型Docker环境 一、安装Docker二、拉取镜像三、启动容器四、安装依赖环境五、安装Miniconda3六、设置pip源地址 一、安装Docker windows中docker安装教程 二、拉取镜像 系统&#xff1a;Ubuntu20.04CUDA版本&#xff1a;11.8.0 docker pull nvcr.io/nvid…...

阅读论文笔记《Efficient Estimation of Word Representations in Vector Space》

这篇文章写于2013年&#xff0c;对理解 word2vec 的发展历程挺有帮助。 本文仅适用于 Word2Vect 的复盘 引言 这篇论文致力于探索从海量数据中学习高质量单词向量的技术。当时已发现词向量能保留语义特征&#xff0c;例如 “国王 - 男人 女人≈女王”。论文打算借助该特性&am…...

初学PADS使用技巧笔记(也许会继续更新)

操作意图&#xff1a;网上找某个芯片封装又不想自己画&#xff0c;再加上没经验&#xff0c;怎么办&#xff1f; 就以AC-DC芯片PN8036为例&#xff0c;打开嘉立创的的DFM&#xff0c;打开立创商城&#xff0c;输入PN8036&#xff0c;点击数据手册&#xff0c;然后点击直接打开…...

C#学习之数据转换

目录 一、创作说明 二、数据类型之间的转换 1.数据类型之间的转换表格 2.代码示例 三、进制之间的转换 1.进制之间的转换表格 2.代码示例 四、ASCII 编码和字符之间的转换 1.ASCII 编码和字符之间的转换表格 2.代码示例 五、总结 一、创作说明 C#大多数时候都是和各…...

从无序到有序:上北智信通过深度数据分析改善会议室资源配置

当前企业普遍面临会议室资源管理难题&#xff0c;预约机制不完善和临时会议多导致资源调度不合理&#xff0c;既有空置又有过度拥挤现象。 针对上述问题&#xff0c;上北智信采用了专业数据分析手段&#xff0c;巧妙融合楼层平面图、环形图、折线图和柱形图等多种可视化工具&a…...

JavaScript 中toLocaleString()的基本用法

toLocaleString() 是 JavaScript 中多个内置对象&#xff08;如 Number、Date、Array 等&#xff09;都拥有的方法&#xff0c;其作用是将对象的值转换为符合特定语言环境的字符串表示形式。下面分别介绍不同对象使用该方法的具体用法。 1. Number.prototype.toLocaleString()…...

CAS单点登录(第7版)4.管理

如有疑问&#xff0c;请看视频&#xff1a;CAS单点登录&#xff08;第7版&#xff09; 管理 概述 Admin Console & 仪表板 CAS 提供了许多可用于管理 CAS 服务器部署的工具和控制板。此类选项通常不是互斥的&#xff0c;旨在协同工作并呈现 CAS 配置和构建的各个方面&am…...

Baklib一站式云平台:全场景赋能企业知识资产激活

内容概要 在数字化浪潮推动下&#xff0c;企业知识资产的高效管理与价值释放成为核心议题。Baklib作为一站式云平台&#xff0c;以全场景赋能为核心定位&#xff0c;通过构建知识中台架构&#xff0c;为企业提供从资源整合到应用落地的闭环解决方案。该平台不仅支持文本、图像…...

登录弹窗效果

1&#xff0c;要求 点击登录按钮&#xff0c;弹出登录窗口 提示1&#xff1a;登录窗口 display:none 隐藏状态&#xff1b; 提示2&#xff1a;登录按钮点击后&#xff0c;触发事件&#xff0c;修改 display:block 显示状态 提示3&#xff1a;登录窗口中点击关闭按钮&#xff0…...

文本表示方法

词向量 独热编码模型和分布式表征模型 独热编码分布式表征固定长度的稠密词向量优点一个单词一个维度&#xff0c;彼此之间构成标准正交向量组数字化后的数值可以表示语义上的关系缺点稀疏,词向量维度大导致计算效率低 独热编码会根据语料库中的单词个数&#xff0c;来确定词…...

小小小病毒(3)(~_~|)

一分耕耘一分收获 声明&#xff1a; 仅供损害电脑&#xff0c;不得用于非法。损坏电脑&#xff0c;作者一律不负责。此作为作者原创&#xff0c;转载请经过同意。 欢迎来到小小小病毒&#xff08;3&#xff09; 感谢大家的支持 还是那句话&#xff1a;上代码&#xff01; …...

微软AutoGen高级功能——Memory

介绍 大家好&#xff0c;博主又来给大家分享知识了。这次又要给大家分享什么呢&#xff1f;哈哈。这次要给大家分享的是微软AutoGen框架的高级且重要的功能&#xff1a;Memory。在微软AutoGen中&#xff0c;Memory(记忆)是一个重要概念&#xff0c;它主要用于存储和管理智能体…...

Debezium系列之:时区转换器,时间戳字段转换到指定时区

Debezium系列之:时区转换器,时间戳字段转换到指定时区 示例:基本配置应用TimezoneConverter SMT的效果示例:高级配置配置选项当Debezium发出事件记录时,记录中的时间戳字段的时区值可能会有所不同,这取决于数据源的类型和配置。为了在数据处理管道和应用程序中保持数据一…...