EXECL数据统计 VBA宏编程

Execl数据表格示例:
EXecl数据表格

宏编程代码:

/**					
 * 开发:泛华					
 * 时间:2023年5月19日16:40:19					
 * 版本:1.0.0					
 * 打包构建:false					
 */
 	
//用户使用手册:
//	新建execl表格中需拥有两个表(操作表,结果表) 	
//	此版本为初代版本,需从代码中进行数据更替操作
//	List_info变量为 计算单元格信息 以数组排列
//	数组格式:[姓名单元格位置,数据单元格位置,单元格开始位置,单元格结束地址]
//	分别为:  [	   X        ,       X      ,     Y        ,    Y        ]

 										
//入口函数					
function Main()					
{					
//	计算单元格配置			
	let List_info = [["C","D",3,32],["G","H",3,32],["K","L",3,31]]	
//	函数调用
	List_Sum_Attr(List_info);
}
//	函数封装 为构建回调 合并分析计算插入
	
function List_Sum_Attr(info_s,name_s){
				
	let List_info = info_s				
	let name_all = [				
		"杨镇熊","唐铭","蔡迎宾","柯美杨",			
		"仲友奇","蔡伦荣","苏登富","何元朋",			
		"石宝攀","徐廷银","李勇","胡志斌",			
		"曾连斌","杜灵权","王书国","姚斌",			
		"陈强"]
	let is_Attr=[];	
//	循环读取配置信息 决定调用几次函数			
	for(let i =0 ;i < List_info.length;i++){	
//		定义变量 调用函数并返回值 返回值以json格式插入数据			
		let SumNmeAllRe = JSON.parse(SumNmeAll(List_info[i][0],List_info[i][1],List_info[i][2],List_info[0][3]))
//		循环json值 所有函数运行的返回值
			for(let i = 0 ; i < SumNmeAllRe.length;i++){
//				拆分 合并所有值
				is_Attr.push(SumNmeAllRe[i])
			}	
	}				
//初始化值 单元格定位初始化
	let is_index_excel = 0;
//循环遍历所有姓名
	for(let i = 0 ;i < name_all.length; i++){
//		初始化数据
		//姓名 名 KEY
		let list_name_v = "";
		//结果 值 VALUE
		let list_numebr_v = 0;
//		循环遍历姓名数组 被分析出的姓名
		for(let j = 0; j < is_Attr.length; j++){
//			定义数据类型 组合转换数据为JSON
			let json_text= JSON.parse(is_Attr[j].replace('{','{"').replace(':','":'))
//			判断数据是否存在 所有用户名 是否 包含计算用户名
			if(Object.keys(json_text).toString() == name_all[i]){
//				赋值 给予姓名
				list_name_v = name_all[i]
//				赋值 给予结果 相同结果自动累加
				list_numebr_v += parseFloat(Object.values(json_text).toString())
			}
		}
//		判断是否为有效数据
		if(list_numebr_v != 0){
//		打印结果
		console.log(list_name_v)
		console.log(list_numebr_v)
		console.log("----------------------")
//		变量累加 单元格自提
		is_index_excel++
//		选择单元格
		Worksheets("结果表").Range("A"+is_index_excel).Select()
//		插入姓名数据
		Selection.Formula = list_name_v;
//		选择单元格
		Worksheets("结果表").Range("B"+is_index_excel).Select()
//		插入结果数据
		Selection.Formula = list_numebr_v;
		}
	}
	
}					
					
//函数封装 未构建回调	 拆解提取操作函数				
					
function SumNmeAll(List_Key,List_Value,up_number,end_number){					
		//	变量配置 --- 配置所需条件 ---配置信息		
	let execl_info={				
//		拥有姓名			
		name_all:[				
		"杨镇熊","唐铭","蔡迎宾","柯美杨",			
		"仲友奇","蔡伦荣","苏登富","何元朋",			
		"石宝攀","徐廷银","李勇","胡志斌",			
		"曾连斌","杜灵权","王书国","姚斌",			
		"陈强"],		
//		计算开始序号			
		list_getup:up_number,			
//		计算结尾序号			
		list_end:end_number,			
	}				
					
	let is_Attr =[]				
					
//	循环列表 =========== 获取列表数据 ===============				
	for(;execl_info.list_getup<=execl_info.list_end;execl_info.list_getup++){				
		let list_Key = Worksheets("操作表").Range(List_Key+execl_info.list_getup).Value()			
		let list_Value = Worksheets("操作表").Range(List_Value+execl_info.list_getup).Value()			
//===================姓名提取=======================					
//判断是否为空白效数据					
		if(list_Value!=""){			
			let add_json_key;		
			let add_json_value;		
//			循环姓名列表		
			for(let i=0;i<execl_info.name_all.length;i++){		
//				定义姓名	
				let list_Key_if = execl_info.name_all[i]	
//				判断是否包含姓名	
				if(list_Key.toString().indexOf(list_Key_if)!=-1){	
//					给予数据
					add_json_key = list_Key_if
				}	
			}		
//			给予数据		
			add_json_value = list_Value;		
//			存储数据		
			let add_json = "{"+add_json_key+":"+add_json_value+"}"		
			is_Attr.push(add_json)		
		}			
	}				
//	读取数据				
//console.log(JSON.stringify(is_Attr))					
//返回数据					
return JSON.stringify(is_Attr)					
}					
					
					

结果显示表:
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值