Académique Documents
Professionnel Documents
Culture Documents
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.
10 14 7 1 11 3
2 18 17 13 8 6
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
Referencias
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
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
As
Range, = =
Resp,
Fila [E:E]
False ya fue
lnea
Union(Target, =
rngAnotar).Address
= datos?",
MsgBox(prompt:="Transferir Resp = =
Title:="Transferir
= =
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
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
rngCopiar
Range(Cells(ActiveCell.Row,
Cells(ActiveCell.Row,
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.
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