L'ordinamento non riesce a spostare le regole di convalida dei dati insieme ai dati in Excel


4

Quando si ordina una tabella o un intervallo in Excel, i valori di cella e la formattazione di base come grassetto, corsivo, colori ecc. Si spostano, ma le seguenti cose NON si spostano:

  • frontiere
  • Regole di convalida dei dati

Il mio foglio di calcolo ha una convalida dei dati per cella, quindi quando eseguo un'operazione di ordinamento sposta i valori ma non porta con sé la loro convalida.

Ecco un esempio prima di ordinare:

inserisci qui la descrizione dell'immagine

E dopo l'ordinamento (AZ sul nome "Fruit".)

inserisci qui la descrizione dell'immagine

Esiste un modo per consentire a Excel di spostare le regole di convalida dei dati insieme ai valori e ai formati quando Excel esegue un'operazione di ordinamento?

Modificare:

Giusto per chiarire, ho due preoccupazioni separabili qui:

  1. Preoccupazione principale: se un utente decide di fare clic sul pulsante Ordina o sull'opzione Ordina nell'intestazione di una colonna Filtro, questo eliminerà le mie (complesse!) Regole di convalida dei dati.
  2. Preoccupazione secondaria: sarebbe bello se il mio foglio di lavoro potesse essere ordinato usando i pulsanti Excel incorporati per l'ordinamento (questi sono i modi più ovvi per ordinare i dati). Una macro separata solo per fare una sorta sembra un po 'confusa.

Modificare:

La mia eventuale soluzione era solo disabilitare completamente l'ordinamento, proteggendo la cartella di lavoro e disabilitando l'ordinamento per tutti i fogli. Puoi premere i pulsanti "Ordina" ma non fanno nulla.

Come ulteriore protezione, ho aggiunto VBA che riapplica Protect Workbook ogni volta che la cartella di lavoro viene aperta e visualizza un foglio di lavoro con istruzioni per l'uso e avvisi (come "Non ordinare questo!".) L'utente finale può annullare -proteggere la cartella di lavoro in qualsiasi momento, quindi non è infallibile, ma credo che sia il meglio che posso fare.


Sai come usare VBA? puoi fare bordi registrando una macro. Cercherò quello che ho per spostare i validatori. AFAIR è in VSTO c #.
Jeremy Thompson,

@JeremyThompson: Le mie competenze VBA sono modeste - In realtà sto imparando VBA mentre vado per questo particolare lavoro. I confini non mi danno fastidio, è importante la convalida dei dati. Non voglio che venga accidentalmente nascosto se qualcuno fa clic sul pulsante "Ordina".
Li-aung Yip,

Risposte:


2

È possibile stabilire una regola generale per la gestione dei valori di pH e applicarla all'intera colonna di valori. Devi solo includere una condizione che controlla Key1 per vedere se il valore è un pH; se lo è, controlla i criteri; in caso contrario, restituisci VERO in modo che tutto sia consentito.

Ad esempio, ecco una regola di convalida dei dati personalizzata applicata a C2:C6(colonna Valore 1) nella tabella:

=IF(B2="pH",AND(C2>=0,C2<=14,C2=INT(C2)),TRUE)

Ciò limiterà i valori di pH 0 <= pH <= 14 e solo numeri interi. Poiché la regola viene applicata all'intera colonna, l'ordinamento non influirà sulla convalida dei dati.

inserisci qui la descrizione dell'immagine

Puoi gestire i bordi in modo simile se li applichi utilizzando la formattazione condizionale. Basta applicarlo a tutti i dati nella colonna con una regola formula appropriata, ad esempio

=B2="pH"

inserisci qui la descrizione dell'immagine


1
Un buon approccio se hai un numero limitato di regole possibili, che è quello che ha mostrato il mio esempio. :) Nel caso di forse centinaia di regole distinte, tuttavia, è ingombrante creare una singola, complessa regola di convalida. Significa anche che il messaggio di input e l'avviso di errore non possono essere molto istruttivi.
Li-aung Yip,

@ Li-aungYip Sì, questi sono problemi validi dati i vincoli. Non so nulla del tuo progetto, ma forse il design del tavolo sta peggiorando il problema? Potrebbe essere un buon posto per iniziare a cercare modi per minimizzare questo problema o evitarlo del tutto. Se la riprogettazione della cartella di lavoro non è un'opzione e hai bisogno di messaggi di errore brevi e informativi per la convalida dei dati, temo che una procedura (complicata) di VBA per il trapping di eventi sia l'unica soluzione che vedo.
Eccellente il

Sfortunatamente questo è uno di quei lavori in cui stiamo cercando di trasformare Excel in una vera e propria applicazione di database, che non lo è. Idealmente non userei Excel per la convalida dei dati in questo complesso, ma dato che gli utenti finali del foglio di calcolo saranno minatori ed elettricisti, deve essere in Excel o non hanno la possibilità di usarlo in modo efficace.
Li-aung Yip,

Upvoting e accettando questo perché è la risposta più utile per le persone con questo problema in futuro (anche se non mi ha aiutato.)
Li-Aung Yip

0

Guardando frammenti di vecchio codice, sembra che ho cancellato e ricreato i validatori:

var cellValues = activeSheet.Range[leftColumn + startingRow, Type.Missing];
cellValues.Validation.Delete();

Se vuoi fare qualcosa in Excelprogrammatic, registra una Macro> esegui l'operazione manualmente> Interrompi la registrazione Macro> premi Alt + F11 e visualizza il codice nel Modulo appena creato. Questo è un modo rapido per raccogliere la programmazione VBA. In bocca al lupo!


Non proprio quello di cui ho bisogno: la convalida dei dati non è uniforme all'interno di righe o colonne. Se immagini che ogni cella abbia regole di convalida uniche, sei abbastanza vicino a ciò che ha il mio foglio di calcolo. :(
Li-aung Yip,

Questa è l'idea giusta, ma dovrai incorporare un modo per far corrispondere le regole di convalida ai nuovi indirizzi di cella nei dati ordinati. Questo non è un compito banale, esp. con oltre 100 regole di convalida.
Eccellente il

0

Questa non è interamente una risposta alla tua domanda, ma ritengo che debba essere menzionata.

Il modo in cui i tuoi dati vengono inseriti nel foglio di calcolo è un po 'insolito e se non ci sono motivi specifici potresti anche risolvere il problema modificando un po' il design del foglio di calcolo. Il modo più semplice per inserire dati come il tuo è quello di avere una colonna per chiave (colore, pH, diametro ecc.) E una riga per frutto. In questo modo puoi definire regole e stili per l'intera colonna e non dovrai preoccuparti dell'ordinamento.

Se devi accedere ai dati utilizzando una chiave e un valore, potresti essere aiutato utilizzando le tabelle pivot e la ricerca delle tabelle pivot (GETPIVOTDATA) o le ricerche di riga / colonna (VLOOKUP / HLOOKUP).

Nel tuo caso le chiavi sembrano abbastanza ben definite (altrimenti un motivo per seguire l'approccio valore-chiave) e dato che Excel consente migliaia di colonne che non rimarrai a corto di chiavi. L'uso di una colonna separata per ciascun tasto funzionerà anche come una specie di modulo di input. Non dimenticherai di inserire un valore per un frutto poiché la cella per quel valore sarà vuota.

Se hai diversi campioni (non tutte le mele hanno lo stesso diametro, ecc.) Sarai in grado di trattare ogni riga del foglio di calcolo come un singolo campione.

Questo approccio faciliterà inoltre l'ulteriore elaborazione dei dati come la creazione di diagrammi e tabelle pivot.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.