在Excel中搜索具有相同数据的两个连续行
我有一个大约100列的数据库,其中包含从a列到H列的类似数据 我使用第J列中的公式在列中搜索带“-”的两个连续行,并将第二行标记为双精度,如J16和J32所示。 这种方法非常耗时,因为我经常搜索不同的列,每次都必须更改公式 我想要N3之类的。输入列ID,当我按enter键时,我将自动获得两个连续“-”的行数,并且我希望增加搜索三倍和四倍 任何帮助都将不胜感激 J2上的公式:在Excel中搜索具有相同数据的两个连续行,excel,excel-formula,Excel,Excel Formula,我有一个大约100列的数据库,其中包含从a列到H列的类似数据 我使用第J列中的公式在列中搜索带“-”的两个连续行,并将第二行标记为双精度,如J16和J32所示。 这种方法非常耗时,因为我经常搜索不同的列,每次都必须更改公式 我想要N3之类的。输入列ID,当我按enter键时,我将自动获得两个连续“-”的行数,并且我希望增加搜索三倍和四倍 任何帮助都将不胜感激 J2上的公式: =IF(AND(OR(F2=F1,F1="-"),F2="-"),"double","") 在N5中计算双倍 =COUN
=IF(AND(OR(F2=F1,F1="-"),F2="-"),"double","")
在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), "-")
如果你需要五分之一,你应该能够从中得到想法
在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), "-")
如果你需要五分之一,你应该能够从中得到想法
您想使用单元格N3中的列条目。您可以使用间接函数来执行此操作。只需将单元格J2中的公式更改为:
=IF(AND(OR(F2=F1,F1="-"),F2="-"),"double","")
=IF(AND(INDIRECT(N$3&ROW())="-",INDIRECT(N$3&ROW()-1)="-"),"double","")
…到此:
=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"),"")
您想在单元格N3中使用列条目。您可以使用间接函数来执行此操作。只需将单元格J2中的公式更改为:
=IF(AND(OR(F2=F1,F1="-"),F2="-"),"double","")
=IF(AND(INDIRECT(N$3&ROW())="-",INDIRECT(N$3&ROW()-1)="-"),"double","")
…到此:
=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"),"")
参考底部的图,有:
N1:N2
和N9:N19
,其内容有助于使所需公式更加简洁。
请参见下面的解释和公式SUMPRODUCT
并结合某种形式的动态引用
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=“-”)
你可以掌握系统学
O5:O7
使用间接的
而不是固定的引用,给出相同的结果(选项#1了解您需要的,请参阅)。这些是
O5
:=SUMPRODUCT(
(间接($3和$9):间接($3和($10-1))=“-”)
*(间接($3和($9+1)):间接($3和$10)=“-”)
)
O6
:=SUMPRODUCT(
(间接($3和$9):间接($3和($10-2))=“-”)
*(间接($3&($9+1)):间接($3&($10-1))=“-”)
*(间接($3和($9+2)):间接($3和$10)=“-”)
)
您可以掌握系统学,并编写单元格
O7
的公式P5:P7
使用偏移量
而不是固定参考,给出相同的结果(选项#2了解所需内容,请参阅或)。这些是
P5
:=SUMPRODUCT(
(抵销($A$1,$N$12,$N$14):抵销($A$1,$N$13-1,$N$14)=“-”)
*(抵销($A$1,$N$12+1,$N$14):抵销($A$1,$N$13,$N$14)=“-”)
)
P6
:=SUMPRODUCT(
(抵销($A$1,$N$12,$N$14):抵销($A$1,$N$13-2,$N$14)=“-”)
*(抵销($A$1,$N$12+1,$N$14):抵销($A$1,$N$13-1,$N$14)=“-”)
*(抵销($A$1,$N$12+2,$N$14):抵销($A$1,$N$13,$N$14)=“-”)
)
您可以掌握系统学,并编写单元格
P7
的公式间接
和偏移
(请参阅)。使用索引
(虽然可能不是唯一的变体)的选项由Jeeped提供关于辅助细胞的注意事项: 我建议使用辅助细胞,这也适用于这里发布的其他答案。 当然,您可以移动这些单元格,调整相应的公式。 这里唯一的非平凡公式是单元格
N11
,=列(间接($N$3&“1”)
(请参阅或)。
如果要使用索引,单元格N19
可能会很有用
参考底部的图,有:
辅助单元格N1:N2
和N9:N19
,其内容有助于使所需公式更加简洁。
请参见下面的解释和公式
包含所需公式的单元格,使用SUMPRODUCT
并结合某种形式的动态引用
单元格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=“-”)
你可以掌握系统学
单元格O5:O7
使用间接的
而不是固定的引用,给出相同的结果(选项#1了解您需要的,请参阅)。这些是
O5
:=SUMPRODUCT(
(间接($3和$9):间接($3和($10-1))=“-”)
*(间接($3和($9+1)):间接($3和$10)=“-”)
)
O6
:=SUMPRODUCT(
(间接($3和$9):间接($3和($10-2))=“-”)
*(间接($3&($9+1)):间接($3&($10-1))=“-”)
*(间接($3和($9+2)