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插入|模块,然后粘贴代码。
我在 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插入|模块,然后粘贴代码。