
ordenar con rango de celdas no contiguas
Publicado por Juanjo (2 intervenciones) el 07/06/2023 00:05:36
Tengo el siguiente codigo vba para una macro de excel. Pero no consigo encontrar la instruccion que me sustituya Range("D270").Select por una linea que haga referencia al final de la columna.Y es que el rango es variable de un dia para otro, y la unica solucion chapuza que vi era poner un numero alto para que coja todos los registros hasta el 270 ya que suelen ser menos registros.
Sub Macro2()
'
' Macro2 Macro
'
'
Range("B:B,F:M").Select
Range("F1").Activate
Selection.Delete Shift:=xlToLeft
Application.Goto Reference:="R1C4"
Columns("D:D").Select
Selection.Cut
Range("A1").Select
Selection.Insert Shift:=xlToRight
Application.Goto Reference:="R1C4"
Columns("D:D").Select
Selection.Insert Shift:=xlToRight
Application.Goto Reference:="R2C4"
ActiveCell.FormulaR1C1 = "=RIGHT(RC[-1],11)"
Range("D2").Select
Selection.Copy
'ActiveCell.SpecialCells(xlLastCell).Select
Range("D270").Select
'ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Select
'ActiveSheet.Range("d1", ActiveSheet.Range("d1").End(xlDown)).Select
'ActiveSheet.Range("D1", ActiveSheet.Range("D" & ActiveSheet.Rows.Count).End(xlUp)).Select
'ActiveSheet.Range("d1:" & ActiveSheet.Range("d" & ActiveSheet.Rows.Count). _
End(xlUp).Address).Select
Range(Selection, Selection.End(xlUp)).Select
ActiveSheet.Paste
Application.Goto Reference:="R1C4"
Columns("D:D").Select
Application.CutCopyMode = False
Selection.Insert Shift:=xlToRight
Application.Goto Reference:="R2C4"
ActiveCell.FormulaR1C1 = "=MID(RC[-1],1,LEN(RC[-1])-13)"
Range("D2").Select
Selection.Copy
'Selection.End(xlDown).Select
Selection.End(xlUp).Select
ActiveCell.SpecialCells(xlLastCell).Select
Range("D270").Select
Range(Selection, Selection.End(xlUp)).Select
ActiveSheet.Paste
Application.Goto Reference:="R1C1"
Range("A1:G27").Select
Selection.Columns.AutoFit
Application.Goto Reference:="R1C3"
Selection.EntireColumn.Hidden = True
Range("D2").Select
Application.Goto Reference:="R1C5"
Selection.EntireColumn.Hidden = True
Application.CutCopyMode = False
Application.Goto Reference:="R1C7"
Selection.ColumnWidth = 50
ActiveWorkbook.Worksheets("tablaCitaciones2").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("tablaCitaciones2").Sort.SortFields.Add2 Key:=Range _
("A2:A270"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
ActiveWorkbook.Worksheets("tablaCitaciones2").Sort.SortFields.Add2 Key:=Range _
("G2:G270"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
xlSortNormal
ActiveWorkbook.Worksheets("tablaCitaciones2").Sort.SortFields.Add2 Key:=Range _
("E2:E270"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("tablaCitaciones2").Sort
.SetRange Range("A1:G270")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
Sub Macro2()
'
' Macro2 Macro
'
'
Range("B:B,F:M").Select
Range("F1").Activate
Selection.Delete Shift:=xlToLeft
Application.Goto Reference:="R1C4"
Columns("D:D").Select
Selection.Cut
Range("A1").Select
Selection.Insert Shift:=xlToRight
Application.Goto Reference:="R1C4"
Columns("D:D").Select
Selection.Insert Shift:=xlToRight
Application.Goto Reference:="R2C4"
ActiveCell.FormulaR1C1 = "=RIGHT(RC[-1],11)"
Range("D2").Select
Selection.Copy
'ActiveCell.SpecialCells(xlLastCell).Select
Range("D270").Select
'ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Select
'ActiveSheet.Range("d1", ActiveSheet.Range("d1").End(xlDown)).Select
'ActiveSheet.Range("D1", ActiveSheet.Range("D" & ActiveSheet.Rows.Count).End(xlUp)).Select
'ActiveSheet.Range("d1:" & ActiveSheet.Range("d" & ActiveSheet.Rows.Count). _
End(xlUp).Address).Select
Range(Selection, Selection.End(xlUp)).Select
ActiveSheet.Paste
Application.Goto Reference:="R1C4"
Columns("D:D").Select
Application.CutCopyMode = False
Selection.Insert Shift:=xlToRight
Application.Goto Reference:="R2C4"
ActiveCell.FormulaR1C1 = "=MID(RC[-1],1,LEN(RC[-1])-13)"
Range("D2").Select
Selection.Copy
'Selection.End(xlDown).Select
Selection.End(xlUp).Select
ActiveCell.SpecialCells(xlLastCell).Select
Range("D270").Select
Range(Selection, Selection.End(xlUp)).Select
ActiveSheet.Paste
Application.Goto Reference:="R1C1"
Range("A1:G27").Select
Selection.Columns.AutoFit
Application.Goto Reference:="R1C3"
Selection.EntireColumn.Hidden = True
Range("D2").Select
Application.Goto Reference:="R1C5"
Selection.EntireColumn.Hidden = True
Application.CutCopyMode = False
Application.Goto Reference:="R1C7"
Selection.ColumnWidth = 50
ActiveWorkbook.Worksheets("tablaCitaciones2").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("tablaCitaciones2").Sort.SortFields.Add2 Key:=Range _
("A2:A270"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
ActiveWorkbook.Worksheets("tablaCitaciones2").Sort.SortFields.Add2 Key:=Range _
("G2:G270"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
xlSortNormal
ActiveWorkbook.Worksheets("tablaCitaciones2").Sort.SortFields.Add2 Key:=Range _
("E2:E270"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("tablaCitaciones2").Sort
.SetRange Range("A1:G270")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
Valora esta pregunta


0