............ Foro Excel
Si no lo has hecho aún: REGISTRATE!!!

RANGOS PARA COLUMNAS

Ver el tema anterior Ver el tema siguiente Ir abajo

RANGOS PARA COLUMNAS

Mensaje por seralba el Miér Nov 05, 2008 11:12 pm

Gracias Maestro Gali y miembros del foro por leer mi problema, les expongo lo siguiente

Lo que voy a crear son rangos, estos rangos los voy a ocupar posteriormemnte con formulas de buscarv.

Cada columna tiene su propio rango y el nombre de cada rango es el titulo de cada columna, todos los titulos se encuentra ubicados el FILA 1 A1 NUM_EMP ; B1 NOMP_EMP ; C1 AP_PATER

Al ser mi base de datos muy dinamica me obliga estar cambiando los nombres de cada columna ya que muchas veces no llegan a coincidir. hay ocaciones en que cada columna empiezan de la columna A y terminan en la BD o en otras ocasiones de la A a la EU

Cabe mencionar que el numero de filas me es muy amplio hay en ocasiones que llego a la fila 15000

Como veran me es muy dinamica mi base de datos y no siempre me coinciden los mismo titulos en las mismas columnas, algo importante es que cada rango selecciona toda la columna sin importar si hay espacios en blanco

Cada que sucede esto lo primero que hago en mi base de datos es eliminar todos los rangos por medio de una Macro, esto esta bien por que me deja TOTALMENTE limpia mi base datos de Rangos (anexo el codigo por si alguien le interesa), y con esto me da pie a crear los nuevos rangos que este es mi problema

el siguiente codigo lo hice con la grabadora

Sub Asigna_Rangos()

'MI CELDA A1 SE LLAMA NUM_EMP, por lo que el rango de mi Columna A se debe llamar NUM_EMP

Columns("A:A").Select
ActiveWorkbook.Names.Add Name:="NUM_EMP", RefersToR1C1:= _
"='VALORES'!C1"

'MI CELDA B1 SE LLAMA NOMP_EMP, por lo que el rango de mi Columna B se debe llamar NOMP_EMP

Columns("B:B").Select
ActiveWorkbook.Names.Add Name:="NOMP_EMP", RefersToR1C1:= _
"='VALORES'!C2"


'MI CELDA C1 SE LLAMA AP_PATER, por lo que el rango de mi Columna C se debe llamar AP_PATER

Columns("C:C").Select
ActiveWorkbook.Names.Add Name:="AP_PATER", RefersToR1C1:= _
"='DIPS VALORES'!C3"

Etc.....


Espero me puedan ayudar con este codigo si necesitan que le envie el archivo ya se al foro o de manera personal Maestro Gali me puede enviar un correo electronico ami direccion y le reenvio el mismo [Tienes que estar registrado y conectado para ver este vínculo]

Gracias por la ayuda y felicidades por el foro las aportaciones de todos son muy interesantes e ingeniosas

Saludos

Atte

Sergio

PD anexo el codigo para remover los rangos




Sub Quitar_Rangos()

Sheets("DIPS VALORES").Select

For i = Application.ActiveWorkbook.Names.Count To 1 Step -1
Application.ActiveWorkbook.Names(i).Delete
Next i
If Application.ActiveWorkbook.Names.Count > 0 Then
Application.ActiveWorkbook.Names(1).Delete
End If


Sheets("DIPS VALORES").Select


''Private Sub CommandButton1_Click()
'cuenta numero de registros
celda = 2
For i = 1 To 148

dato = Worksheets(1).Cells(celda, i)

While dato <> ""
celda = celda + 1
dato = Worksheets(1).Cells(celda, i)

Wend

rango = celda - 1
rangoini = Cells(2, i).Select
setdatoini = ActiveWindow.RangeSelection.Address
rangofin = Cells(rango, i).Select
setdatofin = ActiveWindow.RangeSelection.Address

ActiveWorkbook.Names.Add _
Name:=Worksheets(1).Cells(1, i), _
RefersTo:="=Sheet1!" & setdatoini & ":" & setdatofin
celda = 2

Next i


End Sub

seralba

