WPS 利用 宏 脚本拆分 Excel 多行文本到多行

article/2025/6/6 3:45:06

文章目录

  • 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 每一行代表拆分后的一条记录,方便后续统计、筛选和处理。

🛠 操作步骤

  1. xlsx 文件另存为后缀为 .xlsm 格式(启用宏的 Excel 文件)
  2. 打开刚刚保存的 .xlsm 文件
  3. 点击菜单栏:工具 → 开发工具 → WPS 宏编辑器
  4. 复制下面的代码粘贴进去
  5. 点击“运行”按钮
  6. 弹出提示框 “拆分完成”,结果将写入 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");
}

代码详解

  1. 初始化工作表对象
    通过 Application.ActiveWorkbook.Sheets.Item() 获取原始数据表和输出表。

  2. 清空目标工作表
    调用 outputSheet.Cells.ClearContents() 先清空已有数据,避免叠加污染。

  3. 遍历数据行
    本例中固定遍历 1 到 100行(实际使用可根据需求动态调整)。

  4. 读取对应单元格内容
    利用 .Text 属性获取单元格显示文本。

  5. 判断并拆分多行文本
    对第3列(C列)文本按换行符拆分,兼容 Windows(\r\n)和 Unix(\n)格式。

  6. 逐行写入目标表
    拆分后的每行数据写入 Sheet2,对应 A、B、D 列的值保持不变。使用 ' 前缀强制 Excel 按文本处理单元格,避免自动格式转换。

  7. 完成提示
    脚本运行结束弹出提示框,告知用户处理完成。


使用场景

  • Excel 中导入数据时,备注列内包含多行条目,需拆分为独立记录
  • 将不规范的多行文本数据规范化成单行,方便批量操作与分析
  • 结合自动化脚本,实现数据清洗和预处理,提升办公效率

注意事项

  • 如果数据行数不固定,可改成动态获取,比如:

    let lastRow = sheet.UsedRange.Rows.Count;
    
  • 脚本基于 Excel 支持的 JS API,适用于 Office 365 的 Excel Online 脚本环境或者支持 JavaScript 的 VBA 环境。

  • 如果用纯 VBA 实现,语法会有差异,需做相应调整。


总结

本文分享的 splitMultilineTextToRows 函数,有效解决了 Excel 多行文本拆分难题,方便日常办公中数据清洗和规范化。通过简单的脚本自动化,大幅度提升了处理效率,避免手工操作繁琐与出错。


http://www.hkcw.cn/article/LHGVFhpDIL.shtml

相关文章

STM32外部中断(EXTI)以及旋转编码器的简介

一、外部中断机制概述 中断是指当主程序执行期间出现特定触发条件&#xff08;即中断源&#xff09;时&#xff0c;CPU将暂停当前任务&#xff0c;转而执行相应的中断服务程序&#xff08;ISR&#xff09;&#xff0c;待处理完成后恢复原程序的运行流程。该机制通过事件驱动…

【Unity开发】控制手机移动端的震动

&#x1f43e; 个人主页 &#x1f43e; 阿松爱睡觉&#xff0c;横竖醒不来 &#x1f3c5;你可以不屠龙&#xff0c;但不能不磨剑&#x1f5e1; 目录 一、前言二、Unity的Handheld.Vibrate()三、调用Android原生代码四、NiceVibrations插件五、DeviceVibration插件六、控制游戏手…

ES101系列07 | 分布式系统和分页

本篇文章主要讲解 ElasticSearch 中分布式系统的概念&#xff0c;包括节点、分片和并发控制等&#xff0c;同时还会提到分页遍历和深度遍历问题的解决方案。 节点 节点是一个 ElasticSearch 示例 其本质就是一个 Java 进程一个机器上可以运行多个示例但生产环境推荐只运行一个…

RabbitMQ在SpringBoot中的应用

1.简单模式 P:生产者,要发送消息的程序. C:消费者,消息的接收者. Queue:消息队列,类似于一个邮箱,生产者向其中投递消息,消费者从其中取出消息. 特点:一个生产者P,一个消费者C,消息只能被消费一次,也成为点对点模式. 适用场景:消息只能被单个消费者处理. 设置队列的名称为…

基于python写的目录/文件递归检索工具

核心功能 1. 目录结构检索 递归扫描 &#xff1a;深度遍历指定目录及其所有子目录 多种检索模式 &#xff1a; 仅文件夹模式&#xff1a;只显示目录结构仅文件模式&#xff1a;只显示文件列表文件文件夹模式&#xff1a;完整显示目录树结构&#xff08;默认模式&#xff09; …

Qwen3高效微调

高效微调 场景、模型、数据、算力 高效微调的应用场景 对话风格微调&#xff1a;高效微调可以用于根据特定需求调整模型的对话风格。例如&#xff0c;针对客服系统、虚拟助理等场景&#xff0c;模型可以通过微调来适应不同的 语气、礼貌程度 或 回答方式&#xff0c;从而在与…

不动产登记区块链系统(Vue3 + Go + Gin + Hyperledger Fabric)

好久没有介绍过新项目的制作了&#xff0c;之前做的一直都是Fisco Bcos的项目&#xff0c;没有介绍过Hyperledger Fabric的项目&#xff0c;这次来给大家分享下。 系统概述 不动产登记与交易平台是一个基于Hyperledger Fabric的综合性管理系统&#xff0c;旨在实现不动产登记…

深度学习学习率调度器指南:PyTorch 四大 scheduler 对决

在深度学习模型训练中&#xff0c;学习率调度器&#xff08;Learning Rate Scheduler&#xff09;是影响模型收敛效果和训练稳定性的关键因素。选择合适的学习率调度策略&#xff0c;往往能让模型性能产生质的飞跃。本文将深入对比PyTorch中最常用的四种学习率调度器&#xff0…

ERP学习-AP

业务需要。持续更新学习进度 借助网上零搭建平台上手实操 这个是简道云平台页面链接&#xff0c;登录的化去手机号登录 目前开始对应付模块进行学习

基于 ZYNQ UltraScale+ OV5640的高速图像传输系统设计,支持国产替代

引 言 随着电子信息技术的不断进步&#xff0c;人工智能、医 疗器械、机器视觉等领域都在高速发展 [1] &#xff0c;工业相机 是机器视觉系统中的一部分 [2] &#xff0c;对工业相机而言&#xff0c;传 输图像的速率、传输过程的抗干扰能力是其关键&#xff0c; 工业相…

smartGit 试用突破30天

1 下载 选择19.1版本 2 运行 我是linux环境 解压后, cd bin ./smartgit.sh 选择使用30天. 然后退出 3 绿色软件 破解步骤 下载破解文件&#xff1a;访问 Gitee 链接 goto下载下载破解文件 解压文件&#xff1a;下载后解压得到 crackSmartGit.jar 和 license.zip 用编辑…

一、基础环境配置

一、虚拟机 主&#xff1a;192.168.200.200 从&#xff1a;192.168.200.201 从&#xff1a;192.168.200.202 二、docker docker基础搭建&#xff0c;有不会的自行百度。 1.目录结构 /opt/software&#xff1a;软件包/opt/module&#xff1a;解压包&#xff0c;自定义脚本…

Java面试八股--08-数据结构和算法篇

1、怎么理解时间复杂度和空间复杂度 时间复杂度和空间复杂度一般是针对算法而言&#xff0c;是衡量一个算法是否高效的重要标准。先纠正一个误区&#xff0c;时间复杂度并不是算法执行的时间&#xff0c;在纠正一个误区&#xff0c;算法不单单指冒泡排序之类的&#xff0c;一个…

Oracle中的循环——FOR循环、WHILE循环和LOOP循环

目录 一、FOR循环 1.FOR循环语法结构 二、WHILE循环 1.WHILE循环语法结构 三、LOOP循环 1.LOOP循环语法结构 四、三个循环的区别(重要) Oracle中的循环常用的有&#xff1a;FOR循环、WHILE循环和LOOP循环 一、FOR循环 1.FOR循环语法结构 DECLARE --不声明变量&…

ubuntu 20.04挂载固态硬盘

我们有个工控机&#xff0c;可以接入一个固态硬盘。将固态硬盘插好后&#xff0c;就要进行挂载。在AI的指导下&#xff0c;过程并不顺利。记录如下&#xff1a; 1、检查硬盘是否被识别 安装好硬盘后&#xff0c;运行以下命令来检查Linux系统是否已识别新硬盘&#xff1a; …

SAP 自动编号的使用

1、NUMBER_RANGE_ENQUEUE用于锁定编号范围对象&#xff0c;防止多用户并发访问冲突 2、NUMBER_RANGE_DEQUEUE用于解锁已维护的编号范围对象。 3、此外&#xff0c;还提到了NUMBER_GET_NEXT函数模块&#xff0c;用于获取编号范围内的下一个号码。 文章目录 创建编号范围程序实现…

Python趣学篇:从零打造智能AI井字棋游戏(Python + Tkinter + Minimax算法)

名人说&#xff1a;路漫漫其修远兮&#xff0c;吾将上下而求索。—— 屈原《离骚》 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 专栏介绍&#xff1a;《Python星球日记》 目录 &#x1f3ae; 前言一、项目概述与技术…

[定昌linux开发板]设置密码策略

找到etc/pam.d/目录下的common-password 2.先把common-password给复制一份&#xff0c;避免改错了 可以看到新增了一个common-password.bak文件 3.打开common-password,增加密码策略 输入&#xff1a; sudo vi /etc/pam.d/common-passwod 打开common-password文件 点击&…

Godot 敌人生成半径和围墙不匹配,导致敌人错误的生成在围墙外的解决代码

一、原视频 3. Preventing Invalid Spawning 二、原代码 func get_spawn_position():var player get_tree().get_first_node_in_group("player") as Node2Dif player null:return Vector2.ZEROvar spawn_position Vector2.ZEROvar random_direction Vector2.RIG…

LabVIEW磁悬浮轴承传感器故障识别

针对工业高端装备中主动磁悬浮轴承&#xff08;AMB&#xff09;的位移传感器故障检测需求&#xff0c;基于 LabVIEW 平台构建了一套高精度故障识别系统。通过集成品牌硬件与 LabVIEW 的信号处理能力&#xff0c;实现了传感器探头故障的实时监测与精准定位&#xff0c;解决了传统…