Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/04/2010, 07:59
assdres
 
Fecha de Ingreso: marzo-2010
Ubicación: Medellín
Mensajes: 9
Antigüedad: 14 años, 8 meses
Puntos: 1
Reto con cadena, ayuda urgente!!

Hola a todos!!

Tengo el siguiente código:

Código vb:
Ver original
  1. Function Comprime(Cadena As String) As String
  2. Dim Matriz1() As String
  3. Dim Matriz2() As String
  4. Dim Cadena1 As String
  5. Dim Cadena2 As String
  6. Dim F As Long
  7.  
  8. Matriz1 = Split(Cadena, ";")
  9. ReDim Matriz2(0)
  10. Matriz2(0) = Matriz1(0)
  11. For F = 1 To UBound(Matriz1)
  12. Cadena1 = Left$(Matriz1(F), InStrRev(Matriz1(F), ":"))
  13. Cadena2 = Left$(Matriz2(UBound(Matriz2)), InStrRev(Matriz2(UBound(Matriz2)), ":"))
  14. If Cadena1 = Cadena2 Then
  15. Matriz2(UBound(Matriz2)) = Cadena1 & Val(Right$(Matriz2(UBound(Matriz2)), _
  16. Len(Matriz2(UBound(Matriz2))) - Len(Cadena1))) + Val(Right$(Matriz1(F), _
  17. Len(Matriz1(F)) - Len(Cadena1)))
  18. Else
  19. ReDim Preserve Matriz2(UBound(Matriz2) + 1)
  20. Matriz2(UBound(Matriz2)) = Matriz1(F)
  21. End If
  22. Next F
  23. Comprime = Join(Matriz2, ";")
  24. End Function

El cual me sirve para hacer este tipo de cosas:

MsgBox Comprime("1:11:26:1;1:22:60:1;1:8:18:1;1:8:18:1;1: 8:18:1")
Resultado: 1:11:26:1;1:22:60:1;1:8:18:3

Apliación de sumas:
MsgBox Comprime("1:11:26:1;1:22:60:1;1:8:18:1;1:8:18:2;1: 8:18:1")
Resultado: 1:11:26:1;1:22:60:1;1:8:18:4

Sumando el último dígito DE LOS QUE ESTÁN REPETIDOS. Ahora necesito modificar ese código para que me sume los tres últimos, excepto el primero.

La idea es esta:

Para: 1:11:26:1;1:22:60:1;1:8:18:1;1:8:18:1;1: 8:18:1

Salida: 1:11:26:1;1:22:60:1;1:24:54:3

Muchas gracias a todos!!!

Última edición por assdres; 03/04/2010 a las 09:44