ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 脑子笨笨的,出库汇总也卡主了

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-7-10 17:44 | 显示全部楼层
Again123456 发表于 2024-7-10 16:26
稍微看了一下,你字典的结构设计的不好,一级字典以菜品种和金额合计为key,二级以学生量、学生价、学生金 ...

按那个方法能帮忙写个完整的让我学习一下吗?感谢!

TA的精华主题

TA的得分主题

发表于 2024-7-11 10:19 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
yangqianming 发表于 2024-7-10 17:44
按那个方法能帮忙写个完整的让我学习一下吗?感谢!

2.png 给你示范两列吧,你还是要自己码代码才行。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-7-11 11:55 | 显示全部楼层
Again123456 发表于 2024-7-11 10:19
给你示范两列吧,你还是要自己码代码才行。

我这水平弄不了,慢慢学吧!谢谢!

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-7-11 15:07 | 显示全部楼层
Again123456 发表于 2024-7-11 10:19
给你示范两列吧,你还是要自己码代码才行。

我抄了一下,obj显示为空数组,也不知道原因
image.png

TA的精华主题

TA的得分主题

发表于 2024-7-12 08:55 | 显示全部楼层
yangqianming 发表于 2024-7-11 15:07
我抄了一下,obj显示为空数组,也不知道原因

写个给你看看行不行

  1. function test2(){
  2.         //单价查询字典
  3.         let dicPrice = Sheets("出库明细").Range("j1").CurrentRegion.Value2.reduce((p,[type,price])=>(p[type] = price ,p),{})       
  4.    //出库明细循环   
  5.     let dicType = Sheets("出库明细").Range("a1").CurrentRegion.Value2.slice(1).reduce((p,[ , type , t , s])=>{
  6.             let price =dicPrice[type]
  7.              if(price){
  8.                       p[type] ||= {};  p[type].学生 ||= null; p[type].教师 ||= null;
  9.                       p.合计 ||= {} ;  p.合计.学生 ||= null;      p.合计.教师 ||= null;
  10.                       p[type].学生 = s ? p[type].学生 + s : p[type].学生 ;      
  11.                       p[type].教师 = t ? p[type].教师 + t : p[type].教师 ;
  12.                       p.合计.学生  = s ?  p.合计.学生 + s * price : p.合计.学生;      
  13.                       p.合计.教师  = t ?  p.合计.教师 + t * price : p.合计.教师;
  14.              }else{
  15.                      throw new Error(`\n\n${type}没有价格,程序退出!\n\n`)//当品种没有价格的时候,程序报错退出
  16.              }
  17.             return p
  18.     },{})
  19.     let res = []
  20.    for(let type in dicType){
  21.               let t = dicType[type] , price =dicPrice[type];
  22.               if (type != "合计")  res.push([type,t.学生, t.学生 ? price : null, t.学生 ? t.学生*price : null,
  23.                                                   t.教师, t.教师 ? price : null ,t.教师 ? t.教师*price : null,
  24.                                                   t.学生 + t.教师, (t.学生 + t.教师) ? price : null,t.学生*price + t.教师*price
  25.                                                   ])
  26.    }
  27.    res.push(["合计",null,null,dicType.合计.学生,null,null,dicType.合计.教师,null,null, dicType.合计.学生 + dicType.合计.教师])
  28.    Sheets("出库汇总").Range("a4").Resize(res.length,res[0].length).Value2 = res       
  29. }
复制代码


评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-7-12 12:51 | 显示全部楼层
Again123456 发表于 2024-7-12 08:55
写个给你看看行不行

晚上抽时间抄一遍理解理解......
我改了改好像数据有了但不会对应写入,我还是想学会无奈脑子不好使。

image.jpg
营养餐报账表.rar (39.12 KB, 下载次数: 1)

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-7-15 20:00 | 显示全部楼层

前面HR版主给连续给写了几个代码我有太多都理解不了,
自己给自己出个简单的还是不会,发道论坛上求助,
grf1973老师、Again123456老师都给写好了,就想自己
理解着写一下,Again123456老师的细致耐心指导下
基本写出来了,关于总计行Again123456老师也给了指导
但我没能理解,只好先把总计行用公式算了一下。其实我就
想通过案例理解一下字典的用法。感谢Again123456老师
不厌其烦的指导!其他老师们的相助!
营养餐报账表.rar (38.23 KB, 下载次数: 4)
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-9-8 08:52 , Processed in 0.040387 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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