【问题标题】:Search for two consecutive rows with same data in Excel在 Excel 中搜索具有相同数据的两个连续行
【发布时间】:2017-08-09 20:26:51
【问题描述】:

我有一个包含大约 100 列的数据库,其中包含从 COL A 到 COL H 的相似数据。

我使用 COL J 中的公式在一列中搜索带有“-”的连续两行,并将第二行标记为双精度,如您在 J16 和 J32 上所见。 这种方法很耗时,因为我经常搜索不同的列并且每次都必须更改公式。

我想要像 N3 这样的东西。输入列 ID,当我按下回车键时,我会自动获取带有两个连续“-”的行数,并且我想增加搜索三元组和四元组。

任何帮助将不胜感激。

J2 公式:

=IF(AND(OR(F2=F1,F1="-"),F2="-"),"double","")

image here

【问题讨论】:

  • 有一个涉及索引、代码和计数(后者具有偏移范围)的想法,但我根本无法重新输入您的数据。
  • 谢谢。如何在此处上传 excel 文件?
  • 我认为 excel 公式可能太复杂了……你能用宏代替吗?我认为这会容易得多,在 N3 上使用数据验证并让 Worksheet_Change 事件更改 N5:N7 中的数据
  • col A 和 col H 之间怎么会有 100 列? (我数最多 8 个)。
  • 在您的图像中,我只能看到 J 列的一半,因此错过了解释。

标签: excel excel-formula


【解决方案1】:

在 N5 中计算双打,

=COUNTIFS(INDEX(A:H, 2, CODE(UPPER(N3))-64):INDEX(A:H, MATCH("zzz", INDEX(A:H, , CODE(UPPER(N3))-64)), CODE(UPPER(N3))-64), "-",
          INDEX(A:H, 3, CODE(UPPER(N3))-64):INDEX(A:H, MATCH("zzz", INDEX(A:H, , CODE(UPPER(N3))-64))+1, CODE(UPPER(N3))-64), "-")

这是使用的动态等价物,

=COUNTIFS(G2:G20, "-", G3:G21, "-")

在 N6 中计算三元组,

=COUNTIFS(INDEX(A:H, 2, CODE(UPPER(N3))-64):INDEX(A:H, MATCH("zzz", INDEX(A:H, , CODE(UPPER(N3))-64)), CODE(UPPER(N3))-64), "-",
          INDEX(A:H, 3, CODE(UPPER(N3))-64):INDEX(A:H, MATCH("zzz", INDEX(A:H, , CODE(UPPER(N3))-64))+1, CODE(UPPER(N3))-64), "-",
          INDEX(A:H, 4, CODE(UPPER(N3))-64):INDEX(A:H, MATCH("zzz", INDEX(A:H, , CODE(UPPER(N3))-64))+2, CODE(UPPER(N3))-64), "-")

在 N7 中计算四边形,

=COUNTIFS(INDEX(A:H, 2, CODE(UPPER(N3))-64):INDEX(A:H, MATCH("zzz", INDEX(A:H, , CODE(UPPER(N3))-64)), CODE(UPPER(N3))-64), "-",
          INDEX(A:H, 3, CODE(UPPER(N3))-64):INDEX(A:H, MATCH("zzz", INDEX(A:H, , CODE(UPPER(N3))-64))+1, CODE(UPPER(N3))-64), "-",
          INDEX(A:H, 4, CODE(UPPER(N3))-64):INDEX(A:H, MATCH("zzz", INDEX(A:H, , CODE(UPPER(N3))-64))+2, CODE(UPPER(N3))-64), "-",
          INDEX(A:H, 5, CODE(UPPER(N3))-64):INDEX(A:H, MATCH("zzz", INDEX(A:H, , CODE(UPPER(N3))-64))+3, CODE(UPPER(N3))-64), "-")

如果您需要 quints,您应该能够从中获得灵感。

【讨论】:

  • 就在我打字的时候,我认为 excel 公式可能“太复杂”,你来了!当然!
  • 谢谢你们。这两个公式都很棒。感谢您的帮助。
  • @Jeeped 处理非常大的实际数据我发现如果所有列的结果同时显示在底部会更好,这样我们就可以消除输入框。我为此上传了修改后的图像。请你帮帮我。
  • @Jeeped 数据库转到两个字母列,上面的代码只适用于 1 个字母列。
