Excel求和/最大-最小多行,插入新行和删除添加的行

问题描述 投票:0回答:4
我有如下所示的 Excel 数据。 A 列具有 ID,B 列和 C 列具有与 ID 关联的值段,D 列和 E 列是 ID 的一般描述(与 ID 关联,而不是各个段)。该数据约有 600 个 ID,长约 1000 行。

身份证值1值2描述1描述2112.51.8ax1112.31.1ax1111.91.6ax1123.73.5bx2123.91.5bx2132.50.2cx3132.64.1cx31324.8cx3132.71.8cx3
我正在尝试为每个 ID 创建一行。此行将添加 B 列和 C 列中的值,并删除 A 列中 ID 匹配的重复描述。

我尝试过使用 SUMIF,但我不知道如何在整行数据上实现自动化。我相信应该有更好的函数/方法来做到这一点。预期是一个具有唯一 ID、值和描述的表。

身份证值1值2描述1描述2116.74.5ax1127.65.0bx2139.810.9cx3

已编辑


@Ike 下面的解决方案对我有用。我试图为每个 ID 获取最大值 1 和最小值 2。我将 Ike Solution 编辑到下面,但它抛出了 #Value!错误

=LET(data,A1:E10, uIDs, UNIQUE(CHOOSECOLS(data,1,4,5)), aValues, MAKEARRAY(ROWS(uIDs), 1, LAMBDA(r,c, MIN(IF(INDEX(data,,1),INDEX(uIDs,r,1),INDEX(data,,c+1)))) ), bValues, MAKEARRAY(ROWS(uIDs), 1, LAMBDA(j,k, MAX(IF(INDEX(data,,1),INDEX(uIDs,j,1),INDEX(data,,k+1)))) ), CHOOSECOLS(HSTACK(uIDs,aValues, bValues),1,4,5,2,3))
    
excel summary sumifs maxifs
4个回答
1
投票
尝试这个公式:

=LET(data,A2:E10, uIDs, UNIQUE(CHOOSECOLS(data,1,4,5)), sValues,MAKEARRAY(ROWS(uIDs),2,LAMBDA(r,c, SUMIF(INDEX(data,,1),INDEX(uIDs,r,1),INDEX(data,,c+1)))), CHOOSECOLS(HSTACK(uIDs,sValues),1,4,5,2,3))

sValues

 创建每个唯一 ID 的总和。


1
投票
如果适用,可以使用

GROUPBY()

MS365
 配合使用 
Beta 版本。


=CHOOSECOLS(GROUPBY(HSTACK(A1:A10,D1:E10),B1:C10,SUM,3,0),1,4,5,2,3)


MSFT 文档: GROUPBYPIVOTBY


编辑:根据OP的新更新


=CHOOSECOLS(DROP(GROUPBY(HSTACK(A1:A10,D1:E10),B1:C10,HSTACK(MAX,MIN),3,0),1),1,4,5,2,3)


使用一个

LAMBDA()
 辅助函数 
MAKEARRAY()
AGGREGATE()
 函数来获得 
MIN
MAX
 值的所需输出:


=LET( _Data,A2:E10, _Uniq, UNIQUE(CHOOSECOLS(_Data,1,4,5)), _MinMax, MAKEARRAY(ROWS(_Uniq),2,LAMBDA(r,c, INDEX(AGGREGATE({15,14},6, INDEX(HSTACK(INDEX(_Data,,2),INDEX(_Data,,3)),,c)/ (INDEX(_Data,,1)=INDEX(_Uniq,r,1)),1),c))), _Answer, CHOOSECOLS(HSTACK(_Uniq,_MinMax),1,4,5,2,3), VSTACK({"ID","Min","Max","Descr 1","Descr 2"},_Answer))


同样对于

MAX

MIN
 ,需要互换 
AGGREGATE() 函数中的 function_num


测试用例:



0
投票
您可以使用数据透视表功能以及 SUMIF 等公式来汇总数据


0
投票
经过一些阅读,弄清楚了如何使用 maxifs 和 minifs 函数。用下面的代码解决了这个问题(艾克答案的编辑):

=LET(data,A2:A10, uIDs, UNIQUE(CHOOSECOLS(data,1,4,5)), startValues, MAKEARRAY(ROWS(uIDs), 1, LAMBDA(r,c, MINIFS(INDEX(data,,c+1), INDEX(data,,1), INDEX(uIDs,r,1))) ), endValues, MAKEARRAY(ROWS(uIDs), 1, LAMBDA(j,k, MAXIFS(INDEX(data,,k+2), INDEX(data,,1), INDEX(uIDs,j,1))) ), CHOOSECOLS(HSTACK(uIDs,startValues, endValues),1,2,3,4,5))
    
© www.soinside.com 2019 - 2024. All rights reserved.