excel - repetidos - ¿Cómo elimino los valores duplicados en una celda separada con un/?
macro para detectar datos duplicados (2)
Tengo varias celdas en Excel que tienen lo siguiente:
b1= E4I8/E4I8/E4I8/E4I8
b2=D3B2/B30C1/D3B2/D3B2/D3B2/B30C1
multiple /xxxx/
¿Cómo elimino estas cadenas de texto duplicadas en la misma celda?
Gracias
Esta función utiliza las teclas de un diccionario para crear una lista única de partes a partir de una cadena transferida (agregue una referencia a Microsoft Scripting Runtime
):
Public Function UniqueParts(separator As String, toParse As String) As String
Dim d As New Scripting.Dictionary, part As Variant, i As Integer
For Each part In Split(toParse, separator)
d(part) = 1
Next
UniqueParts = Join(d.Keys, "/")
End Function
Puede usar esta función en una fórmula de Excel:
=UniqueParts("/","E4I8/E4I8/E4I8/E4I8")
o con una referencia de celda:
=UniqueParts("/",B2)
También puede usar esto dentro de una macro que itera sobre un rango de celdas.
Si el uso de VBA puede resolver su problema, propongo la siguiente función: (¡no se requieren referencias!)
Function UniqueFromCell(rngCell, splitString)
Dim myCol As New Collection
Dim itmCol
Dim i As Long
Dim arrTMP As Variant
arrTMP = Split(rngCell, splitString)
For i = 1 To UBound(arrTMP)
On Error Resume Next
myCol.Add arrTMP(i), CStr(arrTMP(i))
On Error GoTo 0
Next i
Dim result
For Each itmCol In myCol
result = result & itmCol & splitString
Next
UniqueFromCell = Left(result, Len(result) - Len(splitString))
End Function
Para llamarlo en Excel necesita poner dos parámetros: celda y marca de separación:
=UniqueFromCell(B4,"/")