在Excel中搜索具有相同数据的两个连续行

时间:2017-08-09 20:26:52

标签: excel excel-formula

我有一个大约100列的数据库,其数据类似于从COL A到COL H。

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

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

任何帮助都将受到赞赏。

J2上的公式:

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

image here

3 个答案:

答案 0 :(得分: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), "-")

如果你需要提问,你应该能够从中得到这个想法。

enter image description here

答案 1 :(得分:1)

您想在单元格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"),"")

答案 2 :(得分:0)

参考底部的图,有:

  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的选项(虽然可能不是唯一的变体)。

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

    enter image description here