答案 0 :(得分:0)
此UDF将为您提供特定产品ID的特定选项所需的输出:
Function UDF_ListValues(prodId As Variant, attrib As String, R As Range)
Dim colValues As Collection
Dim curRow As Range
Dim found As Boolean
Dim value As Variant
Dim first As Boolean
If R.Columns.Count <> 3 Then
UDF_ListValues = xlErrNA
Else
Set colValues = New Collection
For Each curRow In R.Rows
If curRow.Cells(1, 1).value = prodId And curRow.Cells(1, 2).value = attrib Then
found = False
For Each value In colValues
If curRow.Cells(1, 3).value = value Then
found = True
Exit For
End If
Next
If Not found Then colValues.Add curRow.Cells(1, 3)
End If
Next
first = True
For Each value In colValues
If first Then
UDF_ListValues = attrib & ":"
first = False
Else
UDF_ListValues = UDF_ListValues & "¦"
End If
UDF_ListValues = UDF_ListValues & value
Next
Set colValues = Nothing
End If
End Function
要获得如示例中的确切输出,您可以在单元格F2中调用此函数,如下所示:
= UDF_ListValues( E2, "Size", $A$2:$C$22 ) & ";" & UDF_ListValues( E2, "Colour", $A$2:$C$22 )
或者您可以轻松修改代码以自动列出所有出现的选项。
答案 1 :(得分:0)
如果您拥有Office 365中的最新更新或正在使用在线应用程序,则可以使用以下数组公式:
="Size:" & TEXTJOIN("|",TRUE,IF(($A$2:$A$12=E2)*($B$2:$B$12="Size"),$C$2:$C$12,"")) & ";Colour:" & TEXTJOIN("|",TRUE,IF(($A$2:$A$12=E2)*($B$2:$B$12="Colour"),$C$2:$C$12,""))
作为数组公式,必须在退出编辑模式而不是Enter或Tab时使用Ctrl-Shift-Enter确认。如果操作正确,Excel会将{}
放在公式周围。
答案 2 :(得分:0)
请尝试这种方法。
Sub Macro()
Dim lngRow As Long
For lngRow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row To 2 Step -1
If StrComp(Range("A" & lngRow), Range("A" & lngRow - 1), vbTextCompare) = 0 Then
If Range("B" & lngRow) <> "" Then
Range("B" & lngRow - 1) = Range("B" & lngRow - 1) & "|" & Range("B" & lngRow)
End If
Rows(lngRow).Delete
End If
Next
End Sub