ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1304|回复: 11

[求助] JSA 这样的统计能做吗,求饶大神留步

[复制链接]

TA的精华主题

TA的得分主题

发表于 2022-9-19 23:13 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
11.png

22.png
希望大神代码 简单点我作为学习  来学习学习
附件已上传
统计春夏秋冬.zip (41.32 KB, 下载次数: 16)

TA的精华主题

TA的得分主题

发表于 2022-9-20 07:39 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
肯定能做!!!只是愿不愿意的问题!!!时间问题

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-9-20 18:42 | 显示全部楼层
var ws = ["report", "JSA运行结果"].map(v => Worksheets(v));
        var arr = ws[0].Range("A1").CurrentRegion.Value2.slice(1);//获取每一行 切片成数组,每一行是一个数组
        Console.log(arr.length)
        var m = new Map();
       
        arr.forEach(v => {
                let keys = [/(2022)/.test(v[17]) ? "新款" : v[17], v[16], v[14]].map(w => w);  //v[17]是商品代码  //v[16]小类名称 是女鞋 男鞋   //v[14]] 是季节名称
                Console.log(keys[0])
                !m.has(keys[0]) && m.set(keys[0], new Map());
                let curM = m.get(keys[0]);
                !curM.has(keys[1]) && curM.set(keys[1], new Map());
                Console.log(curM.get(keys[2]))
                if(!curM.has(keys[2])){
                        curM.set(keys[2], [curM.size + 1, keys[2], v[26], v[31]]);
                } else {
                        Console.log("走到这里来")
                        [v[26], v[31]].forEach((n, i) => curM.get(keys[2])[i+2] += n);
                }
        });

代码问题 如何判断时间?

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-9-20 21:30 | 显示全部楼层
ctp_119 发表于 2022-9-20 07:39
肯定能做!!!只是愿不愿意的问题!!!时间问题

大神帮帮忙,让我学习下

TA的精华主题

TA的得分主题

发表于 2022-9-20 22:38 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
很有挑战性啊,适合入门选手练手~我来试试,不过有点慢

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-9-20 23:11 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
冰封气流 发表于 2022-9-20 22:38
很有挑战性啊,适合入门选手练手~我来试试,不过有点慢

