EXCEL中如何将A列相同项所对应的B列数据按D列要求合并至F列,并且数据间用逗号隔开。
发布网友
发布时间:2022-05-20 05:50
我来回答
共3个回答
热心网友
时间:2023-10-25 22:37
增加两列辅助列G和H列
G2=A2&"#"&COUNTIF(A$2:A2,A2)
H2=IF(COUNTIF(A$2:A2,A2)=1,"",INDEX(H:H,MATCH(A2&"#"&(COUNTIF(A$2:A2,A2)-1),G:G,0),)&",")&B2
G列和H列生成如下:
G H
100*52*16#1 2
100*52*16#2 2,2
100*52*16#3 2,2,1
100*52*25#1 4
100*52*25#2 4,4
100*52*25#3 4,4,5
100*52*25#4 4,4,5,2
100*52*33#1 1
100*54*18#1 4
105*54*16#1 7
105*54*18#1 7
105*54*18#2 7,3
62*40*18#1 1
62*40*18#2 1,1
62*40*18#3 1,1,1
F2=INDEX(H:H,MATCH(D2&"#"&COUNTIF(A:A,D2),G:G,0))
将公式向下拉。
热心网友
时间:2023-10-25 22:37
数据区域以:A2:F10区域为例
C列作为辅助列:
C2单元格输入公式:
=B2&","
格式柄下拉复制公式至C10单元格,然后选取C2:C10单元格区域,鼠标右键-复制-选C2单元格-右键-选择性粘贴-数值-确定
D2单元格公式:
=INDEX(A:A,SMALL(IF(MATCH($A$2:$A$10,$A$2:$A$10,)=ROW($1:$9),ROW($2:$10),4^8),ROW(A1)))&""
数组公式:ctrl+shift+enter组合键结束输入
格式柄下拉复制公式至出现空白
E2单元格公式:
=SUMPRODUCT(($A$2:$A$10=$D2)*$B$2:$B$10)
格式柄下拉复制公式
F2单元格公式:
=LEFT(PHONETIC(INDIRECT("C"&SUMPRODUCT(MAX(($A$2:$A$10=D2)*ROW($A$2:$A$10)))-COUNTIF(A:A,D2)+1&":C"&SUMPRODUCT(MAX(($A$2:$A$10=D2)*ROW($A$2:$A$10))))),LEN(PHONETIC(INDIRECT("C"&SUMPRODUCT(MAX(($A$2:$A$10=D2)*ROW($A$2:$A$10)))-COUNTIF(A:A,D2)+1&":C"&SUMPRODUCT(MAX(($A$2:$A$10=D2)*ROW($A$2:$A$10))))))-1)
格式柄下拉复制公式:
具体引用区域自行修正(把公式里面的10改成最后一行的行号,$1:$9里面的9改成比最后一行少1行的行号)
热心网友
时间:2023-10-25 22:38
我用VBA做了一个,测试成功
操作方法:
宏->VB编辑器
模组->右键-> 创建模组
然后将后面这段copy进去
然后点击上面的小绿三角执行
如果还有不明白,给我留言
Sub ss()
Dim i As Integer '外层循环A列
Dim j As Integer '内层循环D列
Dim cd As Integer '记录每次查找的位置,如果存在保留当前位置,如果不存在当然位置+1放在后面一个位置上
Dim isbool As Boolean '记录在D列是否存在A列的值
cd = 2 '初始值为跳过标题行
For i = 2 To 100
If CStr(Cells(i, 1).Value) = "" Then Exit For
isbool = False
For j = 2 To 100
If CStr(Cells(j, 4).Value) = "" Then Exit For
If CStr(Cells(i, 1).Value) = CStr(Cells(j, 4).Value) Then
cd = j
isbool = True
Exit For
End If
If CStr(Cells(i, 1).Value) <> CStr(Cells(j, 4).Value) Then
isbool = False
cd = j + 1
End If
Next j
If CStr(Cells(cd, 5).Value) = "" Then Cells(cd, 5).Value = 0
If isbool Then
Cells(cd, 5).Value = CStr(CInt(Cells(cd, 5).Value) + CInt(Cells(i, 2).Value))
Cells(cd, 6).Value = Cells(cd, 6).Value & "," & CStr(Cells(i, 2).Value)
Else
Cells(cd, 4).Value = Cells(i, 1).Value
Cells(cd, 5).Value = CStr(Cells(i, 2).Value)
Cells(cd, 6).Value = Cells(i, 2).Value
End If
Next i
End Sub