【问题标题】:Column sorting check of subcategory of data数据子类的列排序检查
【发布时间】:2020-09-18 08:19:36
【问题描述】:

我有这个 excel 表,其中包含文章类型及其大小,我想检查每个文章类型的大小是否按升序排序,方法是添加一个指示符为 SORTED 的列,NOT排序,唯一 我想用 Excel 公式

     A      B    C
1**ARTICLE SIZE STATUS**
2   A       10   SORTED
3   B       11   SORTED
4   A       12   SORTED
5   A       14   NOT SORTED
6   C       11   SORTED
7   D       12   UNIQUE
8   C       13   SORTED
9   A       13   NOT SORTED
10  B       15   NOT SORTED
11  B       14   NOT SORTED

我尝试申请 =IF($A2=$A3:$A$11,IF($B2ATTACHED IMAGE OF DATASET

【问题讨论】:

  • 请在您的键盘上找到大写锁定键并将其关闭。在互联网上使用全部大写就像 SHOUTING 一样,被认为是不礼貌的。
  • 你能解释一下什么是排序的,什么不是吗?为什么 C=13 已排序,而 B=15 未排序?与前一个 C 值的差为 2,与前一个 B 值的差也为 2,所以逻辑不是“排序”意味着下一个数字。那么,逻辑是什么??还有,A=10到A=12是排序的,但是A=12到A=14是不是排序的?这是什么逻辑???
  • 排序后的数据应该是A 10,12,13,14 但是因为它的顺序是A 10,12,14,13 A 13 &14 应该标记为未排序

标签: excel formula columnsorting


【解决方案1】:

使用 MAXIFS() 所以你需要 Microsoft365。

C2 中的公式并复制下来:

=IF(COUNTIF($B$2:$B$11;B2)=1;"UNIQUE";IF(OR(MAXIFS($C$1:C1;$B$1:B1;B2)>C2;AND(MAXIFS(C3:$C$11;B3:$B$11;B2)<C2;COUNTIF(B3:$B$11;B2)>0));"NOT SORTED";"SORTED"))

编辑

这里是没有 365 用户的解决方案。 它是一个 MATRIX-FORMULA,所以使用 CTRL+SHIFT+ENTER 输入公式:

C2 使用这个

=IF(COUNTIF($B$2:$B$11;B2)=1;"UNIQUE";IF(OR(IFERROR(MAX($C$1:C1*($B$1:B1=B2));0)>C2;AND(IFERROR(MAX(C3:$C$11*(B3:$B$11=B2));0)<C2;COUNTIF(B3:$B$11;B2)>0));"NOT SORTED";"SORTED"))

对于 C3 使用这个并复制下来:

=IF(COUNTIF($B$2:$B$11;B3)=1;"UNIQUE";IF(OR(IFERROR(MAX($C$2:C2*($B$2:B2=B3));0)>C3;AND(IFERROR(MAX(C4:$C$11*(B4:$B$11=B3));0)<C3;COUNTIF(B4:$B$11;B3)>0));"NOT SORTED";"SORTED"))

【讨论】:

  • 不错。你比我更清楚地理解需求。
  • 感谢您的努力,您能否建议另一种解决方法,因为我无法访问 MAXIFS,因为无法访问 Office 365
  • 我编辑了答案并为无 365 用户完成了解决方案。
  • 非常感谢,克里斯,非常感谢您的帮助!
  • 很高兴。如果答案对您有帮助,也许您可​​以投票并将其设置为已回答。?!
【解决方案2】:

现在使用新的 XLookup 函数可以相对轻松地进行此类查找。

我试图重新设计您的数据样本中的逻辑,但一定有一些错字或思维错误。

场景1:如果“排序”意味着下一个数字只能比前一个数字大1,那么A=12不应该被“排序”。公式是

=IF(XLOOKUP(A2,$A$1:A1,$B$1:B1,IF(COUNTIF(A:A,A2)>1,"sorted","unique"),0,-1)="unique","unique",
IF(XLOOKUP(A2,$A$1:A1,$B$1:B1,"sorted",0,-1)="sorted","sorted",
IF(XLOOKUP(A2,$A$1:A1,$B$1:B1,,0,-1)-B2>1,"sorted","not sorted"
)))

场景 2:但是,如果“排序”意味着该行中的数字大于本文的最后一个数字,则 B=15 应该“排序”。公式是

=IF(XLOOKUP(A2,$A$1:A1,$B$1:B1,IF(COUNTIF(A:A,A2)>1,"sorted","unique"),0,-1)="unique","unique",
IF(XLOOKUP(A2,$A$1:A1,$B$1:B1,"sorted",0,-1)="sorted","sorted",
IF(XLOOKUP(A2,$A$1:A1,$B$1:B1,,0,-1)<B2,"sorted","not sorted"
)))

使用新的 Let() 函数,可以避免重复的 Xlookups。

=LET(
x,XLOOKUP(A2,$A$1:A1,$B$1:B1,IF(COUNTIF(A:A,A2)>1,"sorted","unique"),0,-1),
result,IF(ISTEXT(x),x,IF(x<B2,"sorted","not sorted")),
result)

XLookup 在 Excel 的 Office 365 版本中可用。 Let 目前处于预览阶段,仅在 Office 365 的 Insider/Beta 版本中可用。

【讨论】:

  • 感谢您的努力,您能否建议一种不使用 XLOOKUP 的方法,因为我目前无法访问 Office365
猜你喜欢
  • 1970-01-01
  • 2015-10-02
  • 1970-01-01
  • 1970-01-01
  • 2020-09-16
  • 1970-01-01
  • 2012-05-08
  • 2012-04-06
相关资源
最近更新 更多