|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
- function 消费汇总(){
- Application.ScreenUpdating = false
- let dicDpm = {}, dicId = {}, data = {}, res = []
- Sheets('信息表').Range('a1').CurrentRegion().slice(1)
- .forEach(([name, id, dpm]) => {
- dicDpm[dpm] ??= [[],0];
- dicDpm[dpm][0].push(id);
- dicDpm[dpm][1]++;
- dicId[id] = name;
- })
- Sheets('订单表').Range('a1').CurrentRegion().slice(1)
- .forEach(({0:time, 1:id, 2:name, 4:dpm, 5:am, 11:meal})=>{
- let date = WorksheetFunction.Text(time, 'yyyy/mm/dd')
- let key = date + dpm;
- data[key] ??= {
- '日期': date,
- '部门': dpm,
- '人数': dicDpm[dpm][1],
- '早餐': {'姓名':[], '人数':0, '金额':0},
- '午餐': {'姓名':[], '人数':0, '金额':0},
- '晚餐': {'姓名':[], '人数':0, '金额':0},
- fill:function(meal,id,am){
- this[meal].姓名.push(id);
- this[meal].人数 ++;
- this[meal].金额 += Number(am)
- }
- };
- data[key].fill(meal,id,am)
- })
- for(let key in data){
- let d= data[key];
- ['早餐','午餐','晚餐'].forEach(meal =>
- d[meal].姓名 = d.部门 == '教职工'
- ? d[meal].姓名.map(id => dicId[id]).toString()
- : d[meal].人数 == 0
- ? null
- : dicDpm[d.部门][0].filter(name => !d[meal].姓名.includes(name)).map(id => dicId[id]).toString()
- );
- res.push([d.日期, d.部门, d.人数,
- d.早餐.姓名, d.早餐.金额, d.早餐.人数,
- d.午餐.姓名, d.午餐.金额, d.午餐.人数,
- d.晚餐.姓名, d.晚餐.金额, d.晚餐.人数]);
- }
- Sheets('汇总表').UsedRange.Offset(3, 0).Clear();
- Sheets('汇总表').Range('a4').Resize(res.length, res[0].length).Value2 = res;
- Sheets('汇总表').Range('a4').Resize(res.length, res[0].length).Borders.LineStyle=xlContinuous;
- Sheets('汇总表').Range('a4').Resize(res.length, res[0].length).HorizontalAlignment =xlHAlignLeft;
- Sheets('汇总表').UsedRange.WrapText = true
- Application.ScreenUpdating = true
- }
复制代码 .....删文件了
|
评分
-
1
查看全部评分
-
|