Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/04/2010, 08:51
assdres
 
Fecha de Ingreso: marzo-2010
Ubicación: Medellín
Mensajes: 9
Antigüedad: 14 años, 8 meses
Puntos: 1
Modificar Cadena

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

Me suma el último dígito de las subcadenas REPETIDAS. Lo que quiero es me me sume no sólo el último número sino los tres últimos

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:42