Jump to content

mjrofra

Members
  • Posts

    2,696
  • Joined

  • Last visited

  • Days Won

    13

Everything posted by mjrofra

  1. Re: Mayor que menor que Hola IPSOfacto, parece que respondí cuando tu respondías aclarando tu problema: Creo que la primera fórmula que sugerí hace lo que quieres, basta con que uses la celda que corresponda para la tasa: =MIN(MAX(A1*[COLOR="blue"]B1[/COLOR];2971);37231)[/CODE]
  2. Re: Mayor que menor que ... y otras más para la colección: =MIN(MAX(A1*1%;2971);37271)[/CODE] ó [CODE]=MIN(MAX(A1*1,01;2971);37271)[/CODE] dependiendo de lo que quieras exactamente. La primera te dará el 1% de A1, la segunda el valor de A1 + el 1%.
  3. Re: Macro que grabe en el Editor de Visual Basic Hola, quizás puedas recorrer todas las hojas del libro en un bucle e irlas agregando al combobox, algo así, por ejemplo: Private Sub UserForm_Initialize() Dim hoja As Excel.Worksheet For Each hoja In ThisWorkbook.Worksheets Hoja1.AddItem hoja.Name Next hoja End Sub[/CODE]
  4. Re: Ventana de formato condicional Edito: Veo que ya Logroastur te dio una muy buena respuesta. Pues no sé cómo lo habrá hecho nuestro amigo Pedro ni a cuál post te refieres . Espero que él vea este tema y te responda. Mientras, puedes seleccionar la fórmula o la parte de la fórmula de muchas formas. Una de ellas, con las flechas en modo de "Modificar", mientras mantienes presionado Shift (Mayús) irás seleccionando la fórmula. También puedes usar las teclas Inicio + Mayus (Shift) + Fin (siempre en modo "Modificar", si lo haces en modo introducir, como ya los has experimentado, lo que harás es seleccionar celdas). Ya teniendo seleccionada la fórmula le das Ctrl + C y ya te debe quedar en el portapapeles para pegarla en donde quieras. Por supuesto, también podrías usar el ratón para seleccionar toda la fórmula .
  5. Re: Ventana de formato condicional Presiona F2 antes de usar las flechas, eso cambiará de modo "Introducir" a modo "Modificar". Puedes ver el modo en el que te encuentras en la barra de estado, parte inferior izquierda de Excel. De manera predeterminada cuando editas una fórmula (sea en una celda, en el administrador de nombres, en un gráfico, en formato condicional, etc.) el modo es "Introducir", que hace que al usar las flechas te desplaces de una celda a otra. Con F2 puedes cambiar de modo y así usar las flechas para desplazarte por la fórmula (sea en una celda, en el administrador de nombres, en un gráfico, en formato condicional, etc.) .
  6. Hola narc61, tuve, el tema ya ha sido discutido en el foro: Al final de ese tema hay un vídeo que te puede ayudar. Basta con que selecciones cualquier celda de tu tabla y le des ordenar (desde donde quieras: menú, botón derecho ¿?). A mi me resulta práctico seleccionar cualquier celda, botón derecho del ratón y seleccionar ordenar.
  7. Re: Necesito una función con booleanos facilita... ... y si definitivamente necesitas una UDF, creo que usar un bucle puede no ser la mejor opción, que suelen ser lentos los bucles en VBA. Quizás puedas usar algo así: Public Function ESLIQUIDO(Dato) As Boolean On Error Resume Next ESLIQUIDO = Range("q:q").Find(what:=Dato, lookat:=xlWhole) Is Nothing End Function[/CODE]
  8. Re: Necesito una función con booleanos facilita... Hola, quizás yo ande perdido, pero no puede evitar sugerir una fórmula (aunque quizás no tenga nada que ver con lo que buscas). En B1 y copias hacia abajo: =ESERROR(COINCIDIR(A1;[COLOR="blue"]Q$1:Q$69[/COLOR];0))[/CODE] Siendo [color=blue]Q$1:Q$69[/color] el rango en donde están los datos a buscar. Estoy usando como separador de argumentos el punto y coma ";", quizás debas cambiarlo por la "," si ese es tu separador de argumentos.
  9. Re: Barra de desplazamiento en grafico .... esto te puede ayudar un poco con la función desref, aunque el vídeo ya no está, la explicación puede ayudarte:
  10. Re: Barra de desplazamiento en grafico Hola xqd29. en Excel hay muchas formas de resolver las cosas. En el archivo encuentras otra opción sin nombres definidos (supongo, puedo estar equivocado, que en el ejemplo de ioyama usa nombres definidos, más si llama la atención sobre los nombres de las series). La ventaja de no usar nombres definidos: las fórmulas y el "truco" quedan a la vista. La desventaja: las fórmulas y el "truco" quedan a la vista. ¡JA! Como ves todo el trabajo sucio lo hace la función Desref, que ya tu consultarás en la ayuda de Excel. Como verás en el archivo, basta con crear una tabla "puente", que es la que pasas a graficar. En esa tabla, por medio de la función desref usando el valor de la barra de desplazamiento, vas trayendo distintos datos de tus datos originales. Hacerlo así es mucho más sencillo y fácil de comprender que hacerlo con nombres definidos. No he revisado el archivo de ioyama, pero me imagino (puedo estar equivocado) que también hace uso de desref. Bueno, espero que esto te ayude un poco a entender, aunque igual hay muchas formas de hacerlos. No me he fijado mucho en el resultado final del gráfico, que está claro que la idea no es hacerte el gráfico, sino como tú mismo pides, ayudarte a entender cómo se hace. Copia de Grafico proyecto.zip
  11. Re: Hallar valores faltantes en un rango Hola Gerson, con el permiso de Antonio (y los demás que han participado en este tema), la intención de mis palabras no era más que poner énfasis en que lo que planteaba era sólo una idea suelta, sin mayor elaboración. Cuando el tiempo me lo permite (y me siento con el ánimo) elaboro más la respuestas, pero este no era el caso... y me parece que hay que motivar al usuario a que explore un poco y no sólo darle la solución, que es como también lo haces tú (planteando a la idea e invitando a la discusión, justo como lo has hecho ahora ). Que el foro no sea un sitio en el que además de muchas soluciones hechas a la medida (lo que no es malo) también se encuentren muchas discusiones e ideas por elaborar, que le dejen algo de trabajo al usuario. Estoy seguro que aunque implique un mayor esfuerzo de parte del usuario elaborar un poco la respuesta, es más provechoso para él. Bueno, no me extiendo más que el tema es de Antonio y va a tener ahora correos informándole de nuevas respuestas que no son propiamente respuestas, jajaaj. Y gracias Gerson por plantear el tema y abrir la discusión .
  12. Hola, en el adjunto van dos archivos, uno con formato condicional (a mi me funciona bien en Excel 2010, no lo he probado en versiones anteriores) y el otro con macro de evento (que no cambia mucho de lo que ya te he sugerido, puedes ver el código en el módulo de la hoja). FormatoII.zip
  13. Re: Problema con macro y protección de celdas. Hola, no he descargado el archivo y no estoy muy seguro de entender, pero depronto quieras desproteger la hoja antes de ejecutar el código y protegerla nuevamente al final del código: Sub Ejemplo() [COLOR="blue"]sheets("Hoja1").Unprotect "Clave"[/COLOR] ' código..... ' código..... ' código..... ' código..... [COLOR="blue"]sheets("Hoja1").Protect "Clave"[/COLOR] End Sub [/CODE]
  14. me parece que algo así te pude poner en camino, a ver si es por ahí: Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Me.Range("f6:m6")) Is Nothing Then If UCase(Target(1, 1)) = "EXCEL" Then With Target.Offset(1).Interior .Pattern = xlPatternLinearGradient .Gradient.Degree = 90 .Gradient.ColorStops.Clear With .Gradient.ColorStops.Add(0) .ThemeColor = xlThemeColorDark1 .TintAndShade = -0.149021881771294 End With With .Gradient.ColorStops.Add(1) .Color = 255 .TintAndShade = 0 End With End With Else Target.Offset(1).Interior.ColorIndex = xlNone End If End If End Sub[/CODE]
  15. Re: Múltiples hipervínculos de una hoja hacia múltiples hipervínculos de otra hoja Hola de nuevo, ten en cuenta que como está la macro, toma el rango de datos a partir de B3, como los tienes en tu archivo. Esto quiere decir que la columna 1 es la B, la 2 la C, la 3 la D, etc. Siendo así, para ingresar el hipervínculo en la columna D (columna 3) de la hoja1 a la columna I (columna 8) de la hoja2, podrías probar algo así (bueno, creo que esto te puede poner en camino, igual has algunas pruebas tu modificando la macro a ver si te va saliendo): Sub Prueba() Const Col_Carac_Gererales = [COLOR="blue"]3[/COLOR] ' Columna D = 3 (B = 1, C = 2, D = 3, etc.) Const Col_Contacto = [COLOR="blue"]8[/COLOR] 'Columna I = 8 Dim rngNombre As Excel.Range With Sheets("Carac Generales").Range("b3").CurrentRegion For Each rngNombre In .Columns(Col_Carac_Gererales).Offset(1).Resize(.Rows.Count - 1).Cells .Hyperlinks.Add Anchor:=rngNombre, _ Address:="", _ SubAddress:="Contacto!" & Cells(rngNombre.Row, Col_Contacto + 1).Address Next rngNombre End With With Sheets("Contacto").Range("b3").CurrentRegion For Each rngNombre In .Columns(Col_Contacto).Offset(1).Resize(.Rows.Count - 1).Cells .Hyperlinks.Add Anchor:=rngNombre, _ Address:="", _ SubAddress:="'Carac Generales'!" & Cells(rngNombre.Row, Col_Carac_Gererales + 1).Address Next rngNombre End With End Sub[/CODE]
  16. hola de nuevo, pues no sé si sea yo, pero no vi nada nuevo en el último archivo que subes, ni siquiera el código que te sugerí. Cuando dices qeu quieres que se aplique a otro rango, ¿te refieres al rango al que se le da formato? Si es así, pues cambia "A2" e ingresa allí el rango que sea (o varios rangos): Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address(0, 0) = "A1" Then If UCase(Target.Value) = "EXCEL" Then ' si el valor de A2 es "Excel" da el color de fondo a los rangos F6:M7 y F10:M12 With Range("[COLOR="blue"]F6:M7,F10:M12[/COLOR]").Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .Color = 255 .TintAndShade = 0 .PatternTintAndShade = 0 End With Else ' si el valor de A2 no es "Excel" quita el color de fondo a los rangos F6:M7 y F10:M12 Range("[COLOR="blue"]F6:M7,F10:M12[/COLOR]").Interior.ColorIndex = xlNone End If End If End Sub[/CODE] No sé si otra vez me esté perdiendo de algo .
  17. Re: Múltiples hipervínculos de una hoja hacia múltiples hipervínculos de otra hoja Hola jumichan, un primer intento, suponiendo que los datos están en el mismo orden y en los mismos rangos (como en el archivo que subiste, es decir, en las dos hojas AB1 va a estar de D4, CD2 va a estar en D5 y así sucesivamente): Sub Prueba() Dim rngNombre As Excel.Range With Sheets("Carac Generales").Range("b3").CurrentRegion For Each rngNombre In .Columns(3).Offset(1).Resize(.Rows.Count - 1).Cells .Hyperlinks.Add Anchor:=rngNombre, _ Address:="", _ SubAddress:="Contacto!" & rngNombre.Address Next rngNombre End With With Sheets("Contacto").Range("b3").CurrentRegion For Each rngNombre In .Columns(3).Offset(1).Resize(.Rows.Count - 1).Cells .Hyperlinks.Add Anchor:=rngNombre, _ Address:="", _ SubAddress:="'Carac Generales'!" & rngNombre.Address Next rngNombre End With End Sub[/CODE]
  18. Re: Hallar valores faltantes en un rango Hola jorge, me alegra saludarte y gracias por tus palabras. ya ves que nada de genialidad por acá, la idea que propongo no hace lo que Antonio busca (no exactamente) . cuándo dices que no te funcionó ¿a qué te refieres? ¿te arroja algún error? Si pudieras ser un poco más específico te lo agradecería. Con el filtro avanzada puedes usar una fórmula (y eso es quizá lo que lo hace muy pontente). El filtro extraerá los datos en cuyo caso la fórmula arroje verdadero. Si copias la fórmula al lado de la tabla en el archivo de Antonio y la copias hacia abajo, verás qué valores extraerá el filtro avanzado. Los que dan como resultado verdadero, que en este caso son aquellos en los que la diferencia entre el valor de esa fila y el de la fila siguiente no es 1 (=Hoja1!E3-Hoja1!E2>1): 2871, 2891 y 2898. Esos no son los valores faltantes, pero el menos nos dice que después de esos valores no sigue el que debería seguir: 2872, 2892 y 2899, respectivamente. Es decir, la macro no arrojaría los valores faltantes, sino aquellos en donde se interrumpe la secuencia. Si la fórmula se deja en la hoja faltantes, pues la macro es una sola línea (ya que no se necesitaría ingresar la fórmula con la macro): Sub VrFaltante2() Range("Hoja1!e:e").AdvancedFilter 2, Range("Faltantes!b1:b2"), Range("Faltantes!a1") End Sub[/CODE] o si se prefiere, se puede ingresar la fórmula con la macro y borrarla luego para no dejar evidencia del "truco": [CODE]Sub VrFaltante2() With Sheets("Faltantes") .Range("b2") = "=Hoja1!E3-Hoja1!E2<>1" Range("Hoja1!e:e").AdvancedFilter 2, .Range("b1:b2"), .Range("a1") .Range("b2").ClearContents End With End Sub[/CODE] A lo mejor yo no he entendido ni jota, jejje, que la verdad no soy muy cuidadoso al leer los planteamiento, trato de leer rápido y responder rápido, que la idea no es dar una solución "hecha a la medida" (aunque veo que últimamente el foro se ha convertido en un repositorio de soluciones hechas a la medida, lo que alegra a muchos usuarios ). Pero bueno, muchos no disponemos del tiempo (ni la intención) para construir soluciones hechas a la medida, sino sólo de dejar planteada alguna idea.... y ahí quede esa idea, habría que trabajar sobre ella para ver si es útil, aunque como dije al principio, igual la macro que tiene Antonio ya hace lo que el quiere , lo mio era mientras conciliaba el sueño.
  19. .... y por si acaso , si para ti es lo mismo "Excel" que "excel" que "eXcel" o que "EXCEL", prueba cambiando: If Target.Value = "excel" Then[/CODE] por [CODE]If UCase(Target.Value) = "EXCEL" Then[/CODE]
  20. Hola ccesar, ¡jja! ya decía yo que me estaba perdiendo de algo. 1-. Para que el código sólo funcione un una hoja, copia el código en el módulo de esa hoja, en el evento change, no en ThisWorkbook. 2-. No es necesario que selecciones por medio de la macro la celda A2. Si cada vez que se ejecute la macro seleccionas con ella la celda A2, pues luego no podrás moverte de ahí. 3-. Puede resultar conveniente que la macro sólo se ejecute al cambiar la celda A1, o la que sea que vayas a usar. Un ejemplo (con el botón derecho del ratón, sobre la pestaña de la hoja en la que quieres el comportamiento, selecciona ver código y copialo en el espacio en blanco): Private Sub Worksheet_Change(ByVal Target As Range) ' Sólo se ejecuta se la celda que se cambió es A1 If Target.Address(0, 0) = "A1" Then ' si el valor en la celda que se cambio es "excel", entonces... If Target.Value = "excel" Then ' le da el formato que sea a la celda A2 With Range("A2").Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .Color = 255 .TintAndShade = 0 .PatternTintAndShade = 0 End With Else ' Si el valor ingresado en la celda A1 no es "excel", le quita el fondo a A2. Range("a2").Interior.ColorIndex = xlNone End If End If End Sub[/CODE]
  21. Re: Hallar valores faltantes en un rango ... y aunque estoy seguro que tu macro funciona muy bien, no más por no perder la práctica y conciliar el sueño , yo me inclinaría por el filtro avanzado, algo así te puede dar una idea alternativa a lo que ya estás haciendo: Sub VrFaltante2() With Sheets("Faltantes") .Range("b2") = "=Hoja1!E3-Hoja1!E2<>1" Range("Hoja1!e:e").AdvancedFilter 2, .Range("b1:b2"), .Range("a1") End With End Sub[/CODE] [b]Edito[/b]: Es un borrador no más, para dejar la idea planteada y que más o menos se entienda como funciona,por si decides usar el filtro avanzado .
  22. Re: Hallar valores faltantes en un rango Hola Antonio, quizás quieras usar finfil = ActiveSheet.Range("E" & Rows.Count).End(xlUp).Row[/CODE] en lugar de [CODE]finfil = ActiveSheet.Range("E95").Row[/CODE] no sé si es ese el problema, que respondo rapidamente .
  23. ... por si acaso, en tu archivo, selecciona A2, vas a la pestaña Inicio > Formato Condicional > Nueva regla > Utilice una fórmula que determine .... e ingresas =$A$1="Excel" y seleccionas el formato que le quieres dar y está. y bienvenido al foro .
  24. Hola CCesar, bienvenido al foro. ¿y por qué no usar formato condicional? ¿qué me estoy perdiendo?
×
×
  • Create New...

Important Information

Privacy Policy