(Excel)如果列表中的所有项目都相同(列表大小不同),则返回true

时间:2018-07-18 15:51:47

标签: excel indexing dynamic match

我正在尝试根据某个范围内的值是否全部相同来返回TRUE / FALSE的公式。

这部分非常简单,但是我也想有一个动态的查找范围,即我有数百个不同的范围,每个范围都需要此公式,并且它们的大小不同。它们都只是一列,但是它们的长度(行数)不同。因此,我正在考虑某些事情,例如,将识别出列表中最后一项之后有一个空单元格,然后停止搜索。

以下是我正在使用的列表类型的一个示例:

72256
72256
72256
72256
72256

75432
75444

因此,我想要一个公式,该公式将查看第一个列表并返回“ True”(因为所有值都相同,但是对于第二个列表将返回“ False”(因为并非所有值都相同) ),而且我也不必手动指定范围,因为有成百上千个不同的列表(长度不一)。这些列表全部在同一列中,并且全部由相邻行中的值组成(每个列表之间都有一个空单元格。

我有以下公式,并且工作正常,但其中没有动态范围元素:

= SUMPRODUCT(-(FREQUENCY(MATCH(A1:A9,A1:A9,0),ROW(A1:A9)-ROW(A1)+1)> 0))= 1

3 个答案:

答案 0 :(得分:2)

您将能够手动输入公式,还是需要VBA?如果您可以手动进行操作,则可以执行以下操作:

= IF(Count(YourRange)= CountIf(YourRange; FirstOfYourRange); True; False)

基本上,您只是将范围内的项目数与等于第一个的项目数进行比较。如果两者相同,则范围内的所有元素都相同。

答案 1 :(得分:0)

错或错的公式

{=IF(PRODUCT((INDIRECT("A"&E4 &":A"&G4)=INDIRECT("A"&E4))*1),"TRUE","FALSE")}

开始行下的公式(用户设置的第一行)

=F3+1

空白行下的方程式

{=SMALL(IF(INDIRECT("A" & E4 & ":$A$20")="",ROW(INDIRECT("A" & E4 & ":$A$20")),""),1)}

底端的配方

=F4-1

enter image description here

enter image description here

答案 2 :(得分:0)

选择B1并创建一个命名公式:

myRng   Refers to:  =OFFSET(Sheet1!A1,0,0,MATCH(TRUE,(Sheet1!A1:A100 = ""),0)-1)

请注意,寻址处于相对模式。该范围将调整为一个范围,该范围从左侧的第一个单元格开始(在本例中为A1),然后向下延伸直到(但不包括)第一个空白单元格。

通过在与范围左上角相邻的单元格中输入以下公式,它将返回TRUEFALSE

=FREQUENCY(myRng,myRng)=COUNTA(myRng)

动态范围的位置部分取决于创建公式的所选单元格以及命名公式中使用的寻址模式。

因此,如果您希望将结果放在其他地方,通常只需适当地定义myRng

enter image description here