You are on page 1of 10

Cmo utilizar macros para ordenar los datos en varias columnas como una columna en Excel

Microsoft proporciona ejemplos de programacin nicamente con fines ilustrativos, sin ninguna garanta expresa o implcita.Esto incluye, pero no se limita a, las garantas implcitas de comerciabilidad o idoneidad para un fin determinado. Este artculo asume que est familiarizado con el lenguaje de programacin que se muestra y con las herramientas que se utilizan para crear y depurar procedimientos. Los ingenieros de soporte tcnico de Microsoft pueden explicarle la funcionalidad de un determinado procedimiento, pero no modificarn estos ejemplos para ofrecer mayor funcionalidad ni crearn procedimientos que cumplan sus requisitos especficos.

Ordenar integrados
En Microsoft Excel, normalmente se utiliza la caracterstica de ordenacin para ordenar una lista. Una lista de Excel es una serie de filas de la hoja de clculo que contienen datos relacionados, tales como una base de datos de la factura o de un conjunto de nombres de clientes y nmeros de telfono. Puede utilizar una lista como una base de datos, en el que cada fila es un registro, y las columnas son campos. La primera fila de la lista suele tener rtulos de las columnas, por ejemplo: A1: A2: A3: A4: A5: A6: A7: Q1 10 14 7 1 11 3 B1: B2: B3: B4: B5: B6: B7: Q2 2 18 17 13 8 6 C1: C2: C3: C4: C5: C6: C7: Q3 4 9 12 5 16 15

Si ordena esta lista en orden ascendente, por el campo Q1 (columna A), el resultado sera como sigue: A1: A2: A3: A4: A5: A6: A7: Q1 1 3 7 10 11 14 B1: B2: B3: B4: B5: B6: B7: Q2 13 6 17 2 8 18 C1: C2: C3: C4: C5: C6: C7: Q3 5 15 12 4 16 9

Ordenar integradas
Columnas de estilo periodstico y columnas periodsticas son trminos diferentes para el mismo tipo de formato de datos.

A1: A2: A3: A4: A5: A6:

10 14 7 1 11 3

B1: B2: B3: B4: B5: B6:

2 18 17 13 8 6

C1: C2: C3: C4: C5: C6:

4 9 12 5 16 15

Puede utilizar la macro de ejemplo de este artculo para ordenar las columnas de estilo periodstico en orden ascendente. A1: A2: A3: A4: A5: A6: 1 2 3 4 5 6 B1: B2: B3: B4: B5: B6: 7 8 9 10 11 12 C1: C2: C3: C4: C5: C6: 13 14 15 16 17 18

Para ver la clasificacin macro funcione segn lo descrito, siga estos pasos: 1. Abra un nuevo libro. 2. Escriba los datos de ejemplo siguientes en la hoja de clculo: 3. A1: 10 B1: 2 C1: 4 4. A2: 14 B2: 18 C2: 9 5. A3: 7 B3: 17 C3: 12 6. A4: 1 B4: 13 C4: 5 7. A5: 11 B5: 8 C5: 16 8. A6: 3 B6: 6 C6: 15 9. En el men Herramientas , seale Macroy, a continuacin, haga clic en Editor de Visual Basic. 10. En el men Insertar , haga clic en mdulo. 11. Escriba el cdigo siguiente en el mdulo: Nota En el ejemplo siguiente se muestra cmo ordenar en orden ascendente. Puede cambiarlo modificando el valor de la "Order1: =" el argumento xlDescending . 12. Sub SortAllRangeData() 13. ' Place column header for temporary sort area. 14. Range("IV1").Value = "Numbers" 15. 16. ' Move numbers to temporary sort location. 17. For Each cell In Selection 18. Range("iv65536").End(xlUp).Offset(1, 0) = cell.Value 19. Next cell 20. 21. ' Sort numbers in ascending order. 22. Range("IV1", Range("IV1").End(xlDown)).Sort Key1:=Range("IV2"), _ 23. Order1:=xlAscending, Header:=xlGuess, _ 24. OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom 25. 26. ' Move sorted data back to original sheet location. 27. 28. Selection(1, 1).Activate ' Make sure the ActiveCell is the 29. ' top left of Selection first.

30. CCnt = Selection.Columns.Count 31. RCnt = Selection.Rows.Count 32. CellCnt = Selection.Cells.Count 33. Tcell = 2 34. For c = 1 To CCnt 35. For r = 1 To RCnt 36. Range(ActiveCell.Address).Offset(r - 1, c - 1).Value = 37. Range("iv" & Tcell).Value 38. Tcell = Tcell + 1 39. Next r 40. Next c 41. 42. ' Clean up temporary sort location. 43. Range("IV1", Range("IV1").End(xlDown)).Clear 44. End Sub

