首页 > 解决方案 > 如何比较重复的列,每个列都有一个数字范围,如果它们的数字范围相互重叠,则返回错误?

问题描述

我对 googlesheets 相当陌生,我为事先糟糕的解释道歉。正如标题所暗示的,我试图使用 googlesheet 公式弄清楚的是:

  1. 遍历整个列以查找重复项
  2. 在这些重复项中,比较它们的数字范围并检查是否有任何重叠的数字
  3. 如果任何数字重叠,则返回错误

谷歌表格链接:点击这里

在上面的 googlesheet 中,第 13 行会有问题,因为第 13 行的数学第 8 页与第 8 行的第 8 页重叠。

到目前为止,我的想法和尝试是将数字范围拆分为多个列,以便我可以将这些列中的每一列与重复的数字范围进行比较,但我不确定从这里之后该怎么做。另一个假设是我只需要比较最新的列来检查重复的课程和重叠范围,但我也不确定在这里使用什么。

我很欣赏任何尝试的提示和/或公式。

标签: arraysgoogle-sheetsexcel-formulaflattengoogle-query-language

解决方案


尝试:

={"Warning"; INDEX(SUBSTITUTE(REGEXREPLACE(IFNA(VLOOKUP(B3:B&"", TRIM(SPLIT(FLATTEN(
 QUERY(QUERY({SEQUENCE(COLUMNS(SPLIT(TEXTJOIN(",", 1, D3:D), ","))),
 QUERY(FLATTEN(IF(IFERROR(SPLIT(D3:D, ","))="",,B3:B)), 
 "where Col1 is not null")&"×", 
 IF(COUNTIFS(QUERY(FLATTEN(IF(IFERROR(SPLIT(D3:D, ","))="",,C3:C&SPLIT(D3:D, ","))),
 "where Col1 is not null"), 
 QUERY(FLATTEN(IF(IFERROR(SPLIT(D3:D, ","))="",,C3:C&SPLIT(D3:D, ","))),
 "where Col1 is not null"), SEQUENCE(COLUMNS(SPLIT(TEXTJOIN(",", 1, D3:D), ","))), 
 "<="&SEQUENCE(COLUMNS(SPLIT(TEXTJOIN(",", 1, D3:D), ","))))>1, "Error,", 
 QUERY(FLATTEN(IF(IFERROR(SPLIT(D3:D, ","))="",,SPLIT(D3:D, ","))), 
 "where Col1 is not null")&",")}, 
 "select max(Col3) group by Col1 pivot Col2"),,9^9)), "×")), 2, 0)), ",$", ), ", ", ","))}

在此处输入图像描述


推荐阅读