Clasificación de datos que contienen celdas combinadas (Microsoft Excel)
Excel ha incluido durante mucho tiempo la capacidad de fusionar celdas adyacentes en una sola celda más grande. Esta capacidad ha sido utilizada por muchos diseñadores de hojas de trabajo para darle a sus hojas de trabajo un aspecto pulido y profesional.
Sin embargo, hay un gran inconveniente en el uso de celdas combinadas: no puede ordenar tablas que las incluyan. Si lo intenta, recibirá un mensaje que dice: «La operación requiere que las celdas combinadas tengan el mismo tamaño».
La solución más obvia al problema es no utilizar celdas combinadas.
Digamos, por ejemplo, que tiene una hoja de trabajo en la que cada «registro» en realidad consta de dos filas, y que la primera columna de la hoja de trabajo contiene celdas combinadas. (Cada registro de dos filas comienza con dos celdas combinadas que abarcan las dos filas. Esta celda combinada contiene un nombre de proyecto).
Es mejor separar las celdas de la primera columna, pero luego se preguntará cómo hacer que los registros se ordenen correctamente en la hoja de trabajo; cómo mantener los pares de filas juntos durante una clasificación. Puede hacer esto poniendo el nombre de su proyecto en la primera fila y el nombre del proyecto agregado con «zz» en la segunda fila. Por ejemplo, si la primera fila contiene «Wilburn Chemical» (el nombre del proyecto), la segunda fila podría contener «Wilburn Chemicalzz». Formatee la celda de la segunda fila para que el nombre no aparezca (como texto blanco sobre un fondo blanco) y luego pueda ordenar correctamente como desee.
Otra solución es usar una macro para hacer malabarismos con su hoja de trabajo y hacer la clasificación. Suponiendo que las celdas combinadas están en la columna A (como se describió anteriormente), puede usar la siguiente macro para ordenar los datos por el contenido de la columna A:
Sub SortList() Dim sAddStart As String Dim rng As Range Dim rng2 As Range Dim lRows As Long Application.ScreenUpdating = False sAddStart = Selection.Address Set rng = Range("A1").CurrentRegion With rng lRows = .Rows.Count - 1 .Cells(1).EntireColumn.Insert .Cells(1).Offset(0, -1) = "Temp" .Cells(1).Offset(1, -1).FormulaR1C1 = _ "=+RC[1]&"" ""&ROW()" .Cells(1).Offset(2, -1).FormulaR1C1 = _ "=+R[-1]C[1]&"" ""&ROW()" Set rng2 = .Cells(1).Offset(1, -1).Resize(lRows, 1) Range(.Cells(2, 0), .Cells(3, 0)).AutoFill _ Destination:=rng2 rng2.Copy rng2.PasteSpecial Paste:=xlValues .Columns(1).MergeCells = False .CurrentRegion.Sort _ Key1:=Range("A2"), Order1:=xlAscending, _ Header:=xlYes, OrderCustom:=1, _ MatchCase:=False, Orientation:=xlTopToBottom rng2.EntireColumn.Delete With Range(.Cells(2, 1), .Cells(3, 1)) .Merge .Copy .Cells(3, 1).Resize(lRows - 2, 1). _ PasteSpecial Paste:=xlFormats End With End With Application.CutCopyMode = False Range(sAddStart).Select Application.ScreenUpdating = True End Sub
La macro inserta una columna temporal, lee los elementos de la primera columna de la lista, agrega el número de fila, lo copia en la columna temporal, separa las celdas, ordena la lista, elimina la columna temporal y vuelve a fusionar la columna A. (¡Es mucho trabajo ordenar una tabla con celdas combinadas!)
Esta macro es muy específica para un diseño particular de sus datos y, por lo tanto, debería probarse y probablemente modificarse para asegurarse de que funcionaría con datos formateados de otra manera.
_Nota: _
Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios ExcelTips), he preparado una página especial que incluye información útil.
link: / excelribbon-ExcelTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador]
.
ExcelTips es su fuente de formación rentable en Microsoft Excel.
Este consejo (761) se aplica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 y Excel en Office 365. Puede encontrar una versión de este consejo para la interfaz de menú anterior de Excel aquí:
enlace: / excel-Sorting_Data_Containing_Merged_Cells [Clasificación de datos que contienen celdas fusionadas]
.