我是Excel公式的新手,所以任何人都可以帮助我
我有以下元素
+----+---------+------------+
| A | B | C |
| nr | car | model |
| 1 | Ford | Mustang |
| 2 | Ford | Focus |
| 3 | Ford | Focus |
| 4 | Ferrari | 458 |
| 5 | Ferrari | Testarossa |
+----+---------+------------+
我怎样才能得到如下结果
+---+---------+-----------------+
| 1 | Ford | Mustang, Focus |
| 2 | Ferrari | 458, Testarossa |
+---+---------+-----------------+
每个值都是唯一的。我尝试了Vlookup,但它只返回1个值为1的元素。示例:使用福特的VLookup将仅返回第一个结果Mustang,但不返回Focus
如果可能,请仅使用公式:) 我见过类似的问题,但没有答案
答案 0 :(得分:1)
现在,如果你不介意他们在不同的小区,那么:
=IFERROR(INDEX($C$2:$C$6,MATCH(1,IF(($B$2:$B$6=$F1)*(COUNTIF($F1:F1,$C$2:$C$6)=0),1,0),0)),"")
这是一个数组公式,因此必须使用Ctrl-Shift-Enter而不是Enter或Tab确认以退出编辑模式。
答案 1 :(得分:1)
这可以在额外的步骤中完成。因为在你需要一个中间表。
所以在我的例子中,我获取你给出的数据(似乎是为Column car排序),但是假设它没有排序(截图中的未排序数据)。
对未排序的数据进行排序,并在第9-14行中形成表格。在D9中添加一列,在单元格D10中添加以下公式:
=IF(B10=B9,CONCATENATE(VLOOKUP(B9,B9:D10,3,0),", ",C10),C10)
这个公式的作用是同时查找和连接值。
我在第9行和第14行的表格中找不到唯一的条目,第16行的公式。(这只是为了方便)
B16 =SUMPRODUCT(1/COUNTIF($B$10:$B$14,$B$10:$B$14))
在第18-20行(没有任何独特条目可以说明这张表的大小),
B19 =INDEX($B$10:$B$14,MATCH(0,INDEX(COUNTIF($B$18:B18,$B$10:$B$14),0,0),0))
此公式列出colB中的唯一车名。在colC中,你查找汽车名称的最后一个连接值(因为我们之前一直连接,汽车名称的最后一个条目会得到你的结果)
C19 =LOOKUP(2,1/($B$9:$B$14=B19),$D$9:$D$14)
答案 2 :(得分:1)
把它放在D2
中=IF(B2<>B1,C2,IF(C2<>C1,IF(D1="",C2,D1&", "&C2),""))
向下拖动
nr car model ColD
1 Ford Mustang Mustang
2 Ford Focus Mustang, Focus
3 Ford Focus
4 Ferrari 458 458
5 Ferrari Testarossa 458, Testarossa
每辆车最后一次出现的车型都有你想要的数据。
如果您可以杀死A列并使用Excel的删除欺骗功能,这将会容易得多。
如果你想用代码来做,这将有效:
Sub ConcatByMasterColumn()
Dim X As Long, MyString As String
Range("F1:G1").Formula = Array("Car", "Model")
For X = 2 To Range("A" & Rows.Count).End(xlUp).Row + 1
If Range("B" & X) <> Range("B" & X - 1) And X > 2 Then 'MyString = Range("B" & X).Text
Range("F" & Range("F" & Rows.Count).End(xlUp).Offset(1, 0).Row).Formula = Range("B" & X - 1).Text
Range("G" & Range("G" & Rows.Count).End(xlUp).Offset(1, 0).Row).Formula = Right(MyString, Len(MyString) - 2)
MyString = ""
End If
If Range("C" & X) <> Range("C" & X - 1) Then MyString = MyString & ", " & Range("C" & X).Text
Next
End Sub
结果:
Car Model
Ford Mustang, Focus
Ferrari 458, Testarossa