Visual Basic para Aplicaciones - Buscar y reemplazar automatizados en Excel con Macros

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil

Buscar y reemplazar automatizados en Excel con Macros

Publicado por Pepi (1 intervención) el 07/11/2015 22:37:47
Hola,
estoy intentando hacer lo siguiente.
Tengo una lista de personas en caracteres alfanuméricos (nombres) a las que quiero asignar valor numérico consecutivo.

Cada persona se repite en un archivo varias veces. De forma que quiero "Buscar" su nombre y "Reemplazarlo" por un número. Y eso que se haga automáticamente cada vez que aparece su nombre y lo mismo para toda la lista de nombres que tengo.

Cada persona a su vez tiene un ID numérico. De forma que quiero asignar esos IDs buscando y reemplazando los nombres en una lista amplia.

Hice lo siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
Sub Actualizar ()
For i=2 To 53
	Sheets ("Lista"). Select
	origen = Cells (i,1)
	destino = Cells (i, 2)
	Sheets ("Datos"). Select
	For j = 2 To 314
		If Cells (j, 1) = origen Then
		    Cells (j, 1) = destino
	Enf If
	Next
Next
End Sub



Pero se bloquea con error de expresión y sintaxis en "Enf If".

El archivo Excel "Lista" tiene la siguiente estructura:

1
2
3
4
5
Buscar      Cambiar por
Cliente1              1
Cliente2              2
Cliente3              3
... hasta Cliente 53


El archivo Excel "Datos" es así:


1
2
3
4
A                         B
Cliente1               Cliente3
Cliente3               Cliente4
etc..

Quiero cambiar los nombres a números para posteriormente graficar las relaciones comerciales entre mis clientes.
Para eso necesito IDs numéricos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 12
Ha aumentado su posición en 2 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Buscar y reemplazar automatizados en Excel con Macros

Publicado por GMG (12 intervenciones) el 10/11/2015 15:57:40
en lugar de poner "enf if" debes poner "end if"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Buscar y reemplazar automatizados en Excel con Macros

Publicado por Alejandro (1 intervención) el 12/11/2015 17:14:26
Creo que entendí lo que queres hacer. En la hoja Datos. en lugar de aparecer el nombre "clientex" que aparezca la ID que está asignada
Existe una manera màs facil que esta. Pero para hacerlo entendible lo hice así.
Cuando quieras utilizar alguna funcion de excel te recomiendo que utilices la opción de grabar macro, hacer manualmente la accion y luego ver el código. te asombraràs cuanto podrás aprender.
Saludos, te dejo el código

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Sub accion()
'verifica cuan grande son tus datos. Te recomendaría que lo colocaras en una tabla
tamano_tabla = Sheets("Lista").Range(Range("A1"), Range("A1").End(xlDown)).Count
 
For i = 2 To tamano_tabla ' Recorre toda tu informacion y asigna lo que queres en las dos variables
    a_reemplazar = Sheets("Lista").Cells(i, 1).Value
    reemplazo = Sheets("Lista").Cells(i, 2).Value
    reemplazar Sheets("Datos").Cells, a_reemplazar, reemplazo ' Corre la funcion de abajo. Que lo que hace en en la Hoja "Datos, "Reemplaza a_reemplazar" por "Reemplazo"
Next i
End Sub
 
Sub reemplazar(Rango As Range, a_reemplazar As Variant, reemplazo As Variant)
On Error GoTo Err:
    Rango.Replace What:=a_reemplazar, Replacement:=reemplazo, LookAt:=xlWhole, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
        Exit Sub
Err:
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar