Excel 从多个选择中返回最高值

Excel 从多个选择中返回最高值,excel,excel-formula,vba,Excel,Excel Formula,Vba,我得到的数据表如下所示: 根据这些数据,我想制作一张如下所示的表格: 那么,我做了什么才能看到第二张照片呢 在第一张图片的数据中,我搜索了所有前6个数字相同的6位以上的数字。这给了我们2个结果,445566存在3次,112233存在2次 从这里我想找到每个结果的最高百分比,那么对于445566,百分比商店中的最高百分比是多少,即10% 对每家店铺执行此操作后,每6个数字的结果都会有一行,每个店铺的百分比最高 正如你所能想象的,手工做这件事相当耗时。我想知道是否有人知道我该如何加快速度。我

我得到的数据表如下所示:

根据这些数据,我想制作一张如下所示的表格:

那么,我做了什么才能看到第二张照片呢

  • 在第一张图片的数据中,我搜索了所有前6个数字相同的6位以上的数字。这给了我们2个结果,445566存在3次,112233存在2次
  • 从这里我想找到每个结果的最高百分比,那么对于445566,百分比商店中的最高百分比是多少,即10%
  • 对每家店铺执行此操作后,每6个数字的结果都会有一行,每个店铺的百分比最高
正如你所能想象的,手工做这件事相当耗时。我想知道是否有人知道我该如何加快速度。我曾想过尝试使用Vlookup/VBA,但我对这些主题的理解不够,无法解决这个问题(Vlookup的基本知识和几乎不存在的VBA知识)。我想知道你们中是否有人能给我提供正确的方向,或者有什么想法可以让这个过程更容易

提前谢谢

编辑:数据图片1的链接:

您可以使用:

=MAX(IF(ISNUMBER(FIND($A8,$A$2:$A$6)),B$2:B$6,0%))
数组公式按Ctrl+Shift+Enter键而不是按Enter键
并将其向下拖动到同一行中
首先创建以A8开头的6位数字列,例如
A2:A8数字列
B2:B6%商店
更改它以对应第一个表中的数据
保留$for fixed references(固定引用)以使其改变正确的方式,您可以使用:

=MAX(IF(ISNUMBER(FIND($A8,$A$2:$A$6)),B$2:B$6,0%))
数组公式按Ctrl+Shift+Enter键而不是按Enter键
并将其向下拖动到同一行中
首先创建以A8开头的6位数字列,例如
A2:A8数字列
B2:B6%商店
更改它以对应第一个表中的数据

保留$for fixed reference,这样它就可以改变正确的方式了

将以下公式放入cel H2中。使用 Ctrl+Shift+Enter并向下复制

=IFERROR(INDEX(LEFT($A$2:$A$100,6), MATCH(0,COUNTIF($H$1:H1, LEFT($A$2:$A$100,6)), 0)),"")
这将为您提供唯一的6位数字

然后将下一个公式放入单元格I2中使用 再次按住Ctrl+Shift+Enter键。从右往下抄

=MAX(IF(LEFT($A$2:$A$100,6)=$H2,B$2:B$100))

第二个公式将提供每个门店每个唯一编号的最大百分比。

将以下公式放入cel H2中。使用 Ctrl+Shift+Enter并向下复制

=IFERROR(INDEX(LEFT($A$2:$A$100,6), MATCH(0,COUNTIF($H$1:H1, LEFT($A$2:$A$100,6)), 0)),"")
这将为您提供唯一的6位数字

然后将下一个公式放入单元格I2中使用 再次按住Ctrl+Shift+Enter键。从右往下抄

=MAX(IF(LEFT($A$2:$A$100,6)=$H2,B$2:B$100))

第二个公式将提供每个商店每个唯一编号的最大百分比。

在H2:J2中,每个提供的图像

