ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 求个乘车路线公式

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-2-20 04:56 | 显示全部楼层
本帖最后由 tmplinshi 于 2024-2-20 13:26 编辑

Snipaste_2024-02-20_13-25-07.png

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-2-20 08:25 | 显示全部楼层
=TOROW(VLOOKUP(TAKE(TEXTSPLIT(F10,,"-"),ROWS(TEXTSPLIT(F10,,"-"))-1)&"-"&DROP(TEXTSPLIT(F10,,"-"),1),IF({1,0},$A$2:$A$17&"-"&$B$2:$B$17,$C$2:$C$17),2,))

技师路线图.zip

11.37 KB, 下载次数: 3

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-2-25 00:48 | 显示全部楼层
Excel 365 可用

  1. =LET(
  2.     array, Sheet1!$A$2:$C$17,
  3.     filterByCol, LAMBDA(findCol, findVal, FILTER(array, INDEX(array, , findCol) = findVal)),
  4.     getPath, LAMBDA(self, foundRows, [curPath],
  5.         REDUCE(
  6.             "",
  7.             SEQUENCE(ROWS(foundRows)),
  8.             LAMBDA(res, i,
  9.                 LET(
  10.                     endStation, INDEX(foundRows, i, 2),
  11.                     roadName,   INDEX(foundRows, i, 3),
  12.                     nextRows, filterByCol(1, endStation),
  13.                     fullPath, IF(
  14.                         NOT(OR(ISERROR(nextRows))),
  15.                         self(self, nextRows, curPath & "-" & roadName),
  16.                         curPath & "-" & roadName
  17.                     ),
  18.                     res & ";" & fullPath
  19.                 )
  20.             )
  21.         )
  22.     ),
  23.     isFirstStation, LAMBDA(row, ISERROR(MATCH(INDEX(row, , 1), INDEX(array, , 2), 0))),
  24.     result, BYROW(
  25.         array,
  26.         LAMBDA(row,
  27.             IF(isFirstStation(row), getPath(getPath, filterByCol(3, INDEX(row, , 3))), "")
  28.         )
  29.     ),
  30.     IFERROR(TEXTSPLIT(CONCAT(result), "-", ";", TRUE), "")
  31. )
复制代码


评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-2-25 01:04 | 显示全部楼层
WPS / EXCLE 可用

  1. =LET(
  2.     array, Sheet1!$A$2:$C$17,
  3.     filterByCol, LAMBDA(findCol, findVal, FILTER(array, INDEX(array, , findCol) = findVal)),
  4.     getPath, LAMBDA(self, foundRows, [i], [curPath],
  5.         LET(
  6.             i, i + 1,
  7.             endStation, INDEX(foundRows, i, 2),
  8.             roadName, INDEX(foundRows, i, 3),
  9.             nextRows, filterByCol(1, endStation),
  10.             fullPath, IF(
  11.                 NOT(OR(ISERROR(nextRows))),
  12.                 self(self, nextRows, 0, curPath & "-" & roadName),
  13.                 curPath & "-" & roadName
  14.             ),
  15.             IF(
  16.                 i < ROWS(foundRows),
  17.                 fullPath & ";" & self(self, foundRows, i, curPath),
  18.                 fullPath
  19.             )
  20.         )
  21.     ),
  22.     isFirstStation, LAMBDA(row, ISERROR(MATCH(INDEX(row, , 1), INDEX(array, , 2), 0))),
  23.     loopRows, LAMBDA(self, [i],
  24.         LET(
  25.             i, i + 1,
  26.             path, if(
  27.                 isFirstStation(INDEX(array, i,)),
  28.                 getPath(getPath, filterByCol(3, INDEX(array, i, 3))),
  29.                 ""
  30.             ),
  31.             IF(i < ROWS(array), path & ";" & self(self, i), path)
  32.         )
  33.     ),
  34.     result, loopRows(loopRows),
  35.     IFERROR(TEXTSPLIT(result, "-", ";", TRUE), "")
  36. )
复制代码


评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-2-25 16:51 | 显示全部楼层
未知路线起始线=TRIM(TEXTSPLIT(TEXTJOIN(" ",,REPT($C$2:$C$17&"-",COUNTIFS($A$2:$A$17,$B$2:$B$17))),,"-"))
未知路线排班线=LET(x,TRIM(TEXTSPLIT(TEXTJOIN("-",,IF(MAX(IF($C$2:$C$17=E6,$B$2:$B$17,""))=$A$2:$A$17,$C$2:$C$17,"")),"-")),IFERROR(INDEX(x,MIN(COUNTA(x),COUNTIF($E$5:$E6,$E6))),""))

image.png

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-3-15 20:28 | 显示全部楼层
咔咔乱坠 发表于 2024-2-18 11:54
递归玩一下
公式管理器
任意单元格

于超人群中学习了不用名称管理器实现递归的办法,将上次方法优化..
  1. =LET(fx,LAMBDA(fx,x,IF(@+ISNA(XLOOKUP(@+x,Sheet1!$A$2:$A$17,Sheet1!$B$2:$C$17)),x,VSTACK(x,fx(fx,XLOOKUP(@+x,Sheet1!$A$2:$A$17,Sheet1!$B$2:$C$17))))),IFNA(REDUCE(G9:M9,A2:A17,LAMBDA(j,k,UNIQUE(VSTACK(j,IFERROR(TOROW(DROP(fx(fx,k),,1),3),""))))),""))
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

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

本版积分规则

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

GMT+8, 2024-11-18 18:43 , Processed in 0.040162 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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