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

(Excel)如果列表中的所有项目都相同(列表大小不同),则返回true,excel,indexing,dynamic,match,Excel,Indexing,Dynamic,Match,我试图找到一个公式,根据某个范围内的值是否完全相同,返回真/假 这一部分非常简单,但我也希望有一个动态查找范围,也就是说,我有数百个不同的范围,每个范围都需要这个公式,它们的大小不同。它们都只是一列,但长度(行数)不同。因此,我想到了一些东西,例如,识别列表中最后一项后有一个空单元格,并停止搜索 下面是我正在处理的列表类型的一个示例: 72256 72256 72256 72256 72256 75432 75444 因此,我想要一个公式,它可以查看第一个列表并返回“True”(因为所有的值都相

我试图找到一个公式,根据某个范围内的值是否完全相同,返回真/假

这一部分非常简单,但我也希望有一个动态查找范围,也就是说,我有数百个不同的范围,每个范围都需要这个公式,它们的大小不同。它们都只是一列,但长度(行数)不同。因此,我想到了一些东西,例如,识别列表中最后一项后有一个空单元格,并停止搜索

下面是我正在处理的列表类型的一个示例:

72256
72256
72256
72256
72256

75432
75444

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

我有下面的公式,它工作得很好,但它没有包含动态范围元素:


=SUMPRODUCT(-FREQUENCY(匹配(A1:A9,A1:A9,0),行(A1:A9)-行(A1)+1>0))=1

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

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


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

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

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


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

选择B1并创建命名公式:

myRng   Refers to:  =OFFSET(Sheet1!A1,0,0,MATCH(TRUE,(Sheet1!A1:A100 = ""),0)-1)
请注意,寻址处于相对模式。范围将调整为从左侧第一个单元格(在本例中为A1)开始,向下延伸到(但不包括)第一个空白单元格的范围

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

=FREQUENCY(myRng,myRng)=COUNTA(myRng)
动态范围的位置部分由创建公式的选定单元格以及命名公式中使用的寻址模式确定

因此,如果您想在其他地方获得结果,通常只需适当地定义
myRng


选择B1并创建命名公式:

myRng   Refers to:  =OFFSET(Sheet1!A1,0,0,MATCH(TRUE,(Sheet1!A1:A100 = ""),0)-1)
请注意,寻址处于相对模式。范围将调整为从左侧第一个单元格(在本例中为A1)开始,向下延伸到(但不包括)第一个空白单元格的范围

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

=FREQUENCY(myRng,myRng)=COUNTA(myRng)
动态范围的位置部分由创建公式的选定单元格以及命名公式中使用的寻址模式确定

因此,如果您想在其他地方获得结果,通常只需适当地定义
myRng