ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 名课 - Power BI数据分析与可视化实战 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
Python自动化办公应用大全 Excel 2021函数公式学习大典 Kutools for Office 套件发布 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
12
返回列表 发新帖
楼主: 都可以的22

[讨论] 给大家练练手

[复制链接]

TA的精华主题

TA的得分主题

发表于 2025-4-30 23:21 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
3557字符,瞬间不想学了

TA的精华主题

TA的得分主题

发表于 2025-5-6 11:25 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
  1. =LET(arr,MAP(D1:AA49,LAMBDA(x,IFS(x="","",COLUMN(x)=4,x,INDIRECT("D"&ROW(x))="","",INDIRECT("D"&ROW(x))="员工姓名",x,OR(OFFSET(x,,,-MIN(ROW(x),8))="得分"),x*1,1,""))),crr,BYROW(arr,LAMBDA(x,TEXTJOIN("-",1,x))),IFNA(TEXTSPLIT(ARRAYTOTEXT(TOCOL(IF(crr="",0/0,crr),3)),"-",","),0))
复制代码

整理成这样,不想弄了,直接打死做表的吧
微信截图_20250506112428.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2025-5-6 15:24 | 显示全部楼层
仗剑天涯0o0 发表于 2025-5-6 11:25
整理成这样,不想弄了,直接打死做表的吧

哈哈哈,要分组按照不同的标准来进行考核,没有办法,只能按照业务的要求来考核
讲道理,这种的用vba可能要简单一些

TA的精华主题

TA的得分主题

发表于 2025-5-6 15:38 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2025-5-6 15:41 | 显示全部楼层
mykitami 发表于 2025-4-30 21:11
这只是才7组员工的数据,假如70组、700组员工呢?

=LET(_a,SCAN(0,D3:D9999,LAMBDA(x,y,IF(y="员工姓名" ...

这才是真正的大佬呀

TA的精华主题

TA的得分主题

 楼主| 发表于 2025-5-6 17:26 | 显示全部楼层
mykitami 发表于 2025-4-30 21:11
这只是才7组员工的数据,假如70组、700组员工呢?

=LET(_a,SCAN(0,D3:D9999,LAMBDA(x,y,IF(y="员工姓名" ...

大佬的有点高深,好难,我抄袭了一下,然后用到了自己的公式上
  1. =LET(
  2.         _arr,D3:v200,
  3.         _idx,SCAN(0,TAKE(_arr,,1),LAMBDA(acc,i,IF(i="员工姓名",acc+1,acc))),
  4.         REDUCE(
  5.                 {"姓名","指标","指标值"},
  6.                 UNIQUE(_idx),
  7.                 LAMBDA(
  8.                         acc,
  9.                         i,
  10.                         LET(
  11.                                 _data,FILTER(_arr,_idx=i),
  12.                                 _df,filter(_data,(TAKE(_data,,1)<>"")*(TAKE(_data,,1)<>"员工姓名")),
  13.                                 _title,drop(tocol(filter(take(_data,1),take(_data,1)<>""),1),1),
  14.                                 _name,take(_df,,1),
  15.                                 _data_ret,tocol(filter(_df,CHOOSEROWS(_data,3)="得分"),,true),
  16.                                 _name_ret,REPTARRAY(_name,COUNTA(_title)),
  17.                                 _title_ret,DROP(REDUCE("",_title,LAMBDA(acc,i,VSTACK(acc,REPTARRAY(TOCOL(i),COUNTA(_name))))),1),
  18.                                 _ret,HSTACK(_name_ret,_title_ret,_data_ret),
  19.                                 vstack(acc,_ret)
  20.                         )
  21.                 )
  22.         )
  23. )
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2025-5-6 17:46 | 显示全部楼层
都可以的22 发表于 2025-5-6 17:26
大佬的有点高深,好难,我抄袭了一下,然后用到了自己的公式上

没有什么难的
用scan进行分组是关键
其他的就好说了

TA的精华主题

TA的得分主题

 楼主| 发表于 2025-5-7 14:50 | 显示全部楼层
mykitami 发表于 2025-5-6 17:46
没有什么难的
用scan进行分组是关键
其他的就好说了

是的,scan分组是关键
我就完全没有这样的思路,抄一抄这么厉害的思路
你里面的lambda函数也好难,我看了下,不大适合我这样的初学者

TA的精华主题

TA的得分主题

发表于 2025-5-7 15:59 | 显示全部楼层
仅供参考:
  1. =REDUCE({"姓名","指标","指标值"},D6:D49,LAMBDA(x,y,LET(h,OFFSET(XLOOKUP("员工姓名",D1:y,D1:y,,,-1),2,1,,18),s,MAP(h,LAMBDA(z,IF(z="得分",TAKE(TOROW(OFFSET(z,-2,,,-3),1),,-1)))),IF((y>0)*(y<>"员工姓名"),VSTACK(x,TRANSPOSE(FILTER(CHOOSE({1;2;3},y,s,OFFSET(h,ROW(y)-ROW(h),)),h="得分"))),x))))
复制代码
图片.jpg



评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2025-5-8 16:19 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 shaowu459 于 2025-5-8 16:23 编辑

最后取当前行数据的地方换种写法:
  1. =REDUCE({"姓名","指标","指标值"},D6:D49,LAMBDA(x,y,LET(h,OFFSET(XLOOKUP("员工姓名",D1:y,D1:y,,,-1),2,,,19),s,MAP(h,LAMBDA(z,IF(z="得分",TAKE(TOROW(OFFSET(z,-2,,,-3),1),,-1)))),IF((y>0)*(y<>"员工姓名"),VSTACK(x,TRANSPOSE(FILTER(CHOOSE({1;2;3},y,s,OFFSET(y,,,,19)),h="得分"))),x))))
复制代码
图片.jpg




评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-12-24 17:12 , Processed in 0.026122 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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