WPS 利用 宏 脚本拆分 Excel 多行文本到多行
文章目录
- WPS 利用 宏 脚本拆分 Excel 多行文本到多行
- 效果
- 需求背景
- 🛠 操作步骤
- 代码实现
- 代码详解
- 使用场景
- 注意事项
- 总结
WPS 利用 宏 脚本拆分 Excel 多行文本到多行
在 Excel 工作表中,我们经常遇到一列中包含多行文本(用换行符分隔)的情况,比如备注、详细描述等信息。直接操作这些多行数据,尤其是批量处理时非常不方便。今天,我将分享一个利用 JavaScript 脚本(基于 Excel VBA 的 JS 脚本接口或者 Excel Online 脚本)自动拆分含多行文本的单元格,并将拆分后的数据逐行写入新工作表的实用方法。
效果
注:要把xlsx文件,另存为后缀为xlsm格式的才能创建宏
动图展示
需求背景
- 原表结构:有一张工作表
sheet1
,前四列分别是 A、B、C、D。 - 目标:对于第 3 列(C列)中含有多行文本的单元格,将多行内容拆分成多行,每一行数据分别对应原来行的 A、B、D 列内容,拆分后写入新工作表
Sheet2
。 - 结果:
Sheet2
每一行代表拆分后的一条记录,方便后续统计、筛选和处理。
🛠 操作步骤
- 将
xlsx
文件另存为后缀为.xlsm
格式(启用宏的 Excel 文件) - 打开刚刚保存的
.xlsm
文件 - 点击菜单栏:工具 → 开发工具 → WPS 宏编辑器
- 复制下面的代码粘贴进去
- 点击“运行”按钮
- 弹出提示框 “拆分完成”,结果将写入
Sheet2
,操作完成 ✅
代码实现
function splitMultilineTextToRows() {let sheet = Application.ActiveWorkbook.Sheets.Item("sheet1");let outputSheet = Application.ActiveWorkbook.Sheets.Item("Sheet2");outputSheet.Cells.ClearContents(); // 清空输出表格let outputRow = 1;for (let i = 1; i <= 100; i++) {let aCell = sheet.Cells.Item(i, 1); // A列let bCell = sheet.Cells.Item(i, 2); // B列let cCell = sheet.Cells.Item(i, 3); // C列let dCell = sheet.Cells.Item(i, 4); // D列let aText = aCell.Text;let bText = bCell.Text;let cText = cCell.Text;let dText = dCell.Text;if (cText.trim() !== "") {// 按换行符分割,支持 Windows 和 Unix 换行格式let lines = cText.split(/\r?\n/);for (let j = 0; j < lines.length; j++) {let line = lines[j].trim();if (line !== "") {outputSheet.Cells.Item(outputRow, 1).Formula = "'" + aText; // 强制文本格式outputSheet.Cells.Item(outputRow, 2).Formula = "'" + bText; // 强制文本格式outputSheet.Cells.Item(outputRow, 3).Formula = line;outputSheet.Cells.Item(outputRow, 4).Formula = "'" + dText; // 强制文本格式outputRow++;}}}}alert("拆分完成,结果已写入 Sheet2");
}
代码详解
-
初始化工作表对象
通过Application.ActiveWorkbook.Sheets.Item()
获取原始数据表和输出表。 -
清空目标工作表
调用outputSheet.Cells.ClearContents()
先清空已有数据,避免叠加污染。 -
遍历数据行
本例中固定遍历 1 到 100行(实际使用可根据需求动态调整)。 -
读取对应单元格内容
利用.Text
属性获取单元格显示文本。 -
判断并拆分多行文本
对第3列(C列)文本按换行符拆分,兼容 Windows(\r\n
)和 Unix(\n
)格式。 -
逐行写入目标表
拆分后的每行数据写入Sheet2
,对应 A、B、D 列的值保持不变。使用'
前缀强制 Excel 按文本处理单元格,避免自动格式转换。 -
完成提示
脚本运行结束弹出提示框,告知用户处理完成。
使用场景
- Excel 中导入数据时,备注列内包含多行条目,需拆分为独立记录
- 将不规范的多行文本数据规范化成单行,方便批量操作与分析
- 结合自动化脚本,实现数据清洗和预处理,提升办公效率
注意事项
-
如果数据行数不固定,可改成动态获取,比如:
let lastRow = sheet.UsedRange.Rows.Count;
-
脚本基于 Excel 支持的 JS API,适用于 Office 365 的 Excel Online 脚本环境或者支持 JavaScript 的 VBA 环境。
-
如果用纯 VBA 实现,语法会有差异,需做相应调整。
总结
本文分享的 splitMultilineTextToRows
函数,有效解决了 Excel 多行文本拆分难题,方便日常办公中数据清洗和规范化。通过简单的脚本自动化,大幅度提升了处理效率,避免手工操作繁琐与出错。
相关文章:

