WPS宏开发手册——Excel实战

news2025/5/13 6:19:21

目录

    • 系列文章
    • 5、Excel实战
      • 使用for循环给10*10的表格填充行列之和
      • 使用for循环将10*10表格中的偶数值提取到另一个sheet页
      • 使用for循环给写一个99乘法表
      • 按市场成员名称分类(即市场成员A、B、C...),统计月内不同时间段表1和表2的乘积之和(月内所有天数00:15~24:00时间段的乘积和)。

系列文章

    使用、工程、模块介绍
    JSA语法
    JSA语法练习题
    Excel常用Api
    Excel实战
    后续常见问题、颜色附录,持续更新中…

5、Excel实战

使用for循环给10*10的表格填充行列之和

在这里插入图片描述
在这里插入图片描述
---------------------------------------------分割---------------------------------------------

使用for循环将10*10表格中的偶数值提取到另一个sheet页

在这里插入图片描述
在这里插入图片描述
---------------------------------------------分割---------------------------------------------

使用for循环给写一个99乘法表

11 = 1
1
2 = 2 22 = 4
1
3 = 3 23 = 6 33 = 9

在这里插入图片描述
在这里插入图片描述
---------------------------------------------分割---------------------------------------------

按市场成员名称分类(即市场成员A、B、C…),统计月内不同时间段表1和表2的乘积之和(月内所有天数00:15~24:00时间段的乘积和)。

在这里插入图片描述
在这里插入图片描述

