Excel 2007: formattazione condizionale in modo che ogni riga mostri valori bassi gialli, valori alti rossi


14

Ho un foglio di calcolo con circa 300 righe. Ogni riga ha circa 15 colonne e ogni cella contiene un valore numerico. Ogni riga corrisponde a un prodotto.

Voglio ottenere Excel, per ogni prodotto, per evidenziare le celle con i numeri più alti in rosso e i numeri più bassi in giallo, con una sfumatura per i numeri in mezzo. Questo è ciò che accade se seleziono una riga (in particolare, le 15 celle nella riga che contengono i miei dati) e quindi faccio clic su Formattazione condizionale> Scale di colore> Scala di colore rosso-giallo.

Tuttavia, ho 300 righe e ci vorrà troppo tempo per selezionare ciascuna riga singolarmente e impostare la formattazione condizionale. D'altra parte, se seleziono l'intero intervallo e applico la formattazione condizionale, Excel calcola i colori in base all'intero intervallo, quando in realtà li voglio calcolati riga per riga. Ad esempio, prendi questi dati di esempio:

1 2 3
4 5 6
7 8 9

L'output che voglio, usando Y per il giallo, O per l'arancione, R per il rosso, è:

Y O R
Y O R
Y O R

Tuttavia, se seleziono l'intero intervallo e applico la formattazione condizionale, ottengo:

Y Y Y
O O O
R R R

C'è un modo per raggiungere questo obiettivo senza farlo una riga alla volta?


@wizlog: esatto. Il valore più alto in una riga dovrebbe essere rosso, il valore più basso in quella riga dovrebbe essere giallo e gli altri valori dovrebbero trovarsi nel mezzo (il più vicino al valore più alto, il più rosso).
Michael Pavey,

Mi piace questa domanda ... Vedrò se riesco a trovare una risposta ... Probabilmente ci vorranno alcune ore prima di poterti aiutare di nuovo, spero che altri membri del SuperUser ti trovino una risposta in tempo attraverso ...
wizlog

Mi piace anche questa domanda. Ma non vedo altro modo di approcciarlo se non l'uso di una macro. Spero che qualcuno mi dimostri di aver sbagliato.
Ellesa,

Risposte:


15

Ecco una macro che crea un formato condizionale per ogni riga nella selezione. Lo fa copiando il formato della prima riga in OGNI riga della selezione (una per una, non del tutto). Sostituisci B1: P1 con il riferimento alla prima riga nella tabella dei dati.

Sub NewCF()
    Range("B1:P1").Copy
    For Each r In Selection.Rows
        r.PasteSpecial (xlPasteFormats)
    Next r
    Application.CutCopyMode = False
End Sub

Per utilizzare, evidenziare le righe non formattate nel set di dati (nel mio caso, B2: P300 ), quindi eseguire la macro. Nell'esempio seguente, notare che i numeri massimi nelle prime due righe sono rispettivamente 5 e 15 ; entrambe le cellule sono di colore rosso scuro .

Sono sicuro che esiste una soluzione più veloce di questa, però.

inserisci qui la descrizione dell'immagine


1
Grazie, ha funzionato magnificamente. È anche un ottimo esempio del valore di chiedere aiuto quando non sono sicuro ... Ero stato scoraggiato dall'idea di usare una macro, dato che pensavo che avrei dovuto imparare come impostare la formattazione condizionale da zero. Ottenere la macro solo per copiare la formattazione esistente è molto più astuto :)
Michael Pavey,

@MichaelPavey Sono felice di averti aiutato! E benvenuto in Superuser! :)
Ellesa,

1
+ 1. Se qualcuno è interessato, ho approfondito questo concetto sul mio blog: yoursumbuddy.com/conditional-formatting-per-row-color-scales
Doug Glancy,

È ridicolo che questo genere di cose non sia incorporato in Excel come funzionalità. È così raro voler confrontare le righe in questo modo?
Alex,

5

Il modo più semplice per farlo è con copia / incolla in modo incrementale. Per prima cosa, formatta 1 riga nel modo desiderato. Quindi copia e incolla la formattazione SOLO su una seconda riga. Ora copia ENTRAMBE le righe 1 e 2 e incolla la formattazione nelle righe 3 e 4. Risciacqua e ripeti, Copia 4, oltre 4, Copia 8, Incolla 8, Copia 16, Incolla 16. Una volta ottenuto un importo decente come 16, incollalo alcune volte per ottenere fino a 64 o 128. Quindi puoi copiarli e incollare la loro formattazione, e stai esponenzialmente coprendo più territorio di prima.

Non è elegante e, nella mia esperienza, le risorse necessarie per formattare in modo condizionale le file di inizio riga si ottengono al massimo intorno a 2500 righe ... ma fa il suo lavoro.

Vorrei solo che esistesse una logica che non creasse un formato condizionale separato per ogni singola riga, risorse di hogging ...


Penso che l'OP abbia detto "Tuttavia, ho 300 righe e ci vorrà troppo tempo per selezionare ciascuna riga singolarmente e impostare la formattazione condizionale". nella domanda
Prasanna,

@Poultron, grazie! Per aggiungere a questo: usando Ctrl / Cmd + Maiusc + Su / destra è possibile selezionare prontamente tutte le righe e le colonne precedenti, quindi non è necessario contare le righe precedenti. Quindi, quando sei pronto per incollare, posiziona semplicemente il cursore nella prima cella sotto le righe già formattate e solo il formato Incolla speciale, si estenderà fino a coprire tutte le righe che sono state copiate. Ctrl / Cmd + Maiusc + V ricorderà anche l'ultima incolla speciale che vuoi usare, quindi l'intero processo procede abbastanza rapidamente. L'ho appena usato su due fogli di calcolo con 600 righe ciascuno.
Oskar Austegard,

L'ho fatto su un tavolo con ~ 100 righe e ha funzionato magnificamente. Ha preso solo 7 iterazioni di Format Painter.
mskfisher,

0

Ho appena trovato questo e altri esempi di come farlo tramite VBA e mi ha fatto pensare e ho capito un modo relativamente rapido e indolore di fare la stessa cosa senza dover conoscere o copiare alcun copione.

Applicare la formattazione condizionale desiderata a qualsiasi riga desiderata, quindi evidenziare l'intera riga. Fare clic con il tasto destro del mouse in un punto qualsiasi lungo il bordo (il mouse dovrebbe essere l'icona Sposta) e trascinare verso il basso sulla riga successiva. Nel menu contestuale che viene visualizzato, seleziona "Copia qui solo come formati". Ora dovresti avere il tuo formato condizionale applicato ad entrambe le righe separatamente. Quindi continua a farlo in modo ricorsivo, tranne per il fatto che ora puoi selezionare e copiare 2 o più righe alla volta.

Non è un affare one-shot come il codice sopra, ma è esponenzialmente più veloce di fare una riga alla volta. Spero che sia di aiuto.


0

È inoltre possibile applicare la formattazione della condizione a una riga. Evidenzia di nuovo la riga e fai doppio clic su "Copia formato" per bloccarla. Utilizzare il tasto freccia giù per applicare la condizione fino ad altre righe.

Per la mia azienda di solito blocca macro in Excel quindi questo funziona per me. spero che ti aiuti anche tu.

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.