如何比较重复的列,每个列都有一个数字范围,如果它们的数字范围相互重叠,则返回错误?
Posted
技术标签:
【中文标题】如何比较重复的列,每个列都有一个数字范围,如果它们的数字范围相互重叠,则返回错误?【英文标题】:How can I compare duplicate columns, each with a range of numbers, and return error if their ranges of numbers overlap to each other? 【发布时间】:2021-10-24 06:38:18 【问题描述】:我对 googlesheets 还很陌生,对于之前的糟糕解释,我深表歉意。 正如标题所示,我试图使用 googlesheet 公式计算的是:
-
检查一整列是否有重复项
在这些重复项中,比较它们的数字范围并检查是否有任何重叠的数字
如果任何数字重叠,则返回错误
Google 表格链接:Click Here
在上面的 googlesheet 中,第 13 行会有问题,因为第 13 行的数学第 8 页与第 8 行的第 8 页重叠。
到目前为止,我的想法和尝试是将数字范围拆分为多列,以便我可以将这些列中的每一列与重复的数字范围进行比较,但我不确定从这里开始之后该怎么做.另一个假设是我只需要比较最新的列来检查重复的课程和重叠范围,但我也不确定在这里使用什么。
感谢您尝试任何提示和/或公式。
【问题讨论】:
“如果任何数字重叠,返回错误” - 仅针对该数字或整个单元格? 两者都适用于返回错误,但我相信这可以通过使用条件格式来完成?还是您的意思是重叠的数字? 【参考方案1】:尝试:
="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)), ",$", ), ", ", ","))
【讨论】:
哇,谢谢!感谢您的帮助,我会多次阅读整个公式以完全理解它。 我知道我已经问得够多了,但您认为是否可以调整/简化公式,以便警告列仅在数字重叠时才返回错误?像arrayformula(如果(有一个重叠的数字),“错误”,“”)之类的东西。从这个意义上说,我认为它只有在每行编写公式时才有效。 @Michael 可能,但是让我们说 D14 的输出应该是什么?Error, Error
?如果我们删除中间的 10 也会消失的数字
我觉得消失没问题。对于每一行的警告输出,如果公式得到简化并且需要写入每一行,则只需 Error
(或字符串形式的“err”等)就可以了。
@Michael 查看您的表格:i.stack.imgur.com/kP5j0.png以上是关于如何比较重复的列,每个列都有一个数字范围,如果它们的数字范围相互重叠,则返回错误?的主要内容,如果未能解决你的问题,请参考以下文章