WPS 利用 宏 脚本拆分 Excel 多行文本到多行
文章目录 WPS 利用 宏 脚本拆分 Excel 多行文本到多行效果需求背景🛠 操作步骤代码实现代码详解使用场景注意事项总结 WPS 利用 宏 脚本拆分 Excel 多行文本到多行 在 Excel 工作表中,我们经常遇到一列中包含多行文本(用换行符分隔ÿ…...
R语言错误处理方法大全
在R语言的批量运行中,常需要自动跳过错误,继续向下运行。 1、使用 tryCatch() 捕获错误并返回占位符 # 示例:循环中跳过错误继续执行 results <- numeric(5) # 预分配结果向量for(i in 1:5) {# 用 tryCatch 包裹可能出错的代码results[…...

AI“实体化”革命:具身智能如何重构体育、工业与未来生活
近年来,人工智能(AI)技术的飞速发展正在重塑各行各业,而具身智能(Embodied AI)作为AI领域的重要分支,正逐渐从实验室走向现实应用。具身智能的核心在于让AI系统具备物理实体,能够与环…...
Opencv4 c++ 自用笔记 05 形态学操作
图像形态学主要获取物体的形状与位置信息。利用具有一定形态的结构元素度量和提取图像中的对应形状,达到对图像分析和识别的目的。操作主要包括腐蚀、膨胀、开运算和闭运算。 像素距离与连通域 图像形态学中,将不与其他区域链接的独立区域称为集合或者…...
DrissionPage 数据提取技巧全解析:从入门到实战
在当今数据驱动的时代,网页数据提取已成为自动化办公、市场分析和爬虫开发的核心技能。作为新一代网页自动化工具,DrissionPage 以其独特的双模式融合设计(Selenium Requests)脱颖而出。本文将结合官方文档与实战案例,…...
如何构建自适应架构的镜像
目标 我有一个服务叫xxx,一开始它运行在x86架构的机器上,所以最开始有个xxx:stable-amd64的镜像,后来它又需要运行在arm64架构的机器上,所以又重新打了个xxx:stable-arm64的镜像 但是对于安装脚本来说,我不希望我在拉…...

R语言基础| 创建数据集
在R语言中,有多种数据类型,用以存储和处理数据。每种数据类型都有其特定的用途和操作函数,使得R语言在处理各种数据分析任务时非常灵活和强大: 向量(Vector): 向量是R语言中最基本的数据类型,它…...
剑指offer15_数值的整数次方
数值的整数次方 实现函数 double Power(double base, int exponent) 题目要求 计算 base exponent \text{base}^{\text{exponent}} baseexponent: 不得使用库函数不需要考虑大数问题,绝对误差不超过 10 − 2 10^{-2} 10−2不会出现底数和指数同为 0…...

Centos7搭建zabbix6.0
此方法适用于zabbix6以上版本zabbix6.0前期环境准备:Lamp(linux httpd mysql8.0 php)mysql官网下载位置:https://dev.mysql.com/downloads/mysql/Zabbix源码包地址:https://www.zabbix.com/cn/download_sourcesZabbix6…...
使用Redis的四个常见问题及其解决方案
Redis 缓存穿透 定义:redis查询一个不存在的数据,导致每次都查询数据库 解决方案: 如果查询的数据为空,在redis对应的key缓存空数据,并设置短TTL。 因为缓存穿透通常是因为被恶意用不存在的查询参数进行压测攻击&…...

Docker 部署前后端分离项目
1.Docker 1.1 什么是 Docker ? Docker 是一种开源的 容器化平台,用于开发、部署和运行应用程序。它通过 容器(Container) 技术,将应用程序及其依赖项打包在一个轻量级、可移植的环境中,确保应用在不同计算…...

云游戏混合架构
云游戏混合架构通过整合本地计算资源与云端能力,形成了灵活且高性能的技术体系,其核心架构及技术特征可概括如下: 一、混合架构的典型模式 分层混合模式 前端应用部署于公有云(如渲染流化服务),后端逻辑…...

【小红书】API接口,获取笔记核心数据
小红书笔记核心数据API接口详解 - 深圳小于科技提供专业数据服务 深圳小于科技(官网:https://www.szlessthan.com)推出的小红书笔记核心数据API接口,为开发者提供精准的笔记互动数据分析能力,助力内容运营与商业决策。…...

会议室钥匙总丢失?换预约功能的智能门锁更安全
在企业日常运营中,会议室作为重要的沟通与协作场所,其管理效率与安全性直接影响着企业的运作顺畅度。然而,传统会议室管理方式中钥匙丢失、管理不便等问题频发,给企业带来了不少困扰。近期,某企业引入了启辰智慧预约系…...

Redis底层数据结构之跳表(SkipList)
SkipList是Redis有序结合ZSet底层的数据结构,也是ZSet的灵魂所在。与之相应的,Redis还有一个无序集合Set,这两个在底层的实现是不一样的。 标准的SkipList: 跳表的本质是一个链表。链表这种结构虽然简单清晰,但是在查…...
跨架构镜像打包问题及解决方案
问题背景: 需求: 有一个镜像是 docker.io 的,是 docker.io/aquasec/kube-bench:v0.10.6,我想把该镜像在本地电脑(可翻墙)下载下来,然后 docker save 打包成一个 tar 包,传输到服务器…...
云原生时代 Kafka 深度实践:05性能调优与场景实战
5.1 性能调优全攻略 Producer调优 批量发送与延迟发送 通过调整batch.size和linger.ms参数提升吞吐量: props.put(ProducerConfig.BATCH_SIZE_CONFIG, 16384); // 默认16KB props.put(ProducerConfig.LINGER_MS_CONFIG, 10); // 等待10ms以积累更多消息ba…...

Ubuntu安装Docker命令清单(以20.04为例)
在你虚拟机上完成Ubuntu的下载后打开终端!!! Ubuntu安装Docker终极命令清单(以20.04为例) # 1. 卸载旧版本(全新系统可跳过) sudo apt-get remove docker docker-engine docker.io containerd …...
使用 Python 制作 GIF 动图,并打包为 EXE 可执行程序
文章目录 成品百度网盘下载🎬 使用 Python 制作 GIF 动图,并打包为 EXE 可执行程序(含图形界面)🧰 环境准备💻 功能预览🧑💻 完整代码(图形界面 功能)如何…...

HarmonyOS Next 弹窗系列教程(2)
HarmonyOS Next 弹窗系列教程(2) 上一章节我们讲了自定义弹出框 (openCustomDialog),那对于一些简单的业务场景,不一定需要都是自定义,也可以使用 HarmonyOS Next 内置的一些弹窗效果。比如: 名称描述不依…...
Ubuntu 18.04 上源码安装 protobuf 3.7.0
🔧 1️⃣ 安装依赖 sudo apt update sudo apt install -y autoconf automake libtool curl make g unzip📥 2️⃣ 下载源码 cd ~ git clone https://github.com/protocolbuffers/protobuf.git cd protobuf git checkout v3.7.0⚙️ 3️⃣ 编译 & 安…...

中小企业搭建网站选择虚拟主机还是云服务器?华为云有话说
这是一个很常见的问题,许多小企业在搭建网站时都会面临这个选择。虚拟主机和云服务器都有各自的优缺点,需要根据自己的需求和预算来决定。 虚拟主机是指将一台物理服务器分割成多个虚拟空间,每个空间都可以运行一个网站。虚拟主机的优点是价格…...

使用 HTML + JavaScript 在高德地图上实现物流轨迹跟踪系统
在电商行业蓬勃发展的今天,物流信息查询已成为人们日常生活中的重要需求。本文将详细介绍如何基于高德地图 API 利用 HTML JavaScript 实现物流轨迹跟踪系统的开发。 效果演示 项目概述 本项目主要包含以下核心功能: 地图初始化与展示运单号查询功能…...

19-项目部署(Linux)
Linux是一套免费使用和自由传播的操作系统。说到操作系统,大家比较熟知的应该就是Windows和MacOS操作系统,我们今天所学习的Linux也是一款操作系统。 我们作为javaEE开发工程师,将来在企业中开发时会涉及到很多的数据库、中间件等技术&#…...

html基础01:前端基础知识学习
html基础01:前端基础知识学习 1.个人建立打造 -- 之前知识的小总结1.1个人简历展示1.2简历信息填写页面 1.个人建立打造 – 之前知识的小总结 1.1个人简历展示 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8&qu…...
Golang学习之旅
Golang学习之旅:初探Go语言的奥秘 在当今这个快速发展的技术时代,编程语言层出不穷,每一种都有其独特的魅力和适用场景。作为一名对技术充满热情的开发者,我一直在探索新的知识,以提升自己的编程技能。最近࿰…...

【RoadRunner】自动驾驶模拟3D场景构建 | 软件简介与视角控制
💯 欢迎光临清流君的博客小天地,这里是我分享技术与心得的温馨角落 💯 🔥 个人主页:【清流君】🔥 📚 系列专栏: 运动控制 | 决策规划 | 机器人数值优化 📚 🌟始终保持好奇心&…...

基于RK3576+FPGA芯片构建的CODESYS软PLC Linux实时系统方案,支持6T AI算力
基于RK3576芯片构建的CODESYS软PLC Linux实时系统方案,结合了异构计算架构与工业实时控制技术,主要特点如下: 一、硬件架构设计 异构多核协同 Cortex-A72四核(2.3GHz):处理运动轨迹规划、AI视觉等…...
鸿蒙OSUniApp复杂表单与动态验证实践:打造高效的移动端表单解决方案#三方框架 #Uniapp
UniApp复杂表单与动态验证实践:打造高效的移动端表单解决方案 引言 在移动应用开发中,表单处理一直是一个既常见又具有挑战性的任务。随着HarmonyOS生态的蓬勃发展,越来越多的开发者开始关注跨平台解决方案。本文将深入探讨如何使用UniApp框…...
在linux系统上搭建git服务器(ssh协议)
1.在windows上生成RSA密钥对 ssh-keygen -t rsa -b 2048 -C"git用户名/邮箱地址" 命令执行后会在 C:\Users\${windows登录账户}\.ssh 目录下生成密钥对 其中 id_rsa 为私钥,id_rsa.pub 为公钥 2.在 linux 系统上登记公钥 vim ~/.ssh/authorized_keys…...