vb filtrar valores duplicados
1. El código del segundo piso (se han realizado algunas mejoras, tengo sugerencias para mejorar)
Private Sub Command4_Click()
Dim a () Como cadena, b() Como cadena, i Como larga, j Como larga, c Como larga, l Como larga, f Como booleana
a() = Split(Text1 .Texto, vbCrLf)
l = UBound(a())
2.Texto, vbCrLf)
l = UBound(a()) p>
ReDim b(l) 'Primero preestablece b al valor máximo, porque múltiples ReDim Preserves afectarán la velocidad.
Para i = 0 To l
Para j = 0 To c - 1 'Encuentre a(i) a partir de b, no a(i). Porque b tiene menos elementos y a tiene más elementos. Hay menos consultas para encontrar en b. (En el ejemplo específico, encontrar a requiere 32 ciclos y comenzar con b requiere 30 ciclos:
f = a(i) = b(j)
Si f, entonces salga por
Siguiente
Si no es f entonces
b(c) = a(i)
c = c + 1
End If
Next
ReDim Preserve b(c - 1) 'Elija el final y recorte la matriz a la longitud adecuada de una sola vez. hágalo con demasiada frecuencia, de lo contrario ralentizará el programa
Text1.Text = Join(b, vbCrLf) 'La salida en realidad tiene una función Join más conveniente. End. Sub
2, un método más peculiar, siempre que no pueda haber '#' en la cadena
Private Sub Command3_Click()
Dim a( ) Como cadena, b Como cadena, i Tan largo, l Tan largo
a() = Split(Text1.Text, vbCrLf)
l = UBound(a())
b = "#" & a(0) & "#"
Para i = 1 a l
Si no CBool(InStr(b, "#" & a ( i) & "#")) Entonces
b = b & vbCrLf & "#" & a(i) & "#"
Finalizar si
Siguiente
Text1.Text = Reemplazar(b, "#", "")
End Sub
Nota final: El código anterior es el más fácil de Entiendo el algoritmo uno, pero no es eficiente. Debe recorrer la matriz repetidamente para encontrarlo. Por lo tanto, el código anterior solo es adecuado para escribir tareas o hacer un pequeño experimento temporalmente. Una solución más rápida es usar un árbol binario o un multi. -tree, pero el código es demasiado complejo para escribir un conjunto especializado para ti. Si eres estudiante de informática, deberías aprenderlo.