Excel 使用公式或 vlookup 连接

Excel concatenation by using formula or vlookup

我在 excel 工作簿中有两个 sheet。 我需要匹配 SITEID 并将 3 个值连接到 1 的公式,用 / 分隔。 我曾尝试将 Vlookup 与范围一起使用,但未获得实际结果。

第一个 sheet 包含(4 列):

SiteId  Cell    Sector  Bore
MDLH1238    12381   1   10
MDLH1238    12382   2   20
MDLH1238    12383   3   40
MDLH1239    12391   1   60
MDLH1240    12401   1   50
MDLH1240    12402   2   20

第二个 sheet 包含(2 列):

SiteId  Bore
MDLH1238
MDLH1239
MDLH1240    

预期的结果应该是这样的:

SiteId  Bore
MDLH1238 10/20/30
MDLH1239 60 
MDLH1240 50/20

假设每个站点只有 3 个扇区,并使用您的 sheet 名称,并假设您的单元格从 A1 开始,在 Sheet2 中输入这些内容,与站点 ID 相邻:

单元格 B2:

=SUMIFS(Sheet1!$D:$D,Sheet1!$A:$A,A2,Sheet1!$C:$C,1)&"/"&SUMIFS(Sheet1!$D:$D,Sheet1!$A:$A,A2,Sheet1!$C:$C,2)&"/"&SUMIFS(Sheet1!$D:$D,Sheet1!$A:$A,A2,Sheet1!$C:$C,3)

单元格 B3:

=SUMIFS(Sheet1!$D:$D,Sheet1!$A:$A,A3,Sheet1!$C:$C,1)&"/"&SUMIFS(Sheet1!$D:$D,Sheet1!$A:$A,A3,Sheet1!$C:$C,2)&"/"&SUMIFS(Sheet1!$D:$D,Sheet1!$A:$A,A3,Sheet1!$C:$C,3)

单元格 B4:

=SUMIFS(Sheet1!$D:$D,Sheet1!$A:$A,A4,Sheet1!$C:$C,1)&"/"&SUMIFS(Sheet1!$D:$D,Sheet1!$A:$A,A4,Sheet1!$C:$C,2)&"/"&SUMIFS(Sheet1!$D:$D,Sheet1!$A:$A,A4,Sheet1!$C:$C,3)

应该会产生如下内容:

SiteId    Bore
MDLH1238  10/20/40
MDLH1239  60/0/0
MDLH1240  50/20/0

在扇区 2/3 不存在的地方有额外的“/0”条目,但公式变得更长且更难阅读,因此。

编辑:添加处理“/0”的公式

单元格 B2:

=SUMIFS(Sheet1!$D:$D,Sheet1!$A:$A,A2,Sheet1!$C:$C,1)&IF(SUMIFS(Sheet1!$D:$D,Sheet1!$A:$A,A2,Sheet1!$C:$C,2)>0,"/"&SUMIFS(Sheet1!$D:$D,Sheet1!$A:$A,A2,Sheet1!$C:$C,2),"")&IF(SUMIFS(Sheet1!$D:$D,Sheet1!$A:$A,A2,Sheet1!$C:$C,3)>0,"/"&SUMIFS(Sheet1!$D:$D,Sheet1!$A:$A,A2,Sheet1!$C:$C,3),"")

单元格 B3:

=SUMIFS(Sheet1!$D:$D,Sheet1!$A:$A,A3,Sheet1!$C:$C,1)&IF(SUMIFS(Sheet1!$D:$D,Sheet1!$A:$A,A3,Sheet1!$C:$C,2)>0,"/"&SUMIFS(Sheet1!$D:$D,Sheet1!$A:$A,A3,Sheet1!$C:$C,2),"")&IF(SUMIFS(Sheet1!$D:$D,Sheet1!$A:$A,A3,Sheet1!$C:$C,3)>0,"/"&SUMIFS(Sheet1!$D:$D,Sheet1!$A:$A,A3,Sheet1!$C:$C,3),"")

单元格 B4:

=SUMIFS(Sheet1!$D:$D,Sheet1!$A:$A,A4,Sheet1!$C:$C,1)&IF(SUMIFS(Sheet1!$D:$D,Sheet1!$A:$A,A4,Sheet1!$C:$C,2)>0,"/"&SUMIFS(Sheet1!$D:$D,Sheet1!$A:$A,A4,Sheet1!$C:$C,2),"")&IF(SUMIFS(Sheet1!$D:$D,Sheet1!$A:$A,A4,Sheet1!$C:$C,3)>0,"/"&SUMIFS(Sheet1!$D:$D,Sheet1!$A:$A,A4,Sheet1!$C:$C,3),"")

输出:

SiteId    Bore
MDLH1238  10/20/40
MDLH1239  60
MDLH1240  50/20

您希望能够做的是使用“/”作为分隔符连接数组的元素。不幸的是,本机 Excel 不能这样做,但是已经编写了很多好的 VBA 函数,例如描述的那个 here.

所以我建议这个解决方案:-

=StringConcat("/",IF(Sheet1!A:A=A2,Sheet1!D:D,""))

从第二个 sheet 的单元格 B2 开始,并根据需要下拉。这是一个数组公式,必须使用 CtrlShiftEnter.

输入

为了使用StringConcat函数,需要从网页复制代码,按AltF11,select插入|模块,然后粘贴代码。