WPS宏开发手册——Excel实战

目录

系列文章

使用、工程、模块介绍

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 3 3 = 9

...

---------------------------------------------分割---------------------------------------------

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


javascript 复制代码
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)
}
相关推荐
Enti7c16 小时前
数据一键导出为 Excel 文件
前端·javascript·excel·jquery
pk_xz12345618 小时前
完整的Python程序,它能够根据两个Excel表格(假设在同一个Excel文件的不同sheet中)中的历史数据来预测未来G列数字
开发语言·python·excel
乘风!1 天前
Java导出excel,表格插入pdf附件,以及实现过程中遇见的坑
java·pdf·excel
程序猿熊跃晖2 天前
Excel 数据导入与 SQL 生成:基于 Hutool 和 Apache POI 的优雅实践
sql·apache·excel
IT技术分享社区2 天前
解锁Excel超能力:方方格子插件介绍
excel·电脑技巧
CodeCraft Studio3 天前
Excel处理控件Spire.XLS系列教程:C# 合并、或取消合并 Excel 单元格
前端·c#·excel
云心雨禅3 天前
Vim操作指令全解析
编辑器·vim·excel
安分小尧3 天前
[特殊字符] 使用 Handsontable 构建一个支持 Excel 公式计算的动态表格
前端·javascript·react.js·typescript·excel
hello_simon3 天前
在线小白工具,PPT转PDF支持多种热门工具,支持批量转换,操作简单,高效适合各种需求
pdf·html·powerpoint·excel·pdf转html·excel转pdf格式