ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 食谱格式转化

[复制链接]

TA的精华主题

TA的得分主题

发表于 2026-1-14 18:02 | 显示全部楼层
这个搞死人,把合并单元格取消了,才搞出来
  1. =LET(
  2.     DATA,
  3.     A5:E213,
  4.     T,
  5.     SCAN(, A5:A213, LAMBDA(X, Y, IF(IFERROR(FIND("星期", Y), 0), Y, X))),
  6.     TT,
  7.     IF(A5:A213 <> "", T, ""),
  8.     TX,
  9.     UNIQUE(T),
  10.     FZ,
  11.     LAMBDA(
  12.         Z,
  13.         LET(
  14.             ARR,
  15.             DROP(FILTER(DATA, TT = Z), 2),
  16.             BRR,
  17.             GROUPBY(
  18.                 CHOOSECOLS(ARR, 1, 2),
  19.                 REGEXP(CHOOSECOLS(ARR, 3), "^[^(([{]+") & "(" &
  20.                     CHOOSECOLS(ARR, 5) & "g)",
  21.                 LAMBDA(x, ARRAYTOTEXT(x)),
  22.                 0,
  23.                 0
  24.             ),
  25.             CRR,
  26.             IFERROR(VSTACK(Z, {"用餐分类","菜名","材料"}, BRR), ""),
  27.             CRR
  28.         )
  29.     ),
  30.     DROP(REDUCE("", TX, LAMBDA(A, B, VSTACK(A, FZ(B)))), 1)
  31. )
复制代码
屏幕截图 2026-01-14 180005.jpg

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2026-1-14 19:06 | 显示全部楼层
沧海一栗666 发表于 2026-1-14 18:02
这个搞死人,把合并单元格取消了,才搞出来

的确难搞,我都搞迷糊了就是弄不好!

TA的精华主题

TA的得分主题

 楼主| 发表于 2026-1-14 19:19 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

你真厉害,感觉应该没有什么问题能难得住你!

TA的精华主题

TA的得分主题

发表于 2026-1-14 22:20 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
感觉也可以搞,只是结果中的星期天与星期一的合并单元格公式无法解决

TA的精华主题

TA的得分主题

发表于 2026-1-15 00:29 | 显示全部楼层
mykitami 发表于 2026-1-14 22:20
感觉也可以搞,只是结果中的星期天与星期一的合并单元格公式无法解决

DROP(REDUCE("", TX, LAMBDA(A, B, VSTACK({“”,A,“”}, FZ(B)))), 1),只能模拟到中间单元格,合并单元格只能VBA了吧

TA的精华主题

TA的得分主题

发表于 2026-1-15 08:13 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 huihuang6669 于 2026-1-15 09:27 编辑
  1. =LET(f,LAMBDA(f,x,LET(t,TAKE(x,1,1),n,IFNA(XMATCH("星期*",DROP(x,2),2)-1,ROWS(x)-2),a,MAP(OFFSET(t,2,,n,2),LAMBDA(m,IF(m="",LOOKUP("々",OFFSET(t,,COLUMN(m)-1):m),m))),c,REGEXP(OFFSET(t,2,2,n),"^\p{sc:Han}+|$")&"("&BYROW(OFFSET(t,2,3,n,4),SUM)&")",d,VSTACK(OFFSET(t,,,2,3)&"",GROUPBY(a,c,LAMBDA(g,TEXTJOIN(",",1,g)),,0,-1,c<>"(0)")),IF(ROWS(x)=n+2,d,VSTACK(d,f(f,DROP(x,n+2)))))),f(f,原食谱!A5:A208))
复制代码
image.png

评分

3

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2026-1-15 12:37 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2026-1-15 14:55 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
yangqianming 发表于 2026-1-15 12:37
我用的wps显示有点儿问题,

我也用的WPS,没问题啊 image.jpg

TA的精华主题

TA的得分主题

发表于 2026-1-15 15:35 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
=LET(arr,SCAN(,原食谱!A5:A231,LAMBDA(x,y,IF(y<>"",y,x))),
     brr,SCAN(,原食谱!B5:B231,LAMBDA(x,y,IF(AND(y="",OFFSET(y,,1)=""),"",IF(y<>"",y,x)))),
     crr,REGEXREPLACE(原食谱!C5:C231,"\K((|【|[).+",""),
     drr,IF(ISNUMBER(原食谱!E5:E231),crr&"("&原食谱!E5:E231&"g)","")&IF(原食谱!E5:E231="小学","材料",""),
     err,SCAN(,arr,LAMBDA(x_,y_,IF(REGEXTEST(y_,"星期"),y_,x_))),
     frr,MATCH(err,{"星期天";"星期一";"星期二";"星期三";"星期四";"星期五";"星期六"},0),
     grr,MATCH(LEFT(arr,1),{"星";"用";"早";"午";"晚"},0),
     hrr,GROUPBY(HSTACK(frr,grr,err,arr,brr&""),drr,ARRAYTOTEXT,0,0,,NOT((原食谱!A5:A231="")*(原食谱!C5:C231=""))),
     DROP(hrr,,3))

image.jpg

评分

3

查看全部评分

TA的精华主题

TA的得分主题

发表于 2026-1-15 21:22 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
M365
=LET(aa,原食谱!A5:A999,cc,原食谱!C5:C999,d,SCAN(,aa,LAMBDA(x,y,IF(LEFT(y,2)="星期",y,x))),c,SCAN("",aa,LAMBDA(x,y,IF(RIGHT(y)="餐",y,x))),m,SCAN("",原食谱!B5:B999,LAMBDA(x,y,IF((y<>"菜名")*(y<>""),y,x))),f,FILTER(HSTACK(d,c,m,cc,原食谱!E5:E999),(cc<>"")*(cc<>"材料")),cl,REGEXEXTRACT(INDEX(f,,4),"\pL+"),ck,cl&"("&TAKE(f,,-1)&"g)",w,TAKE(f,,1),REDUCE(原食谱!A1,UNIQUE(w),LAMBDA(x,y,LET(q,FILTER(HSTACK(INDEX(f,,2),INDEX(f,,3),ck),w=y),IFNA(VSTACK(x,VSTACK(y,{"用餐分类","菜名","材料"},GROUPBY(TAKE(q,,2),TAKE(q,,-1),ARRAYTOTEXT,0,0,-1))),"")))))
image.jpg

评分

2

查看全部评分

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

本版积分规则

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

GMT+8, 2026-4-4 14:22 , Processed in 0.030884 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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