Cantidad de envíos : 3
Fecha de inscripción : 05/11/2008

Volver arriba Ir abajo

Re: RANGOS PARA COLUMNAS

Mensaje por GalileoGali el Jue Nov 06, 2008 8:52 am

Bienvenido!!
Francamente no me he basado en tun codigo, sino en tus comentarios. Con el codigo que te mando quedan definidos los Nombres de Rango (no los rangos, para ser más precisos con la terminología), hasta la penùltima fila de la Hoja. Si en cambio quieres que queden definidos hasta la ultima fila utilizada solamente, el codigo es decididamente mas sencillo.

Código:
Sub CrearNombres()
Dim colIni As Long, ColFin As Long
Dim nombre As Name

If Application.ActiveWorkbook.Names.Count > 0 Then
For Each nombre In ActiveWorkbook.Names
nombre.Delete
Next nombre
End If


If [A1] = "" Then
colIni = [A1].End(xlToRight).Column
Else
colIni = 1
End If
If Cells(1, Columns.Count) = "" Then
ColFin = Cells(1, Columns.Count).End(xlToLeft).Column
Else
ColFin = Columns.Count
End If

Range(Cells(1, colIni), Cells(Rows.Count - 1, ColFin)).CreateNames Top:=True
End Sub


Esta es la version que abara el Rango usado estrictamente
Código:
Option Explicit

Sub CrearNombres()
Dim colIni As Long, ColFin As Long
Dim nombre As Name
Dim rngArea As Range

If Application.ActiveWorkbook.Names.Count > 0 Then
For Each nombre In ActiveWorkbook.Names
nombre.Delete
Next nombre
End If

On Error Resume Next
Set rngArea = ActiveSheet.UsedRange
If rngArea Is Nothing Then Exit Sub
On Error GoTo 0


rngArea.CreateNames Top:=True
End Sub


Tu codigo realmente no lo entendi.....(en partes, obviamente sí)

_________________
GalileoGali
M.A.P. 2010-2013
Microsoft Active Professional

GalileoGali
Admin

Masculino Cantidad de envíos : 1962
Edad : 61
Ciudad - Pais : QUIROGA, Argentina
Version de Excel : 2000-2003-2007-2010
Fecha de inscripción : 24/01/2008

http://excelgali.mejorforo.net

Volver arriba Ir abajo

Re: RANGOS PARA COLUMNAS

Mensaje por seralba el Dom Nov 09, 2008 10:37 pm

Maestro Gali, ¡¡ Gracias!! por la respuesta a mis problemas.
Sus codigos son impresionantes y muy efectivos.

Tengo una inquietud , usted en su portal tiene pensado dar cursos de
Macros en Excel, desde Basico - Intermedio - Avanzado de ser asi considereme como uno de sus alumnos.

Creame que mucho usuarios de su foro tenemos mucho que estudiar y aprender de usted en todo lo relacionado a excel, y es impresionante como usted resuelve los problemas de una manera tan facil y sencilla

Le agradezco la atencion en leer esto y gracias por su ayuda.

Atte

Sergio - Desde la Ciudad de Mexico (DF)

seralba

Cantidad de envíos : 3
Fecha de inscripción : 05/11/2008

Volver arriba Ir abajo

Re: RANGOS PARA COLUMNAS

Mensaje por GalileoGali el Lun Nov 10, 2008 12:01 am

Lo de los cursos esta en mis planes, pero todavia no se la modalidad y cuál ha de ser mi disponibilidad de tiempo, ya que además de decicarme a Excel soy gerente de una sucursal bancaria.

Gracias por tu interés::::::::!!!!

_________________
GalileoGali
M.A.P. 2010-2013
Microsoft Active Professional

GalileoGali
Admin

Masculino Cantidad de envíos : 1962
Edad : 61
Ciudad - Pais : QUIROGA, Argentina
Version de Excel : 2000-2003-2007-2010
Fecha de inscripción : 24/01/2008

http://excelgali.mejorforo.net

Volver arriba Ir abajo

Re: RANGOS PARA COLUMNAS

Mensaje por Contenido patrocinado Hoy a las 1:36 pm


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 
Permisos de este foro:
No puedes responder a temas en este foro.