谢谢啊 ,非常感谢

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-9-21 00:04 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
function 一键生成(){
        let arr=Sheets.Item("report").Range("a1").CurrentRegion.Value2.slice(1);
        let obj={};
        arr.forEach(x=>{
                let key=(x[5]=="加盟"?"加盟":"直营联营") + "%" + x[16]+"%" + x[14]+ "%" +x[7];
                let temparr=obj[key] || [["序号","商品代码","SKU","今日销售","金额","单价","净销售数量","结算金额","累销售量","累销售量金额","累销单价","订单","批发","售馨率"]];
                let tempar=temparr.find(y=>y[1]==x[17]);
                if (tempar!=null){
                        tempar[2]+=x[24];                                        //销售数量
                        tempar[3]+=x[31];                                        //结算金额
                        tempar[4]=Math.round(tempar[3]/tempar[2],0);                //单价
                }else{
                        temparr.push([temparr.length,x[17],x[18],,,,x[24],x[31],x[31]/x[24]]);
                }
                obj[key]=temparr;
        });
        Sheets.Item("销售统计").Activate();
        Cells.ClearContents();
        let k=-1;
        for (let key in obj){
                let temparr11=obj[key];
                var arr4=key.split("%");//指定分隔符拆分一维数组
                Console.log(arr4[0])
                Console.log(arr4[1])
                Console.log(arr4[2])
                Console.log(arr4[3])
                if(arr4[2]=="春季"&& arr4[0]=="直营联营"&&arr4[3]=="2022"&& arr4[1]=="女鞋"){
                                Range("b1:e1").Offset(0,++k*(temparr11[0].length+1)).Value2=key.split("%");
                Range("a4").Offset(0,k*(temparr11[0].length+1)).Resize(temparr11.length,temparr11[0].length).Value2=temparr11;
                }
       
        }
}
搞了个半成品

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-9-21 02:22 | 显示全部楼层
自己搞了一下,麻烦大神看一下

  1. function 一键生成(){
  2.         let arr=Sheets.Item("report").Range("a1").CurrentRegion.Value2.slice(1);
  3.         let obj={};

  4.        
  5.         var x=new Date((new Date().getTime() - 1));
  6.         timi1=WorksheetFunction.Text(x,"YYYY-MM-DD").toString()

  7.         arr.forEach(x=>{
  8.                 var timi=WorksheetFunction.Text(x[8],"YYYY-MM-DD").toString()
  9.                 var keye = timi==timi1 ?true:false;
  10.                
  11.                 let key=(x[5]=="加盟"?"加盟":"直营联营") + "%" + x[16]+"%" + x[14]+ "%" +x[7];
  12.                 let temparr=obj[key] || [["序号","商品代码","SKU","今日销售","金额","单价","净销售数量","结算金额","累销售量","累销售量金额","累销单价","订单","批发","售馨率"]];
  13.                 let tempar=temparr.find(y=>y[1]==x[17]);
  14.                 if (tempar!=null){
  15.                         if(keye){
  16.                                 tempar[3]+=x[26];        //6                                //销售数量
  17.                                 tempar[4]+=x[31];        //7                        //结算金额
  18.                                 tempar[5]=Math.round(tempar[4]/tempar[3],0);                //单价       
  19.                                 tempar[8]=Math.round(tempar[3]+tempar[6],0);       
  20.                                 tempar[9]=Math.round(tempar[4]+tempar[7],0);
  21.                                 tempar[10]=Math.round(tempar[9]/tempar[8],0);
  22.                        
  23.                         }else{
  24.                                 tempar[6]+=x[26];        //6                                //销售数量
  25.                                 tempar[7]+=x[31];        //7                        //结算金额
  26.                         //        tempar[4]=Math.round(tempar[7]/tempar[6],0);                //单价
  27.                
  28.                         }
  29.                
  30.                 }else{
  31.                         if(keye){
  32.                                 temparr.push([temparr.length,x[17],x[18],x[26],x[31],0,0,0,,]);
  33.                         }else{
  34.                                 temparr.push([temparr.length,x[17],x[18],0,0,0,x[26],x[31],x[26]+x[26],x[31]+x[31],((x[31]+x[31])/(x[26]+x[26]))]);
  35.                         }
  36.                        
  37.                 }
  38.                 obj[key]=temparr;
  39.         });
  40.         Sheets.Item("销售统计").Activate();
  41.         Cells.ClearContents();
  42.         let k=-1;
  43.         for (let key in obj){
  44.                 let temparr11=obj[key];
  45.                 var arr4=key.split("%");//指定分隔符拆分一维数组
  46.                 Console.log(arr4[0])
  47.                 Console.log(arr4[1])
  48.                 Console.log(arr4[2])
  49.                 Console.log(arr4[3])
  50.                 if(arr4[2]=="春季"&& arr4[0]=="直营联营"&&arr4[3]=="2022"&& arr4[1]=="女鞋"){
  51.                                 Range("b1:e1").Offset(0,++k*(temparr11[0].length+1)).Value2=key.split("%");
  52.                 Range("a4").Offset(0,k*(temparr11[0].length+1)).Resize(temparr11.length,temparr11[0].length).Value2=temparr11;
  53.                 }
  54.        
  55.         }
  56. }
复制代码


TA的精华主题

TA的得分主题

发表于 2022-9-21 19:23 | 显示全部楼层
先根据自己不会的部分,简化问题。

TA的精华主题

TA的得分主题

发表于 2022-9-29 15:57 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
这个题你用vba能做吗?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-12-26 03:02 , Processed in 0.046565 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表