Hola soy Hecaray, Necesito su ayuda por favor

he estado creando una macro que me permita buscar una palabra (rechazo) dentro de una celda en la columna QUE y que me escriba la palabra "autorizado" en la misma fila que encontró la palabra, pero en la columna A. Hasta el momento son solo intentos medio exitosos pues debo buscar esta y otras palabras en 2000 registros. El problema es que los registros crecen todos los días y debo actualizar el estado que registro en la columna A para cada registro.

--------------------------------------------

Señores, para esta pregunta quisiera pedir las disculpas correspondiente por no comentar antes pues hasta hoy pude probar la solución que me proporcionaron la que funcionó a la perfección.

Por el momento he estado revisando la posibilidad de anidar las sentencias condicionales pues ahora necesito encontrar más de una palabra. Es decir:

Si encuentro la palabra "rechazo" o "reversa" en la columna k escribo "autorizado" en la misma fila de la columna A.

Si encuentro la palabra "web" en la columna k escribo "web" en la misma fila de la columna A.

Si encuentro la palabra "web 1" en la columna k escribo "web 1" en la misma fila de la columna A.

Espero me puedan ayudar

1 respuesta

Respuesta
1

Qué pena no dejaste la rutina escrita para ajustarla. La idea sería la siguiente:

-Indicar inicio del recorrido de col que: range("QUE1").select

-Recorrer la col hasta que encuentre una celda vacía:

while activecell <>""

-preguntar si el contenido es alguna de las palabras

dato = activecell.value
select case dato
case is = "web", "web 1"
Range("A" & activecell.row) = dato
case is = "rechazo", "reversa"
Range("A" & activecell.row) = "autorizado"
'otros valores 
End Select
'pasar a celda siguiente
ActiveCell.Offset(1, 0).Select
Wend
End Sub

Solo ajustá las referencias de la celda inicial (fila y col)

PD) Todos los tipos de bucles los encontrarás explicados y ejemplificados en mis manuales de Programación.

Sdos y no olvides finalizar la consulta.

<p>Hola Experto, agradezco tu respuesta y te dejo la macro que me habías indicado la primera vez</p><p>Sub buscar_palabra()<br />'por.dam<br />Set r = Range("QUE:QUE")<br />Set s = r.Find("rechazo")<br />If Not s Is Nothing Then<br />ncell = s.Address: Range("A" &amp; s.Row) = "autorizado"<br />Do: Set s = r.FindNext(s)<br />If Not s Is Nothing And s.Address <> ncell Then _<br />Range("A" &amp; s.Row) = "autorizado"<br />Loop While Not s Is Nothing And s.Address <> ncell<br />Else<br />MsgBox "No hay datos con rechazo", vbInformation, "BUSCAR"<br />End If<br />End Sub</p><p> </p><p>Espero puedas ayudarme</p><p>Muchas gracias</p>
<p>Me podrías indicar como valorizar?</p><p> </p>

No sirve para este caso la macro anterior, aquí vá la nueva completa:

Sub busca_vs_palabras()
'x Elsamatilde
'me posiciono en la 1er celda de la col E
Range("E1").Select
'recorro la col hasta llegar a 1 celda vacía. Fin de rango
While ActiveCell.Value <> ""
'comparo el contenido de la celda y según eso coloco en A el texto
dato = ActiveCell.Value
Select Case dato
Case Is = "web", "web 1"
Range("A" & ActiveCell.Row) = dato
Case Is = "rechazo", "reversa"
Range("A" & ActiveCell.Row) = "autorizado"
'otros valores
End Select
'pasar a celda siguiente
ActiveCell.Offset(1, 0).Select
Wend
'mensaje final
MsgBox "Fin del recorrido!"
End Sub

Cuando termines de leer y copiar esta rutina, buscá el texto o botón que diga FINALIZAR en lugar del que solicita ACLARACIONES como el que acabas de utilizar para dejar este comentario.

Marca una puntuación y presiona el botón.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas