Buscar y Concatenar Datos

Julio:
Necesito algo parecido, a lo que gentilmente me respondieste días atrás.
En una hoja de excel tengo una matriz con una serie de datos, la cual se compone de:
Columna B: datos varios (pero en algunas filas como común denominador, se encuentra la palabra "Total")
Lo que necesito es:
Cada ves que encuentre dentro de la (Columna B) la palabra "Total" se posicione 2 (dos) Columnas hacia la derecha (Columna D) y Concatene los datos que se encuentran en la (Columna B) y (Columna C), y si se pudiera, reemplazar los datos de la (Columna C), por los concatenados que se encuentran en la (Columna D).
Desde ya muchas gracias.

1 Respuesta

Respuesta
1
Como buscar la palabra ya he dado el código anteriormente, hay que agregarle lo que necesitas ahora, el conjunto quedaría algo así:
Sub busca()
Dim texto, enc, fal, valor As String
Dim numero, car As Integer
Range("B1").Select
Do While ActiveCell.Value <> ""
texto = ActiveCell.Text
numero = Len(texto)
car = 1
Do While car <> numero - 5
enc = Mid(texto, car, 5)
fal = Mid(texto, car, 6)
If enc = "Total" And fal = "Total " Then
ActiveCell.Offset(0, -1).Value = Empty
'Ahora unimos el codigo que necesitas, sería para cada vez que encuentre Total
ActiveCell.Offset(0,2).Value=ActiveCell.Value & ActiveCell.Offset(0,1).Value
valor=ActiveCell(0,2).Value
ActiveCell.Offset(0,1).Value=valor

Exit Do
End If
car = car + 1
Loop
ActiveCell.Offset(1, 0).Select
Loop
End Sub
Prueba y me cuentas
>Un saludo
>Julio
Julio:
Funciona bárbaro.
Te pido una ayuda, ya que trate de hacerlo yo, pero no me salio, y esto me sirve para otras planillas
Es lo mismo pero intervienen otras columnas
Columna C: datos varios (pero en algunas filas como común denominador, se encuentra la palabra "Comprobante")
Lo que necesito es:
Cada ves que encuentre dentro de la (Columna C) la palabra "Comprobante" se posicione 2 (dos) Columnas hacia la derecha (Columna E) y Concatene los datos que se encuentran en la (Columna C) y (Columna D)...
Creo que después de esto, y tomando nota de que cambias en el código, me las puedo arreglar solo.
Un abrazo
Pero si casi es lo mismo, te la voy a ir explicando aunque ocupe más la consulta:
Sub busca()
'Declaramos variables
Dim texto, enc, fal, valor As String
Dim numero, car As Integer
'Nos posicionamos en la Col a comprobar
Range("C1").Select
'Abrimos un bucle hasta que se encuentre con la primera celda vacia
Do While ActiveCell.Value <> ""
'Pasamos a una variable el texto de la celda
texto = ActiveCell.Text
'Contamos el numero de caracteres del texto
numero = Len(texto)
'Creamos una variable para ir aumentando hacia la derecha que caracter 'encontramos
car = 1
'Como Total tenía 5 caracteres repito el ciclo hasta que llegue a 5 caracteres, pero 'como Comprobante tiene 11 lo cambiamos
Do While car <> numero - 11
'Pasamos a una variable 11 caracteres de la variable que recoge el texto hasta que 'encontremos la palabra deseada
enc = Mid(texto, car, 11)
'Pasamos a una variable 12 caracteres para saber cuando encontramos el espacio
fal = Mid(texto, car, 11)
'Ahora ponemos la condicion de que cuando las variables coincidan con lo puesto en 'un caso sera Comprobante exacto y en el otro Comprobante con un espacio al final 'para saber que hemos encontrado la palabra exacta y que no estamos por ejemplo 'ante la palabra Comprobantes (palabra que no buscamos)
If enc = "Comprobante" And fal = "Comprobante " Then
'Borramos la celda de la izquierda
ActiveCell.Offset(0, -1).Value = Empty
'Lo siguiente ya lo entiendes que el valor de la col E es la concatenacion de las col C y 'D
ActiveCell.Offset(0,2).Value=ActiveCell.Value & ActiveCell.Offset(0,1).Value
'Pasamos a una variable el valor de la col E
valor=ActiveCell(0,2).Value
'Asignamos el valor de la variable a la col que tu quieras en este caso a la D
ActiveCell.Offset(0,1).Value=valor
'Salimos del ciclo si ha encontrado la palabra a buscar
Exit Do
End If
'Aumentamos un caracter para que siga buscando la palabra completa
car = car + 1
'Repite el ciclo si no ha encontrado la palabra
Loop
'Si termino con la celda bajamos una fila para volver a comenzar el proceso con la 'siguiente
ActiveCell.Offset(1, 0).Select
Loop
End Sub
Espero que ahora ya comprendas el proceso y puedas corregirlo para tus necesidades.
>Un saludo
>Julio

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas