.
Trabajar con Excel en muchas ocasiones implica tener que Ordenar datos por algún criterio para contar con un cierto orden para poder trabajar con ellos, esta macro de Excel o procedimiento de VBA presenta un formulario que solicita la columnas por las cuales la macro ordenará los datos, es decir varias columnas.
Si estás viendo este ejemplo quizás te sirvan los presentados anteriormente como ordenar datos e insertar filas mediante macro de VBA, en ese ejemplo se insertan filas entre cada registro de proveedor y se hace una suma totalizada por proveedor, a su vez se ordena por el criterio proveedor; un poco más avanzado es el ejemplo donde se ordena automáticamente pero en base a varios criterios, a su vez se ordena en forma descendente y no ascendente que es la forma por defecto; también se puede consultar userform para ordenar datos que tiene combobox que permite seleccionar el dato por el cual ordenar, también se presentó una versión que ordena datos en base a varias columnas, la diferencia de este con el ejemplo actual, es que no se presenta un formulario para elegir las columnas, sino que directamente estás están programadas en el código, que se debería adaptar a la columna que se necesite ordenar.
El vídeo que sigue muestra una explicación más detallada y gráfica de la macro presentada, recomiendo observar para una más fácil comprensión de la macro; suscribe a nuestra web desde la parte superior derecha de la página ingresando tu mail y a nuestro canal de You Tube para recibir en tu correo vídeos explicativos sobre macros interesantes, como por ejemplo formulario que crea un listado de todas las hojas para poder luego seleccionarlas, buscar en listbox mientras escribes en textbox, ordenar hojas libro excel por su nombre, conectar Excel con Access y muchos ejemplos más.
if (payload.eventType == ‘subscribe’) {
// Add code to handle subscribe event.
} else if (payload.eventType == ‘unsubscribe’) {
// Add code to handle unsubscribe event.
}
if (window.console) { // for debugging only
window.console.log(‘YT event: ‘, payload);
}
}
Sub ir()
UserForm1.Show
End Sub
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim pf, uf As Integer
Dim uc, wc, r, r1, r2, r3, b, tb1, tb2, tb3 As String
‘determines last row with data
tb1 = TextBox1
tb2 = TextBox2
tb3 = TextBox3
Unload Me
b = ActiveSheet.Name
pf = 2
uf = Sheets(b).Range(«A» & Rows.Count).End(xlUp).Row
uc = Sheets(b).Cells(1, Columns.Count).End(xlToLeft).Addressr1 = ActiveSheet.UsedRange.Address(False, False)
r = tb1 & pf & «:» & tb1 & uf
r2 = tb2 & pf & «:» & tb2 & uf
r3 = tb3 & pf & «:» & tb3 & uf
‘sorts the data
ActiveWorkbook.Worksheets(b).Sort.SortFields.Clear
If tb1 <> Empty Then
ActiveWorkbook.Worksheets(b).Sort.SortFields.Add Key:=Range(r) _
, SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
End If
If tb2 <> Empty Then
ActiveWorkbook.Worksheets(«Hoja1»).Sort.SortFields.Add Key:=Range(r2) _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
End If
If tb3 <> Empty Then
ActiveWorkbook.Worksheets(«Hoja1»).Sort.SortFields.Add Key:=Range(r3) _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
End If
With ActiveWorkbook.Worksheets(b).Sort
.SetRange Range(r1)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
MsgBox («Los datos se ordenaron correctamente por la columna » & tb1 & «, columna » & tb2 & » y columna » & tb3), vbInformation, «AVISO»
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
Private Sub CommandButton2_Click()
Unload Me
End Sub
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim pf, uf As Integer
Dim uc, wc, r, r1, r2, r3, b, tb1, tb2, tb3 As String
‘determines last row with data
tb1 = TextBox1
tb2 = TextBox2
tb3 = TextBox3
Unload Me
b = ActiveSheet.Name
pf = 2
uf = Sheets(b).Range(«A» & Rows.Count).End(xlUp).Row
uc = Sheets(b).Cells(1, Columns.Count).End(xlToLeft).Address
r1 = ActiveSheet.UsedRange.Address(False, False)
r = tb1 & pf & «:» & tb1 & uf
r2 = tb2 & pf & «:» & tb2 & uf
r3 = tb3 & pf & «:» & tb3 & uf
‘sorts the data
ActiveWorkbook.Worksheets(b).Sort.SortFields.Clear
If tb1 <> Empty Then
ActiveWorkbook.Worksheets(b).Sort.SortFields.Add Key:=Range(r) _
, SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
End If
If tb2 <> Empty Then
ActiveWorkbook.Worksheets(«Hoja1»).Sort.SortFields.Add Key:=Range(r2) _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
End If
If tb3 <> Empty Then
ActiveWorkbook.Worksheets(«Hoja1»).Sort.SortFields.Add Key:=Range(r3) _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
End If
With ActiveWorkbook.Worksheets(b).Sort
.SetRange Range(r1)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
MsgBox («Los datos se ordenaron correctamente por la columna » & tb1 & «, columna » & tb2 & » y columna » & tb3), vbInformation, «AVISO»
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
Private Sub CommandButton2_Click()
Unload Me
End Sub
Otros post de utilidad:
- Recuperar password de hoja bloqueada
- Función BUSCARV
- Función BUSCARH
- Función SI
- Abre explorador de archivo de Windows e inserta foto
- Abre explorador de archivo de Windows
- Combobox suma datos repetidos
- Busca un dato en todas las hojas de excel
- Combobox incrustado en Excel
- Formulario para insertar datos en hoja de excel
- Formulario de alera y envío de mail
- Tutoriales sobre VBA
- Llenar combobox y buscar datos
- Mensaje de Alerta y envío de mail con Excel
- Combobox que lista hojas de excel y las selecciona
- Busca un dato en todas las hojas de excel
.
If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.
Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends