
Al ordenar una tabla o rango en Excel, los valores de las celdas y el formato básico como negrita, cursiva, colores, etc. se mueven, pero las siguientes cosas NO se mueven:
- Fronteras
- Reglas de validación de datos
Mi hoja de cálculo tiene validación de datos por celda, por lo que cuando realizo una operación de clasificación, mueve los valores pero no lleva consigo su validación.
Aquí hay un ejemplo antes de ordenar:
Y después de ordenar (AZ en el nombre "Fruta").
¿Hay alguna manera de hacer que Excel mueva las reglas de validación de datos junto con los valores y formatos cuando Excel realiza una operación de clasificación?
Editar:
Sólo para aclarar, tengo dos preocupaciones separables aquí:
- Preocupación principal: si un usuario decide hacer clic en el botón Ordenar o en la opción Ordenar en el encabezado de una columna Filtro, esto arruinará mis (¡complejas!) reglas de validación de datos.
- Preocupación secundaria: seríalindosi mi hoja de trabajo pudiera ordenarse usando los botones incorporados de Excel para ordenar (estas son las formas más obvias de ordenar datos). Una macro separada solo para realizar una clasificación parece un poco complicada.
Editar:
Mi solución final fue simplemente deshabilitar la clasificación por completo, protegiendo el libro y deshabilitando la clasificación para todas las hojas. Puede presionar los botones "Ordenar" pero no hacen nada.
Como protección adicional, agregué VBA que vuelve a aplicar Protect Workbook cada vez que se abre el libro y muestra una hoja de trabajo con instrucciones de uso y advertencias (como "¡No ordenar esto!"). -proteger el libro en cualquier momento, así que esto no es infalible, pero creo que es lo mejor que puedo hacer.
Respuesta1
Puede establecer una regla general para manejar los valores de pH y aplicarla a toda la columna de valores. Sólo tienes que incluir una condición que verifique la Clave1 para ver si el valor es un pH; si es así, verifique los criterios; si no, simplemente devuelva VERDADERO para que se permita todo.
Por ejemplo, aquí se muestra una regla de validación de datos personalizada aplicada a C2:C6
(columna Valor 1) en su tabla:
=IF(B2="pH",AND(C2>=0,C2<=14,C2=INT(C2)),TRUE)
Esto limitará los valores de pH 0<=pH<=14 y solo números enteros. Dado que la regla se aplica a toda la columna, la clasificación no afectará la validación de los datos.
Puede manejar los bordes de manera similar si los aplica usando formato condicional. Simplemente aplíquelo a todos los datos de la columna con una regla de fórmula adecuada, como
=B2="pH"
Respuesta2
Al observar fragmentos de código antiguo, parece que eliminé y volví a crear los validadores:
var cellValues = activeSheet.Range[leftColumn + startingRow, Type.Missing];
cellValues.Validation.Delete();
Si desea hacer algo en Excel mediante programación, grabe una macro > realice la operación manualmente > detenga la grabación de la macro > presione Alt + F11 y vea el código en el módulo recién creado. Esta es una forma rápida de aprender a programar en VBA. ¡Buena suerte!
Respuesta3
Esta no es del todo una respuesta a su pregunta, pero creo que debería mencionarse.
La forma en que se ingresan los datos en la hoja de cálculo es un poco poco común y, si no hay razones específicas, también puedes resolver el problema cambiando un poco el diseño de la hoja de cálculo. La forma más sencilla de ingresar datos como el suyo es tener una columna por clave (Color, pH, Diámetro, etc.) y una fila por Fruta. De esa manera puedes definir reglas y estilos para toda la columna y no tendrás que preocuparte por ordenarlas.
Si necesita acceder a datos utilizando una clave y un valor, es posible que le ayuden el uso de tablas dinámicas y búsquedas de tablas dinámicas (GETPIVOTDATA) o búsquedas de filas/columnas (BUSCARV/BUSCARRH).
En su caso, las claves parecen bastante bien definidas (de lo contrario, es una razón para optar por el enfoque clave-valor) y, dado que Excel permite miles de columnas, tampoco se quedará sin claves. El uso de una columna separada para cada clave también funcionará como una especie de formulario de entrada. No olvidará ingresar un valor para una fruta ya que la celda para ese valor estará vacía.
Si tiene varias muestras (no todas las manzanas tienen el mismo diámetro, etc.), podrá tratar cada fila de la hoja de cálculo como una sola muestra.
Este enfoque también facilitará el procesamiento posterior de los datos, como la creación de diagramas y tablas dinámicas.