45. En el men Excel en Microsoft Excel X para Mac y en versiones posteriores de Excel para Mac o en el men archivo en todas las dems versiones de Excel, haga clic en Cerrar y volver a Microsoft Excel. 46. Seleccione A1:C6. 47. En el men Herramientas , elija macro y, a continuacin, haga clic en macros . Seleccione la macro SortAllRangeDatay, a continuacin, haga clic en Ejecutar . Todos los datos dentro del rango seleccionado est ordenada ahora y aparece como sigue: A1: A2: A3: A4: A5: A6: 1 2 3 4 5 6 B1: B2: B3: B4: B5: B6: 7 8 9 10 11 12 C1: C2: C3: C4: C5: C6: 13 14 15 16 17 18

Volver arriba | Enviar comentarios

Referencias

Ordenar una columna de estilo periodstico


Para obtener ms informacin acerca de cmo ordenar, haga clic en Ayuda de Excel , en el men Ayuda , escriba Ordenar, haga clic en Buscary, a continuacin, haga clic en un tema para verlo. Para obtener ms informacin acerca de cmo utilizar el mtodo Sort desde el Editor de Visual Basic, haga clic en Ayuda de Visual Basic en el men Ayuda , escriba el mtodo de ordenacin, haga clic en Buscary, a continuacin, haga clic para ver el mtodo sort.

Excel X para Mac y versiones posteriores


Para obtener ms informacin acerca de cmo ordenar, haga clic en el Ayudante de Office, escriba Ordenar una lista, haga clic en Buscary, a continuacin, haga clic en un tema para verlo. Nota Si el Ayudante est oculto, haga clic en el Ayudante de Office en la barra de herramientas estndar . Para obtener ms informacin acerca de cmo utilizar el mtodo Sort desde el Editor de Visual Basic, haga clic en elAyudante de Office, escriba el mtodo de ordenacin, haga clic en Buscary, a continuacin, haga clic para ver el mtodo sort. Volver arriba | Enviar comentarios

Ordenar datos con macros VBA EXCEL


21/07/2013 by Fernando Santos | 1 Comment

Excel VBA para filtrar y ordenar datos Desactivacin de filtros Cuando se trabaja en una base de datos Excel es posible que desee asegurarse de que todos los filtros esten desactivados. Para ello se iniciar el proceso con dos if. Por ejemplo, con una base de datos a partir de la celda A1 ejecutaremos 2 sentencias: Range(A1 ).Select If ActiveSheet.AutoFilterMode = True Then Selection.AutoFilter If ActiveSheet.FilterMode = True Then ActiveSheet.ShowAllData Ordenar los datos Ejemplos: - La siguiente macro de Excel funciona con cualquier tamao de base de datos a partir de la celda A1 y funcionar en cualquier versin de Sub proFilter() Range(A1).Sort Key1:=Range(A2), Order1:=xlAscending, Header:=xlYes Excel (1997 a 2010).

End Sub - Ordenar datos, considerando tres campos diferentes. Sub proFilter() Range(A1).Sort Key1:=Range(A2), Order1:=xlAscending, Key2:=Range( _ _ B2), Order2:=xlAscending, Key3:=Range(C2), Order3:=xlAscending, Header:=xlYes

End Sub Ejercicio. - Aplicaremos el ordenamiento de datos por familias y sub-familias.

ORDENAR DATOS Por: MARIA ANTONIETA VALENZA COLLADO

Distribuir datos en hojas Excel con macros.


SBADO, ENERO 19, 2008

En la nota anterior sobre cmo distribuir datos de una hoja a otras hojas de un cuaderno Excel, vimos como hacerlo con frmulas.

En esa nota sealaba que el mtodo con frmulas es til slo si nuestro cuaderno contiene pocos datos. Uno de mis lectores intent usar la solucin con frmulas pero, en sus porpias palabras "no he podido concluir mi base de datos porque la cantidad de data es mucha y con el peso de las formulas todas las maquinas se cuelgan".

Este mismo lector me peda que le enseara la forma de hacerlo con macros. En esta nota mostrar una solucin posible con macros al mismo caso que mostrbamos en la nota anterior. Debo aclarar que esta solucin no es ptima desde el punto de vista de programacin, sino que est orientada al usuario promedio cuyo objetivo es crear herramientas para el trabajo diario y no desarrollo de implementaciones en Excel.

El ejemplo se basa en el mismo archivo de la nota anterior. El archivo con las macros puede descargarse Empezamos por agregar el encabezamiento "> aqu.

"Transferido".

Esta columna nos servir para chequear si la lnea de la hoja Datos ha sido transferida o no. En esta solucin usaremos dos macros. Una de tipo evento y otra que har el trabajo de copiar los datos a la hoja correspondiente. La idea es que, una vez agregados los datos en la hoja "Datos", haciendo doble-clic en la celda correspondiente de la columna E, los datos sean transferidos a la hoja adecuada. Adems queremos evitar que por error los datos sean transferidos ms de una vez. Para eso usaremos el mecanismo de poner, automticamente, la palabra "SI" en la columna Transferido, despus de haber copiado los datos. Una vez que aparece la palabra SI en la columna E de la lnea, la macro no permitir volver a copiarlos.

