Macro en excel

Estoy haciendo una macro en excel, pero de la celda activa necesito que la compare con un montón de registros, si la encontró que la copie a otro libro en una celda, pero si esta registrada, que la copie a otra diferente celda.
¿Ha por cierto hay un método en el cual me valide el contenido de una celda y si están determinadas palabras me las cambien por otra diferente?
Respuesta
1
El por cierto aquí lo tienes:
Buscar = InputBox("Dato a Buscar", Buscar)
Reempla = InputBox("Dato Reemplazar", Reemplazar)
Cells.Replace What:=Buscar, Replacement:=Reempla, LookAt:=xlPart, _
SearchOrder:=xlByRows
Creo que con esto te será suficiente, en el caso de que no lo sea me dices, pero para mí no es suficiente la otra parte que quieres, me es necesario que me mandes un correo con el archivo o los y más detallado tus requerimientos.
Mi correo es [email protected]
Es muy interesante tu respuesta, pero tal vez no me supe explicar, deseo que una celda POR se compare con un montón de regristros ya predeterminados dentro de la macro, trate de hacerlo con if anidados, y con if elseif, pero los regristros predeterminados son más de 25 y es muy largo, ¿habrá otra forma más sencilla?
' comparacion
ActiveSheet.Select
b = 0
c = 0
h = 0
For b = 1 To con
Range("B" & b).Select
ActiveCell.Copy
If ActiveCell.Select = "Valor 500" Then
          Range("E" & e).Select
          Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlname, SkipBlanks _
          :=False, Transpose:=False
          e = e + 1
ElseIf ActiveCell.Select = "Ventana 2" Then
          Range("E" & e).Select
          Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlname, SkipBlanks _
          :=False, Transpose:=False
          e = e + 1
Else
          Range("H" & h).Select
          Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlname, SkipBlanks _
          :=False, Transpose:=False
           h = h + 1
End If
Y sobre la palabra a remplazar me estaba refiriendo que si encuentra determinadas palabras cambie toda la celda por otras, esto es, la palabra a buscar es v500, en la celda se ve "se encontró un v500, especificar", si encuentra esa palabras que cambien el contenido de la celda por "calle sin numero
muchas gracias por responder. Ojala puedas hallar una solución a mi problema
Para empezar no sé:
       Que es el "con" que tienes en el for
       Dónde las variables toman valores diferentes a 0
       De dónde sale e
Por lo pronto te informo que le hice algunas modificaciones a tu código y creo que ahí tendrás la respuesta, si no es así me avisas, te pongo el código y lo explico a continuación.
b = 0
c = 0
h = 0
For b = 1 To con
Cells(b, 2).Select
If ActiveCell = "Valor 500" Or _
   ActiveCell = "Ventana 2" Or _
   ActiveCell = "Alguno" Or _
   ActiveCell = "Algun otro" Or _
   ActiveCell = "Otro Cualquiera" Or _
   ActiveCell = "Cualquiera" Or _
   ActiveCell = "En fin" Then
  Cells(e, 5) = ActiveCell
  e = e + 1
Else
  Cells(h, 8) = ActiveCell
  h = h + 1
End If
Next
Lo que creo que te será un poco enrredoso, te lo explico
* El valor de la celda activa lo tienes en ActiveCell sin necesidad de copiar, lo puedes evaluar, asignar o igualar, es decir:
Evaluar If ActiveCell="Dato" then esto entrega verdadero o falso
Asignar ActiveCell="Dato" esto asigna el String "Dato"
Igualar c = ActiveCell esto iguala la variable c al valor de ActiveCell
* La forma Cells(Fila,Columna) es apartir de:
       A1= Cells(1,1)
       A2=Cells(2,1)
       B1=Cells(1,2) y así suicesivamente
Y como ya lo viste puedes asignarle variables.
Por otro lado lo de la buscada te lo pongo de esta otra manera:
If ActiveCell.Find(What:="v500") <> "" Then
ActiveCell = "calle sin número"
End If
Donde puedes cambiar en la línea ActiveCell = "calle sin numero" por Cells(Fila,Columna
)="calle sin número"
Si el String "calle sin número" lo quieres en otra celda que no sea la activa.
Bueno pues creo que es todo, si necesitas más ayuda, o me lo haces saber por este medio o me posteas en mi web http://gregorio.aleux.com en la categoría de Macros, un placer ayudarte, hasta pronto.
Oye me encanto tu respuesta, es la que estaba buscando y le hice ayer unas modificaciones ayer a mi macro y ya va quedando y va quedando así:
Sub soft()
' Sacando el nombre de archivo y el numero de filas que contiene
con = 0
Dim nom
nom = ActiveWorkbook.Name
Windows(nom).Activate
Do While Not IsEmpty(ActiveCell)
ActiveCell.Offset(1, 0).Select
con = con + 1
Loop
Range("A1").Activate
' Copiando celdas y comparando que si ya existe no lo copie
m = 6
Dim var, var1 As String
For i = 1 To con
Windows(nom).Activate
var = Range("B" & i).Value
Windows("prueba.xls").Activate
Range("B" & m).Activate
a = 6
bandera = 0
For n = 1 To r
Range("B6").Activate
var1 = Range("B" & a).Value
If var = var1 Then
bandera = 1
Else
ActiveCell.Offset(-1, 0).Select
a = a + 1
End If
Next n
If bandera = 0 Then
Range("B" & m).Activate
ActiveCell.FormulaR1C1 = var
m = m + 1
r = r + 1
End If
Next i
' comparacion
Windows("prueba.xls").Activate
ActiveSheet.Select
b = 0 ' se refiere a la culumna b inicial
c = 0 ' se refiere a la columna c
h = 0 ' se refiere a la columna h
For b = 1 To con
Range("B" & b).Select
ActiveCell.Copy
If ActiveCell = "Valor 500" Or _
ActiveCell = "Ventana 2" Or _
ActiveCell = "Alguno" Or _
ActiveCell = "Algun otro" Or _
ActiveCell = "Otro Cualquiera" Or _
ActiveCell = "Cualquiera" Or _
ActiveCell = "En fin" Then
Cells(c, 5) = ActiveCell
c = c + 1
Else
Cells(h, 8) = ActiveCell
h = h + 1
End If
Next b
End Sub
Aun me falta afinar la comparación, y que cuando busque las palabras, no importen mayúsculas o minúsculas
Muchas gracias por tu ayuda y te seguiré preguntando no lo dudes

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas