gpt4 book ai didi

excel - 使用 vba 过滤和更新 excel 中的列

转载 作者:行者123 更新时间:2023-12-04 19:46:42 24 4
gpt4 key购买 nike

我有四列:姓名、代码、雇用和解雇。代码列中的值是唯一的。一年中可以多次雇用和解雇某人,但我只需要第一次雇用某人,也只需要最后一次解雇某人。我可以使用 vba 过滤和更新这些列吗?

我拥有的是从 A 到 D 列中的值。我想要的是从 I 到 L 列中的值。

enter image description here

最佳答案

所以,如果您不知道如何编写 VBA 代码,那么您也可以尝试使用 Excel 公式然而以下公式,您肯定需要访问 O365O365 Insiders Beta 版

FORMULA_SOLUTION

F2 单元格中用于获取 唯一名称Codes 的公式>,

=UNIQUE(A2:B20)

H2

单元格中使用的公式
=MINIFS(C2:C20,A2:A20,F2:F6,B2:B20,G2:G6)

I2

单元格中使用的公式
=MAXIFS(D2:D20,A2:A20,F2:F6,B2:B20,G2:G6)

使用 LET() 更容易阅读理解

• 单元格中使用的公式 F9

=LET(u,UNIQUE(A2:A20),
c,UNIQUE(B2:B20),
CHOOSE({1,2,3,4},u,c,
MINIFS(C2:C20,A2:A20,u,B2:B20,c),
MAXIFS(D2:D20,A2:A20,u,B2:B20,c)))

使用LAMBDA()函数创建一个自定义reusable函数并通过 friendly nameLAMBDA() 函数在 Name Manager 中使用并带有 Defined命名HireFire,语法为

=HireFire(array,header)

在哪里,

HireFire = LAMBDA(array,header,
VSTACK(TAKE(header,1,4),
LET(a,INDEX(array,,1),
b,INDEX(array,,2),
c,INDEX(array,,3),
d,INDEX(array,,4),
u,UNIQUE(a),
uc,UNIQUE(b),
HSTACK(u,uc,
MINIFS(c,a,u,b,uc),
MAXIFS(d,a,u,b,uc)))))(A2:D20,A1:D1)

• 因此,单元格中使用的公式 F15

=HireFire(A2:D20,A1:D1)

由于您没有提及您的 Excel 版本,因此您可能正在使用 Excel 201920162013 等等,因此,下面显示了替代方案,

FORMULA_SOLUTION

• 单元格中使用的公式 F2

=IFERROR(INDEX(A$2:A$20,MATCH(0,COUNTIF($F$1:F1,A$2:A$20),0)),"")

上面的公式,是一个数组公式,需要根据你的Excel版本按CTRL + SHIFT + ENTER

G2

单元格中使用的公式
=IF($F2="","",VLOOKUP($F2,$A$2:$D$20,2,0))

H2 单元格中使用的公式 --> 适用于 Excel 2019 及更高版本

=MINIFS(C$2:C$20,$A$2:$A$20,$F2,$B$2:$B$20,$G2)

如果不使用上述任何一个版本,那么,

=MIN(IF(($F2=$A$2:$A$20)*($G2=$B$2:$B$20),$C$2:$C$20,""))

它是一个数组公式,因此需要按CTRL + SHIFT + ENTER并填写!

• 单元格中使用的公式 I2 --> 适用于 Excel 2019 及更高版本

=MAXIFS(D$2:D$20,$A$2:$A$20,$F2,$B$2:$B$20,$G2)

如果不使用上述任何一个版本,那么,

=MAX(IF(($F2=$A$2:$A$20)*($G2=$B$2:$B$20),$D$2:$D$20,""))

它是一个数组公式,因此需要按CTRL + SHIFT + ENTER并填写!

关于excel - 使用 vba 过滤和更新 excel 中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72165381/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com