Para disparar la macro que copie los datos, usaremos el evento BeforeDoubleClick de la hoja "Datos". Empezamos por abrir el editor de Vba y haciendo doble-clic en el icono de la hoja Datos, abrimos el mdulo de Vb para el evento

En

el

mdulo

del

evento

ponemos

este

cdigo

Private

Sub

Worksheet_BeforeDoubleClick(ByVal

Target

As

Range,

Cancel

As

Boolean)

Dim Set If MsgBox Exit End If Resp If Cancel Exit End Fila Call Target.Value End End

rngAnotar rngAnotar IsEmpty(Target) "La

As

Range, = =

Resp,

Fila [E:E]

False ya fue

Then transferida" Sub If

lnea

Union(Target, =

rngAnotar).Address

= datos?",

rngAnotar.Address Buttons:=vbYesNo, vbNo

Then _ Datos") Then True Sub If

MsgBox(prompt:="Transferir Resp = =

Title:="Transferir

= =

Target.Row dist_hojas "SI" If Sub

Despus de declara las variables y definir el rango E, empezamos por comprobar si la lnea a sido transferida en el pasado. Si la palabra SI aparece en la celda correspondiente de la lnea que queremos copiar, aparece un mensaje informndonos que ya hemos transferido los datos y la macro se interrumpe. El resto del cdigo produce un mensaje preguntndonos si queremos copiar los datos. Slo si apretamos NO, la macro se interrumpe y no habr ningn cambio en el cuaderno.

Si aceptamos, los datos sern copiados y en la celda de la columna E aparecer la palabra SI

Si

intentamos

volver

copiar

los

datos

de

la

lnea,

aparece

este

mensaje

El trabajo de copiar a la hoja correspondiente lo hace esta macro, que ponemos en un mdulo corriente (Mdulo1)

Sub Dim Dim Hoja Set = "Ruta " = & LastRow As rngCopiar ActiveCell.Offset(0, -1).Value 1), = Long, Hoja As 'definir nombre As

dist_hojas() String Range de hoja 3)) False Sheets(Hoja) = WorksheetFunction.CountA([A:A]) + 1 With

rngCopiar

Range(Cells(ActiveCell.Row,

Cells(ActiveCell.Row,

Application.ScreenUpdating With .Activate LastRow End

rngCopiar.Copy Sheets("Datos").Select Application.ScreenUpdating End

Sheets(Hoja).Cells(LastRow,

1)

True Sub

Despus de definir las variable, la primer lnea del cdigo "arma" el nombre de la hoja uniendo a la palabra La lnea "Ruta" el siguiente nmero que aparece cul es en la columna D, con el el rango a copiar operador "&". en "Datos". determina

El paso siguiente es determinar cul es la primer fila libre en la hoja en la que vamos a pegar los datos. Una vez hecho esto, volvemos a "Datos", copiamos el rango adecuado y lo pegamos en la hoja correspondiente. En este modelo no hemos puesto ningn mtodo automtico para borrar lpineas que han sido copiadas y cancelar la seal SI en la hoja Datos. Esto se deber hacer manualmente.

Elaborar una consulta mediante macros en Excel 2007


Hola amigos tengo el gusto de compartir esta pequea consulta elaborada en Excel. Todo Registro de informacin debe de tener su propia Consulta, Baja y Modificacin, es por eso que en este nuevo blog nos concentramos en ello, primeramente en poder consultar la informacin que ya se escribi en la Hoja de Excel, obviamente desde una Macro combinada con Visual Basic, miren el siguiente ejemplo: Parte I 1. Presione La Teclas Alt + F11, para entrar al editor de Visual Basic. 2. Activa las siguientes opciones: De clic en el Men Ver y elija la opcin Explorador de Proyectos De clic en el Men ver y elija la opcin Ventana Propiedades 3. Del Men Insertar elija la Opcin UserForm. Esto inserta el Formulario que programaremos con controles. En el Explorador de Proyecto se observara que se inserto el UserForm. Ahora crearas un formulario con el siguiente aspecto: > Imagen 1 Los datos que se preguntaran sern Nombre, Direccin y Telfono. Los tres botones nos servirn para lo siguiente: Consultar consultara la informacin que hayamos insertado desde el botn insertar. Baja podr eliminar algn dato que se consulto y no lo queremos. Insertar tendr la funcin de
o o

insertar los registros que vayamos dando de alta, es como los ejercicios anteriores. A continuacin se muestra como se deben de programar estos Controles:

http://www.youtube.com/watch?v=jmVNZKGWXzk&list=PLOD1MFxGA_qH3_pS75htQ9Guibpz8g5 db