ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 数据按指定品名进行合并

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-3-17 08:53 | 显示全部楼层
本帖最后由 tmplinshi 于 2024-3-17 18:46 编辑

Excel 365 可用
  1. =LET(
  2.     src, A2:B26,
  3.     cat, H1:J11,
  4.     a, SCAN(, INDEX(src, , 1), LAMBDA(x, y, IF(y = "", x, y))),
  5.     b, INDEX(src, , 2),
  6.     arr, IF(SEQUENCE(ROWS(a)) = MATCH(a & b, a & b, 0), b, ""),
  7.     DROP(REDUCE("", arr, LAMBDA(out, x,
  8.         IF(x = "", VSTACK(out, x), LET(
  9.             x, TEXTBEFORE(x, "、",,,, x),
  10.             i, MAX(IF(cat = x, SEQUENCE(, COLUMNS(cat)))),
  11.             c, INDEX(cat, 1, i),
  12.             py, SWITCH(c, "水果", "SG", "办公", "BG", "五金", "WJ"),
  13.             n, COUNT(SEARCH(c & "*", out)) * 2^(py = "WJ") + 1,
  14.             VSTACK(out, IF(i, c & py & n & IF(py = "WJ", "~" & py & n + 1, ""), ""))
  15.         ))
  16.     )), 1)
  17. )
复制代码


image.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-3-17 23:53 来自手机 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
tmplinshi 发表于 2024-3-17 08:53
Excel 365 可用

666,太猛了,前面一个非365的?最新wps?

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-3-21 08:15 | 显示全部楼层

大神  这个要怎么处理呢?A2为原始文本,A6为检测的文本,A9:C9为存放结果的列,这题用递归公式lambda怎么写,不用名称管理器?不用reduce和scan函数

LAMbDA递归解.zip

9.45 KB, 下载次数: 6

TA的精华主题

TA的得分主题

发表于 2024-3-23 23:59 | 显示全部楼层
image.png

  1. =LET(
  2.     srcText, A2,
  3.     findText, A6,

  4.     loop, LAMBDA(fn, [i], [outStr], [outTimes], [outPos],
  5.         LET(
  6.             i, i + 1,
  7.             keyword, MID(findText, i, 1),
  8.             foundPos, IFERROR(FIND(keyword, srcText), 0),

  9.             outStr, outStr & IF(foundPos, keyword, ""),
  10.             outTimes, outTimes + (i > 1),
  11.             outPos, outPos & IF(foundPos, "#" & foundPos, ""),

  12.             IF(
  13.                 i < LEN(findText),
  14.                 fn(fn, i, outStr, outTimes, outPos),
  15.                 HSTACK(outStr, outTimes, outPos)
  16.             )
  17.         )
  18.     ),
  19.    
  20.     loop(loop)
  21. )
复制代码


检测的文本“&#8203;我吃完饭了”前面有一个不可见的字符(编码63),所以是6个字符,递归5次。

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-3-25 12:13 来自手机 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-3-26 17:27 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-18 10:50 , Processed in 0.028320 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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