【解决方案2】:

您想在单元格 N3 中使用您的列条目。您可以使用间接函数来执行此操作。只需将单元格 J2 中的公式更改为:

=IF(AND(OR(F2=F1,F1="-"),F2="-"),"double","")

...这个:

=IF(AND(INDIRECT(N$3&ROW())="-",INDIRECT(N$3&ROW()-1)="-"),"double","")

你可以用同样的方法捕捉三元组和四元组,试试这个公式......它只会从第 4 行开始起作用,结果可能会让人感觉混乱,这取决于你的需要:

=IF(AND(INDIRECT(N$3&ROW()-1)="-",INDIRECT(N$3&ROW())="-"),IF(AND(INDIRECT(N$3&ROW()-2)="-",INDIRECT(N$3&ROW()-1)="-",INDIRECT(N$3&ROW())="-"),IF(AND(INDIRECT(N$3&ROW()-3)="-",INDIRECT(N$3&ROW()-2)="-",INDIRECT(N$3&ROW()-1)="-",INDIRECT(N$3&ROW())="-"),"quadruple","triple"),"double"),"")

【讨论】:

  • 如何将所有列的结果放在底部,如图所示?谢谢
【解决方案3】:

参考下图有:

  1. 辅助单元格 N1:N2N9:N19,其内容有助于使您需要的公式更加简洁。 请参阅下面的解释和公式。

  2. 包含您需要的公式的单元格,使用 SUMPRODUCT 结合某种形式的动态引用。

    1. 单元格N5:N7 给出你想要的结果,但有固定的引用。这些是
      N5: =SUMPRODUCT(($G$2:$G$21="-")*($G$3:$G$22="-"))
      N6: =SUMPRODUCT(($G$2:$G$20="-")*($G$3:$G$21="-")*($G$4:$G$22="-"))
      N7: =SUMPRODUCT(($G$2:$G$19="-")*($G$3:$G$20="-")*($G$4:$G$21="-")*($G$5:$G$22="-"))
      你可以掌握系统学。

    2. 单元格O5:O7 给出相同的结果,使用INDIRECT 而不是固定引用(选项#1 满足您的需要,请参阅this)。这些是
      O5: =SUMPRODUCT( (INDIRECT($N$3&$N$9):INDIRECT($N$3&($N$10-1))="-") *(INDIRECT($N$3&($N$9+1)):INDIRECT($N$3&$N$10)="-") )
      O6: =SUMPRODUCT( (INDIRECT($N$3&$N$9):INDIRECT($N$3&($N$10-2))="-") *(INDIRECT($N$3&($N$9+1)):INDIRECT($N$3&($N$10-1))="-") *(INDIRECT($N$3&($N$9+2)):INDIRECT($N$3&$N$10)="-") )
      你可以掌握系统,写出单元格O7的公式。

    3. 单元格P5:P7 给出相同的结果,使用OFFSET 而不是固定引用(选项#2 满足您的需要,请参阅thisthisthis)。这些是
      P5: =SUMPRODUCT( (OFFSET($A$1,$N$12,$N$14):OFFSET($A$1,$N$13-1,$N$14)="-") *(OFFSET($A$1,$N$12+1,$N$14):OFFSET($A$1,$N$13,$N$14)="-") )
      P6: =SUMPRODUCT( (OFFSET($A$1,$N$12,$N$14):OFFSET($A$1,$N$13-2,$N$14)="-") *(OFFSET($A$1,$N$12+1,$N$14):OFFSET($A$1,$N$13-1,$N$14)="-") *(OFFSET($A$1,$N$12+2,$N$14):OFFSET($A$1,$N$13,$N$14)="-") )
      你可以掌握系统,写出单元格P7的公式。

    4. 可能还有其他选项结合INDIRECTOFFSET(请参阅this)。 Jeeped 涵盖了使用INDEX 的选项(尽管可能不是唯一的变体)。


关于辅助单元格的注意事项: 我建议使用辅助单元格,这也适用于此处发布的其他答案。 当然,您可以移动这些单元格,调整相应的公式。 这里唯一重要的公式是单元格N11=COLUMN(INDIRECT($N$3&"1"))(请参阅thisthis)。 如果您要使用INDEX,单元格N19 可能会很有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-25
    相关资源
    最近更新 更多