'as an array formula with CSE in H2
=--LEFT(INDEX(A$2:INDEX(A:A, MATCH(1E+99, A:A)), MATCH(0, COUNTIF(H$1:H1, LEFT(A$2:INDEX(A:A, MATCH(1E+99, A:A)), 6)&""), 0)), 6)
'as a standard formula in I2
=MAX(INDEX((B$2:INDEX(F:F, MATCH(1E+99, F:F)))-(--LEFT(A$2:INDEX(A:A, MATCH(1E+99, F:F)), 6)<>H2)*1E+99, , ))
'as a standard formula in J2
=INDEX(A$1:F$1, AGGREGATE(15, 6, COLUMN(A:F)/((--LEFT(A$2:INDEX(A:A, MATCH(1E+99, F:F)), 6)=H2)*COUNTIF(I2, A$2:INDEX(F:F, MATCH(1E+99, F:F)))), 1))
”作为数组公式,在H2中使用CSE
=--左(索引(A$2:INDEX(A:A,匹配(1E+99,A:A)),匹配(0,COUNTIF)(H$1:H1,左(A$2:INDEX(A:A,匹配(1E+99,A:A)),6)和“”,0)),6)
'作为I2中的标准公式
=最大(索引((B$2:索引(F:F,匹配(1E+99,F:F)))-(-左(A$2:索引(A:A,匹配(1E+99,F:F)),6)H2)*1E+99,)
'作为J2中的标准公式
=指数(A$1:F$1,聚合(15,6,列(A:F)/((-左(A$2:A,匹配(1E+99,F:F)),6)=H2)*计数(I2,A$2:INDEX(F:F,匹配(1E+99,F:F))),1))
根据需要填写。添加IFERROR包装,以避免在缺少匹配项时出现错误代码


在H2:J2中,根据提供的图像

'as an array formula with CSE in H2
=--LEFT(INDEX(A$2:INDEX(A:A, MATCH(1E+99, A:A)), MATCH(0, COUNTIF(H$1:H1, LEFT(A$2:INDEX(A:A, MATCH(1E+99, A:A)), 6)&""), 0)), 6)
'as a standard formula in I2
=MAX(INDEX((B$2:INDEX(F:F, MATCH(1E+99, F:F)))-(--LEFT(A$2:INDEX(A:A, MATCH(1E+99, F:F)), 6)<>H2)*1E+99, , ))
'as a standard formula in J2
=INDEX(A$1:F$1, AGGREGATE(15, 6, COLUMN(A:F)/((--LEFT(A$2:INDEX(A:A, MATCH(1E+99, F:F)), 6)=H2)*COUNTIF(I2, A$2:INDEX(F:F, MATCH(1E+99, F:F)))), 1))
”作为数组公式,在H2中使用CSE
=--左(索引(A$2:INDEX(A:A,匹配(1E+99,A:A)),匹配(0,COUNTIF)(H$1:H1,左(A$2:INDEX(A:A,匹配(1E+99,A:A)),6)和“”,0)),6)
'作为I2中的标准公式
=最大(索引((B$2:索引(F:F,匹配(1E+99,F:F)))-(-左(A$2:索引(A:A,匹配(1E+99,F:F)),6)H2)*1E+99,)
'作为J2中的标准公式
=指数(A$1:F$1,聚合(15,6,列(A:F)/((-左(A$2:A,匹配(1E+99,F:F)),6)=H2)*计数(I2,A$2:INDEX(F:F,匹配(1E+99,F:F))),1))
根据需要填写。添加IFERROR包装,以避免在缺少匹配项时出现错误代码


很抱歉,我真的不想重新键入您的所有数据,所以只需搜索maxif或maxifs。同意上面的说法。但按六位数字分组的一种简单方法是使用=LEFT(A2,6),并用它创建一个helper列。是的,很抱歉,但我不知何故无法使表正常工作(即使在遵循“高级帮助”中的确切描述…)。这里是一个数据链接:我知道maxif在我的情况下应该是有用的,但是如果我理解正确的话,还不足以得到图片2的结果?创建一个包含前6位数字的列,然后使用透视表。Scott Craner您的答案是最简单的方法!谢谢!(其他答案也不错,但这对我来说更容易,因为你让Excel完成所有工作)对不起,我真的不想重新键入你的所有数据,所以只需搜索maxif或maxifs。同意上面的说法。但按六位数字分组的一种简单方法是使用=LEFT(A2,6),并用它创建一个helper列。是的,很抱歉,但我不知何故无法使表正常工作(即使在遵循“高级帮助”中的确切描述…)。这里是一个数据链接:我知道maxif在我的情况下应该是有用的,但是如果我理解正确的话,还不足以得到图片2的结果?创建一个包含前6位数字的列,然后使用透视表。Scott Craner您的答案是最简单的方法!谢谢!(其他答案也不错,但这对我来说容易多了,因为你让Excel做所有的工作)我现在不在电脑旁,但我明天早上会试试。会让你知道事情的进展!我现在不在电脑旁,但明天早上我会试试。会让你知道事情的进展!你实际上没有要求关联商店,但我认为你迟早会去。你实际上没有要求关联商店,但我认为你迟早会去。