F.A.Q.   Regístrese   Perfil     Conectarse 
Foros de Conocimientos
Crear una macro que asigne un nombre a un rango

 
Publicar Nuevo Tema   Responder al Tema    Índice de Foros de ConocimientosWeb -> Informática
Ver tema anterior :: Ver siguiente tema  

Autor

Mensaje

pregunto
Forista


Ubicación: Internet

MensajeMar Dic 19, 2006 12:19 am

Responder citando


A los efectos de crear tablas dinámicas sobre una tabla de datos que constantemente varía (más columnas o más filas) y no tener que preocuparme de actualizar el rango, uso la siguiente formula:

tablaޓREF(Datos!$A$1;0;0;CONTARA(Datos!$A:$A);CONTARA(Datos!$1:$1))

El problema que tengo es que cada vez tengo que definir el nombre "tabla". Me gustaría que me ayudaran a crear una macro que lo hiciera automáticamente.

Volver arriba

Ver perfil del usuario

Galeon
Invitado



MensajeMar Dic 19, 2006 12:23 am

Responder citando


Hola, encontre lo siguiente en la red:

Crear tablas dinámicas sobre una tabla de datos que constantemente varia (mas columnas/filas) y no tener que preocuparme de actualizar el rango, uso la siguiente formula tabla=DESREF(Datos!$A$1;0;0;CONTARA(Datos!$A:$A);CONTARA(Datos!$1:$1))

El problema que tengo es que cada vez tengo que definir el nombre "tabla" es que la hoja en donde están los datos no siempre tiene el mismo nombre (en este caso es "Datos!")

Supongo que se debe a que -también- el libro donde esta la 'futura' tabla es distinto de el del trabajo 'anterior' en vba puedes definir nombres usando en la 'formulación' las funciones en ingles y un estilo de referencia R1C1

1) si necesitas crear el nombre haciendo referencia a la hoja 'activa' [que es una referencia 'por omision' en vba]...
[excel se encarga de 'completar' la formulacion con el nombre de la hoja activa] Smile)
Sub DefinirNombreEnHojaActiva()
If TypeName(ActiveSheet) <> "Worksheet" Then Exit Sub
ActiveWorkbook.Names.Add _
Name:="Tabla", _
RefersToR1C1:="=Offset(r1c1,0,0,CountA(c1),CountA(r1))"
End Sub

2) si necesitas crear el nombre con referencia a alguna hoja en especial [se sustituye la referencia si el nombre existe]...
Sub DefinirNombreEnLibroActivo()
Dim Hoja As String: Hoja = Worksheets(3).Name
ActiveWorkbook.Names.Add _
Name:="Tabla", _
RefersToR1C1:="=Offset(" & _
Hoja & "!r1c1,0,0,CountA(" & _
Hoja & "!c1),CountA(" & _
Hoja & "!r1))"
End Sub

Volver arriba

Mostrar mensajes anteriores:   

Publicar Nuevo Tema   Responder al Tema    Índice de Foros de ConocimientosWeb -> Informática Todas las horas están en GMT
Página 1 de 1

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
 


Biotecnología ¿Que pasa si le aumento el voltaje al CPU? Editor html gratis Navegación Internet
Creado con phpBB - ConocimientosWeb.net - Educación no Formal - Diario Tecnológico - Curso Manual Tutorial

Centro de intercambio de conocimientos donde es posible encontrar un(a): consejo guía truco debate polémica manual curso información resumen programa noticia entre otras cosas.