Ocultar celdas y mostrar celdas mediante una macro
Quiero ver si alguien me puede ayudar a ocultar y tambien mostrar un tipo de columnas en excel, por ejemplo quiero mostrar la siguiente columna del ultimo dato ingresado en en la fila A8 ( de un rango a8:a23) y ocultar las ultimas cuatro columnas de ese dato ingresado.
Ejemplo
Algo así te ocultaría las ultimas 4 columnas con datos de la fila 8
Sub OculCol() UC = Cells(8, 1).End(xlToRight).Column Cells(8, UC).EntireColumn.Hidden = True Cells(8, UC).Offset(0, -1). EntireColumn.Hidden = True Cells(8, UC).Offset(0, -2). EntireColumn.Hidden = True Cells(8, UC).Offset(0, -3). EntireColumn.Hidden = True End Sub
Así para que no haga relajo en la planilla si A8 esta vacío je je
Sub OculCol() If Range("A8") <> "" Then UC = Cells(8, 1).End(xlToRight).Column Cells(8, UC).EntireColumn.Hidden = True Cells(8, UC).Offset(0, -1).EntireColumn.Hidden = True Cells(8, UC).Offset(0, -2).EntireColumn.Hidden = True Cells(8, UC).Offset(0, -3).EntireColumn.Hidden = True Else MsgBox "Parece que no hay datos en A8", vbInformation End If End Sub
muchas gracias estimado, me acabo de dar cuenta que en la pregunta en vez de a8 debería ser fila 8, el tema es que esta es una base que se va rellenando todo los días, avanza según los días del mes, entonces quiero que automáticamente me oculte las columnas anteriores de los últimos cinco datos ingresados en el mes. (de un rango b8:x14), espero que se me haya entendido y muchas gracias de antemano por tu ayuda
Si la celda A8 es porque la búsqueda es sobre la fila 8 y parte de columna A si tu quieres comenzar la búsqueda desde otra columna
Ejemplo quieres que busque la ultifa columna con datos de la fila o a partir de la columna B tendría que ser
UC = Cells(8, 2).End(xlToRight). Column
"Cells(8,2)" = es lo mismo que range("B8") solo que se usa el numero de columna en lugar de la letra
El IF era para que sino encuentra dato en la celda inicial que no prosiga pero si tu siempre tienes datos ahi no la necesitas
En cuanto a las 4 columnas anteriores a la ultima con dato seria asi
Sub OculCol() UC = Cells(8, 2).End(xlToRight).Column Cells(8, UC).offset(0, -1). EntireColumn.Hidden = True Cells(8, UC).Offset(0, -2). EntireColumn.Hidden = True Cells(8, UC).Offset(0, -3). EntireColumn.Hidden = True Cells(8, UC).Offset(0, -4). EntireColumn.Hidden = True End Sub
Estimado y como puedo hacer que me oculte las columnas de la B a la X y que me muestre los últimos cuatro datos que tenga la fila 8.
de antemano muchas gracias
Si lo que quieres es ocultar las columnas desde la B hasta la X es
Sub BXocultas() Range("B:X").EntireColumn.Hidden = True End Sub
si silo quieres ocultar la coumna B y la X crea 2 lineas una que diga ("B:B") y otra que diga ("X:X")
Pero si olcultas la columna, estas olcultado desde la fila1 hasta la ultima fila de excel no puedes ocultar parte de una columna
Lo que si puedes hacer es ocultar las fórmulas que contiene un grupo determinado de celdas dándole a la celda la propiedad "Ocultar" y protegiendo la hoja, aunque no este la celda protegida no podrán ver tu fórmula (no se si tiene que ver con lo que tu quieres pero igual te comento esto xD ja ja ) tu dime si es alguna de estas opciones lo que quieres hacer
¡Gracias! ¿Gracias compadre y como puedo hacer para aprender más de macros tienes algún libro o curso que se bueno para aprender de este tema?
Sinceramente yo voy aprendiendo cada día algo nuevo a medida que respondo preguntas dentro de TodoExpertos je je leo alguna pregunta, sino conozco la respuesta, me informó en Internet, ayudó a la persona y adquiero nuevos conocimientos, así salimos todos favorecidos jeje pero de todas formas tienes muchísimo material en diversas páginas en Internet o youtube
Ok muchas gracias, mira aun no he podido solucionar el problema lo que intente hacer ahora es ocultar las columnas de la b la x, y que después me muestre solamente los últimos cinco datos ocupando la sub oculcol() y cambiando los true por los false, pero el excel no las busca porque parece que cuando esta oculta no puede realizar la operación.
Mira también me ayudaron con esta fórmula
Sub Ocultar_Columnas() Application.ScreenUpdating = False Cells.EntireColumn.Hidden = False c = Cells(10, Columns.Count).End(xlToLeft).Column letra = Evaluate("=SUBSTITUTE(ADDRESS(1," & c - 5 & ",4),""1"","""")") If c > 6 Then Columns("B:" & letra).EntireColumn.Hidden = True End If End Sub
El tema es que yo quiero que oculte de la a:x y aquí me oculta desde el ultimo dato que obtenga esa fila, osea pasado la X y no me sirve, si me puedes ayudar ideal
Y si lo que tu quieres es que te oculte desde la "A" a la "X" porque no simplemente escribes
Sub BXocultas() Range("A:X").EntireColumn.Hidden = True End Sub
Aun no comprendo bien que es lo que quieres hacer...
Con esta línea que estas usando
Cells.EntireColumn.Hidden = False
Haces que todas las columnas que estan ocultas en tu hoja se muestren
Seba, quisiera ver si me puedes ayudar con otro tema lo que pasa es que ahora la columnas que evalúo en vez de tener texto tienen fórmulas por lo cual cuando busca el x1toright, me dirige a una columna que es más allá de lo que necesito que seleccione.
C = Cells(8, 1).End(xlToRight).Column letra = Evaluate("=SUBSTITUTE(ADDRESS(1," & C - 4 & ",4),""1"","""")") If C > 5 Then Columns("B" & letra).EntireColumn.Hidden = Tru
La formula que ocupo es principalmente que me calcule datos si es que cumple con la restricción o no (la restricción es que me calcule el dato si la fecha es igual o menor en la que estamos que la tengo ingresada a lo largo de la fila 5 , desde la columna B a la X. Por ejemplo me calcula todas las columnas desde el 1 de diciembre al 12 de diciembre y las que tengan ingresado desde el 13 de diciembre a fin de mes no las calcula. Si me puede ayudar a hacer un select desde la columna hasta la fecha ocupando la funcion hoy seria de mucha ayuda, quedo atento a tus comentarios.
Saludos.
- Compartir respuesta