Jump to content
juanmanuel85

=Si(O* ,copiar columnas con condiciones

Recommended Posts

Buen dia, 

Les escribo porque estoy intentando copiar una columna de direcciones de correo si alguna de tres condiciones se cumple , por lo que recurri al =si(o . pero no resulta.

ej: =si(O(D9="AZUL","ROJO,"AMARILLO");E9;"" ( si d9, dice que es uno de esos colores , que sea igual a la direccion escrita en E9, sino nada.

Pero tambien me preguntaba si existiria alguna macro que lo haga directamente con toda la columna porq tendria que hacer una copia de esa columna  a otro archivo al decir verdad Vi un tutorial en youtube que hacia algo asi pero el tenia que buscar las palabras una por uuna, yo tendria ya las condiciones escritas por las que filtrar los correos.Enfin , cualquier consejo es bienvenido

gracias 

MAILS.xlsx

Share this post


Link to post
Share on other sites

A mi me ha salido esto, pero estoy seguro que a algún formuliano se le ocurrirá algo mas corto y eficiente.

=SI(SI.ERROR(ENCONTRAR("AZUL";D9);0)+SI.ERROR(ENCONTRAR("AMARILLO";D9);0)+SI.ERROR(ENCONTRAR("ROJO";D9);0)>0;E9;"")

Yo utilizo el punto y coma como separador,

 

Share this post


Link to post
Share on other sites
Hace 7 minutos , Snake dijo:

=SI(D9="azul",E9,SI(D9="rojo",E9,SI(D9="amarillo",E9,"")))

Pero si tengo que filtrar 200 direcciones de correo no hay una opcion que lo haga con toda la columna?

por ejemplo si fuera para contar , podria poner =contar.si(A:A;"azul")  y me leera todos los azules, sino necesitaria copiar la columna de direcciones entera a otro archivo y autofiltrarla a gusto

 

Share this post


Link to post
Share on other sites

Ahora si lo quieres con macros puedes hacer algo así:

Dim Final as long
Dim Celda as Range, Rango as Range

'En esta debes cambiar la "X" por la hoja donde vas a correr la macro
Final = HojaX.Range("A" & rows.count).end(xlup).row

Set Rango = HojaX.Range("A2:A" & final)

For each celda in rango
	if celda.value = "Rojo" then
		celda.offset(0,2) = celda.offset(0,1)
	elseif celda.value = "Amarillo" then
		celda.offset(0,2) = celda.offset(0,1)
	elseif celda.value = "Azul" then
		celda.offset(0,2) = celda.offset(0,1)
	end if
next celda

Solo modifica la línea del rango para dejarlo en la columna que lo deseas, y los offset también los debes acoplar a tu proyecto

Share this post


Link to post
Share on other sites

aaquino;

serian dos archivos de excel distintos, quisiera hacerlo con la macro pero no entiendo bien en donde especificar la columna donde quiero que aparezcan los datos copiados. porq "hojaX.range 8A2:A&Final) seria el archivo y la columna que quiero que copie no?

Share this post


Link to post
Share on other sites

¡Hola, a todos!

En fórmula podría ser:

=SI(O(D9={"Azul";"Rojo";"Amarillo"});E9;"")

Si quieres la fórmula puesta, por ejemplo, en la columna A desde la celda A9 hasta la última fila con respecto a la columna D, puedes hacer algo como esto:

Sub FormulaO()
  With Range("A9:A" & Range("D" & Rows.Count).End(xlup).Row)
    .Formula = "=IF(OR(D9={""Azul"";""Amarillo"";""Rojo""},E9,"""")"
    ' .Value = .Value ' Quita el apóstrofo inicial de esta línea si quieres el resultado como valores
  End With
End Sub

¡Bendiciones!

Share this post


Link to post
Share on other sites
Hace 22 horas, juanmanuel85 dijo:

aaquino;

serian dos archivos de excel distintos, quisiera hacerlo con la macro pero no entiendo bien en donde especificar la columna donde quiero que aparezcan los datos copiados. porq "hojaX.range 8A2:A&Final) seria el archivo y la columna que quiero que copie no?

Te explico:

Los objetos en VBA siempre tienen un CodeName, que es diferente al Nombre que tú le colocas a las hojas, el CodeName únicamente lo puedes ver al entrar al editor VBA, por lo general las hojas tienen como CodeName: "Hoja1", "Hoja2", "Hoja3", etc.

Las columnas, por si no lo sabías, están nombradas con letras, ya sea columna "A", "B", "C", "AA", etc.

Cuando te dije que debes cambiar tanto la hoja como la columna me refería a esto, que debes fijarte en el CodeName de la hoja a donde quieres que corra la macro, y la columna como puedes ver en el código que te envié dice Range("A") por lo que deberías cambiar esa "A" por la columna donde están los datos a comparar, que para el ejemplo que dejaste sería la columna "D"

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.

×
×
  • Create New...

Important Information

Privacy Policy

Ayuda Excel - Madrid, Madrid, ES - Valorada por 6254 personas - Aprender Excel - Total: 4.7 / 5