function 获取每月市场成员数据乘积和(){
	let activeWorkbook = Application.ActiveWorkbook;
	if(activeWorkbook.Name !== '市场成员数据.xlsx'){
		console.log('文件选择错误	')
		return
	}
	
	// 基本数据表
	let sheet1 = Sheets.Item("sheet1");
	let sheet2 = Sheets.Item("sheet2");
	
	// 将基本数据表转换为以下格式
	/*
		let mx = {
			'市场成员A': {
				cost:0, // 乘积和
				days:[{
					day: 1,
					cost: 0, // 单日乘积和
					times: [{
						time: '00:15',
						cost: 0, //  sheet1数据 * sheet2数据
					},{
						time: '00:30',
						cost: 0, // sheet1数据 * sheet2数据
					},...]
				},{
					day: 2,
					cost: 0,
					times: [...]
				},...]
			}	
		}
	*/
	
	// 定义存放月全部市场成员数据对象
	let mx = {};
	// 循环sheet1表。i行j列。sheet1页起始行为2,结束行为4173
	for(let i = 2; i < 4174; i++){
		// 获取市场成员名称
		let name = sheet1.Cells(i, 1).Value2;
		// 获取日期
		let date = sheet1.Cells(i, 4).Text;
		// 从日期yyyy/mm/dd中获取dd,*1可以将字符串转换为数字。下面的代码中需要用day做+法,所以要转换为数字。
		let day = date.split('/')[2] * 1;
		// 定义每天的乘积和
		let dayCost = 0;
		// 定义存放96时段数据数组
		let dayTimes = [];
		// 共96列+起始列7 = 103
		for(let j = 7; j < 103; j++){
			// sheet1数据
			let sheet1Data = sheet1.Cells(i, j).Value2 || 0
			// sheet2数据
			// j=7时00:15,sheet2表为第2列;j=8时00:30,sheet2表为第3列,所以j-5为sheet2的行。
			// day为日,所以+1为sheet2的列。
			let sheet2Data = sheet2.Cells(j - 5, day + 1).Value2 || 0
			// 分时乘积
			let cost = sheet1Data * sheet2Data
			// 存放每个分时的sheet1数据
			dayTimes.push({
				time: sheet1.Cells(1, j).Value2,
				cost
			})
			// 将分时乘积相加获得一天的乘积和
			dayCost += cost
		}
		// 定义存放每天各市场成员的数据对象
		let dayData = {
			day,
			cost: dayCost,
			times: dayTimes
		}
		// 将dayData按市场成员名分组存放,并计算月和
		if(!mx[name]){
			mx[name] = {
				cost: dayData.cost,
				days: [dayData]
			}
		}else{
			mx[name].cost += dayData.cost;
			mx[name].days.push(dayData);
		}
	}

	
	// 下面的全部是打印,可以全部注释掉
	//	console.log(JSON.stringify(mx))
	// 获取全部市场成员名数组
	let names = Object.keys(mx);
	// 循环市场成员数组
	let costCount = 0
	for(let i = 0; i < names.length; i++){
		// 打印每个市场成员的乘积和
		let name = names[i];
		costCount += mx[name].cost;
		console.log(name + ',乘积和为:' + mx[name].cost);

	}
	console.log('全部市场成员乘积总和:' + costCount)
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2328751.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Cursor】切换主题

右键顶部&#xff0c;把菜单栏勾上 首选项-主题-颜色主题 选择和喜欢的颜色主题即可&#xff0c;一般是“现代深色”

spring druid项目中监控sql执行情况

场景 在 Spring Boot 结合 MyBatis 的服务中&#xff0c;实现 SQL 执行覆盖情况的监控&#xff0c;可以基于Druid提供的内置的 SQL 监控统计功能。 开启监控 在 application.yml 中启用 Druid 的 stat 和 wall 过滤器&#xff0c;并配置监控页面的访问权限 …

Obsidian按下三个横线不能出现文档属性

解决方案: 需要在标题下方的一行, 按下 键盘数字0后面那个横线(英文横线), 然后回车就可以了 然后点击横线即可

pyqt SQL Server 数据库查询-优化2

1、增加导出数据功能 2、增加删除表里数据功能 import sys import pyodbc from PyQt6.QtWidgets import QApplication, QWidget, QVBoxLayout, QHBoxLayout, QListWidget, QLineEdit, QPushButton, \QTableWidget, QTableWidgetItem, QLabel, QMessageBox from PyQt6.QtGui i…

Hyperlane:高性能 Rust HTTP 服务器框架评测

Hyperlane&#xff1a;高性能 Rust HTTP 服务器框架评测 在当今快速发展的互联网时代&#xff0c;选择一个高效、可靠的 HTTP 服务器框架对于开发者来说至关重要。最近&#xff0c;我在评估各种服务器框架性能时&#xff0c;发现了一个名为 Hyperlane 的 Rust HTTP 服务器库&a…

Laravel 中使用 JWT 作用户登录,身份认证

什么是JWT&#xff1a; JWT 全名 JSON Web Token&#xff0c;是一种开放标准 (RFC 7519)。 用于在网络应用环境间安全地传输信息作为 JSON 对象。 它是一种轻量级的认证和授权机制&#xff0c;特别适合分布式系统的身份验证。 核心特点 紧凑格式&#xff1a;体积小&#x…

VBA中类的解读及应用第二十二讲:利用类判断任意单元格的类型-5

《VBA中类的解读及应用》教程【10165646】是我推出的第五套教程&#xff0c;目前已经是第一版修订了。这套教程定位于最高级&#xff0c;是学完初级&#xff0c;中级后的教程。 类&#xff0c;是非常抽象的&#xff0c;更具研究的价值。随着我们学习、应用VBA的深入&#xff0…

STM32F103_LL库+寄存器学习笔记13 - 梳理外设CAN与如何发送CAN报文(串行发送)

导言 CAN总线因其高速稳定的数据传输与卓越抗干扰性能&#xff0c;在汽车、机器人及工业自动化中被广泛应用。它采用分布式网络结构&#xff0c;实现多节点间实时通信&#xff0c;确保各控制模块精准协同。在汽车领域&#xff0c;CAN总线连接发动机、制动、车身系统&#xff0c…

Linux系统调用编程

文章目录 一、进程和线程二、Linux的虚拟内存管理和stm32的真实物理内存**Linux虚拟内存管理**STM32物理内存映射2. 主要区别 三、Linux系统调用函数 fork()、wait()、exec()1. fork()&#xff1a;创建子进程2. wait()&#xff1a;等待子进程状态改变3. exec()&#xff1a;替换…

游戏引擎学习第203天

回顾当前情况 在这里我将直播完成整个游戏的制作。我们现在面临一些技术上的困难&#xff0c;确实如此。我的笔记本电脑的电源接口坏了&#xff0c;所以我不得不准备了这台备用笔记本&#xff0c;希望它能够正常工作。我所以希望一切都还好&#xff0c;尽管我不完全确定是否一…

深度学习数据集划分比例多少合适

在机器学习和深度学习中&#xff0c;测试集的划分比例需要根据数据量、任务类型和领域需求灵活调整。 1. 常规划分比例 通用场景 训练集 : 验证集 : 测试集 60% : 20% : 20% 适用于大多数中等规模数据集&#xff08;如数万到数十万样本&#xff09;&#xff0c;平衡了训练数…

CExercise_1_5 水仙花数

题目&#xff1a; 经典循环案例&#xff1a;请求出所有的水仙花数&#xff0c;并统计总共有几个。 所谓的水仙花数是指一个三位数&#xff0c;其各位数字的立方和等于该数本身。 举例&#xff1a;153就是一个水仙花数&#xff0c;153 1 * 1 * 1 5 * 5 * 5 3 * 3 * 3 1 125…

哈密尔顿路径(Hamiltonian Path)及相关算法题目

哈密尔顿路径要求访问图中每个顶点恰好一次&#xff0c;通常用于解决旅行商问题&#xff08;TSP&#xff09;或状态压缩DP问题。 哈密尔顿路径&#xff08;Hamiltonian Path&#xff09;是指在一个图中经过每个顶点恰好一次的路径。如果这条路径的起点和终点相同&#xff08;即…

MINIQMT学习课程Day10

开始获取股票数据课程的学习&#xff1a; 获取qmt账号的持仓情况后&#xff0c;我们进入下一步&#xff0c;如何获得当前账号的委托状况 还是之前的步骤&#xff0c;打开qmt&#xff0c;选择独立交易&#xff0c; 之后使用pycharm&#xff0c;编写py文件 导入包&#xff1a…

JAVA实战开源项目:智慧图书管理系统(Vue+SpringBoot) 附源码

本文项目编号 T 152 &#xff0c;文末自助获取源码 \color{red}{T152&#xff0c;文末自助获取源码} T152&#xff0c;文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…

Linux 系统管理综合实训 —— 基于 NAT 模式的多 IP 配置、Nginx 服务部署及存储管理

1. 虚拟机网络配置&#xff1a;NAT模式与多IP地址设置 将你的虚拟机的网卡模式设置为nat模式&#xff0c;给虚拟机网卡配置三个主机位分别为100、200、168的ip地址 设置静态IP [rootlocalhost ~]# nmcli c modify ens160 ipv4.method manual ipv4.addresses 192.168.2.100/2…

如何在windows 环境、且没有显卡的情况下用python跑通从ModelScope下载的大模型的调用

文章目录 背景介绍源代码&#xff1a;安装调试过程1.设置第三方镜像源2.预先安装&#xff1a;3.在python中创建代码&#xff1a;4.最终修改程序,将device_map从“cuda”改成“auto”&#xff0c;大模型调用1.5B&#xff08;1___5B)的5.最终跑出结果解释&#xff1a;示例&#x…

黑马点评redis改 part 1

本篇将主要阐述短信登录的相关知识&#xff0c;感谢黑马程序员开源&#xff0c;感谢提供初始源文件&#xff08;给到的是实战第7集开始的代码&#xff09;【Redis实战篇】黑马点评学习笔记&#xff08;16万字超详细、Redis实战项目学习必看、欢迎点赞⭐收藏&#xff09;-CSDN博…