Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Ordinare i dati mantenendo la loro altezza riga

195 views
Skip to first unread message

bibbolo

unread,
Feb 7, 2010, 7:37:01 AM2/7/10
to
Spesso abbiamo la necessità di ordinare i dati, cioé le nostre belle liste di
excel, per nome, o per data, ecc., mediante la funzione "ordina e filtra"..
Può però capitare che non tutte le righe abbiano la stessa larghezza, ad
esempio quando in una di esse abbiamo la necessità di scrivere più dati e
spuntiamo anche l'opzione "testo a capo" di una o più determinate celle; in
questo caso ci torna utile allargare la riga in questione per rendere
leggibili tutti i dati. Se però provo ad ordinare tutte le righe per esempio
dalla A alla Z, mi accorgo che i dati vengono effettivamente ordinati, ma non
si portano dietro la loro altezza riga, la quale rimane sì allargata ma nella
posizione di partenza, quindi accogliendo altri dati che invece avevano
magari un'altezza riga diversa e più adeguata ad essi. Come posso far sì che
ordinando i dati ogni riga conservi la sua altezza?

Mauro Gamberini

unread,
Feb 8, 2010, 3:40:27 AM2/8/10
to
> Pu� per� capitare che non tutte le righe abbiano la stessa larghezza, ad
> esempio quando in una di esse abbiamo la necessit� di scrivere pi� dati e
> spuntiamo anche l'opzione "testo a capo" di una o pi� determinate celle;
> in
> questo caso ci torna utile allargare la riga in questione per rendere
> leggibili tutti i dati. Se per� provo ad ordinare tutte le righe per
> esempio
> dalla A alla Z, mi accorgo che i dati vengono effettivamente ordinati, ma
> non
> si portano dietro la loro altezza riga, la quale rimane s� allargata ma
> nella
> posizione di partenza, quindi accogliendo altri dati che invece avevano
> magari un'altezza riga diversa e pi� adeguata ad essi. Come posso far s�
> che
> ordinando i dati ogni riga conservi la sua altezza?
>

Non riesco a riprodurre il tuo problema.
Se la mia colonna ha celle con pi� righe
di testo, si riordinano *portandosi dietro*
l'altezza di riga relativa.

Puoi, per favore, fare un esempio del
contenuto delle tue colonne?
Grazie.


--
---------------------------
Mauro Gamberini
Microsoft MVP - Excel
http://www.riolab.org/
http://www.maurogsc.eu/
http://social.microsoft.com/Forums/it-IT/excelit/threads


bob.g...@gmail.com

unread,
Oct 3, 2017, 3:18:20 AM10/3/17
to
Buongiorno.
Cercando tra gli argomenti ho trovato questa domanda che corrisponde esattamente a quella che volevo fare io.
Ho lo stesso problema, che non so come risolvere. Una volta ordinati i dati con righe di altezza diversa, se la riga 2 era alta 10 e finisce al posto della riga 7 che era alta 5, questa viene visualizzata con l'altezza della riga 7 e non più della riga 2.
Se serve posto uno screenshot.
Le mie righe contengono immagini di altezza diversa quindi ènecessario che nell'ordinamento mantengano l'altezza della propria riga.
Grazie e spero in una risposta, anche se la domanda risale a diverso tempo fa.


casanmaner

unread,
Oct 3, 2017, 11:28:52 AM10/3/17
to
Probabilmente sarebbe più utile avere un file di esempio, magari con non tutti i dati e con dati "sensibili" modificati, in modo da non dover ricostruire la situazione senza conoscere esattamente lo schema.
Ma le immagini, quando viene fatto l'ordinamento dei dati si spostano con il dato?

bob.g...@gmail.com

unread,
Oct 4, 2017, 3:09:00 AM10/4/17
to

> Probabilmente sarebbe più utile avere un file di esempio, magari con non tutti i dati e con dati "sensibili" modificati, in modo da non dover ricostruire la situazione senza conoscere esattamente lo schema.
> Ma le immagini, quando viene fatto l'ordinamento dei dati si spostano con il dato?

Ora preparo un breve file di esempio da allegare a breve.
Le immagini sono ancorate alle caselle e si spostano con il testo rimanendo sempre nella stessa riga di appartenenza sua nell'ordinamento dati che nella ricerca.

Roberto Guerra

unread,
Oct 4, 2017, 3:42:39 AM10/4/17
to
Il giorno martedì 3 ottobre 2017 17:28:52 UTC+2, casanmaner ha scritto:
> Probabilmente sarebbe più utile avere un file di esempio, magari con non tutti i dati e con dati "sensibili" modificati, in modo da non dover ricostruire la situazione senza conoscere esattamente lo schema.

Ecco. Siccome non so come allegare file, ho messo sul mio sito un esempio con qualche dato.
Come si nota, con i dati ordinati per numero le immagini sono inserite nella propria riga che ho adattato alla loro altezza.
Quando vado ad inserire un filtro le righe trovate sono quelle giuste con la propria altezza immagine.
Quando si effettua un ordinamento invece, ad esempio per PRODUTTORE, le righe vengono mescolate e l'altezza cambiata. Le immagini risultano distorte, quelle grandi sono appiattite e quelle piccole appaiono in una riga troppo alta dove si perdono.
Grazie per l'aiuto.

http://www.studio-beethoven.it/file-esempio.xlsx

Lorenzo

unread,
Oct 4, 2017, 5:05:07 AM10/4/17
to
che ne dite di una colonna di appoggio con caratteri incolonnati e in
numero sufficiente a garantire l'altezza della riga? Preciso tipo:
§/acapo/§/acapo/§/acapo/ etc: poi carattere di colore uguale allo sfondo
Dopo l'ordinamento si seleziona il foglio e con doppio click sulla
seconda riga sistema tutte le righe alla giusta altezza.
Diversamente credo solo una macro.
Ciao, Lo

Lorenzo

unread,
Oct 4, 2017, 6:33:42 AM10/4/17
to
ancora meglio (per evitare problemi con il carattere uguale allo sfondo
visto che siamo in una tabella a righe di colore alternato), farei una
sequenza di [spazio] poi [ALT] e [invio] e così via quanto basta a
contenere in altezza l'immagine.
Lo

Roberto Guerra

unread,
Oct 4, 2017, 7:35:58 AM10/4/17
to
> > che ne dite di una colonna di appoggio con caratteri incolonnati e in
> > numero sufficiente a garantire l'altezza della riga? Preciso tipo:
> > §/acapo/§/acapo/§/acapo/ etc: poi carattere di colore uguale allo sfondo
> > Dopo l'ordinamento si seleziona il foglio e con doppio click sulla
> > seconda riga sistema tutte le righe alla giusta altezza.
> > Diversamente credo solo una macro.
> > Ciao, Lo
> ancora meglio (per evitare problemi con il carattere uguale allo sfondo
> visto che siamo in una tabella a righe di colore alternato), farei una
> sequenza di [spazio] poi [ALT] e [invio] e così via quanto basta a
> contenere in altezza l'immagine.
> Lo

Buongiorno e grazie per l'aiuto.
Ho provato, e vista la mia ignoranza in materia, ho pensato di mettere i caratteri in nero su una delle colonne nere fuori dalla tabella... ma in effetti non facendo parte della tabella non vengono ordinate.

Ho quindi adottato il secondo consiglio e questo funziona. Non mi è chiaro solo come far si che tutte le righe siano adattate in altezza, perchè se evidenzio tutta la tabella e faccio doppio clic sulla seconda riga, quella arancione per intenderci, non succede nulla, Idem per il doppio clic sulle altre righe.

Purtroppo ho una tabella con circa 2000 righe e fare questa operazione su tutte sarebbe atroce... sigh... però è già una soluzione al problema.

Grazie ancora e chissà che non ci siano altre soluzioni?

Lorenzo

unread,
Oct 4, 2017, 8:29:36 AM10/4/17
to
Ho detto male probabilmente.
- selezioni l'intero FOGLIO: click sul vertice in alto a SX all'incrocio
fra righe e colonne (dovrebbe esserci un triangolino).
- tutto il foglio risulterà selezionato
- ti sposti con il mouse in corrispondenza dei numeri di riga (diciamo
alla terza o quarta riga per esemplificare
- il puntatore del mouse assume la forma di una linea orizzontale con
due freccine una in alto e l'altra in basso (una croce insomma ma con
due freccine)
- fai doppio click e adegua l'altezza delle righe come detto.


> Grazie ancora e chissà che non ci siano altre soluzioni?
si secondo me la soluzione ottimale passa dal VBA che "registra"
l'altezza delle singole righe e la associa ai singoli campi per i quali
vuoi fare l'ordinamento. Dopo l'ordinamento si dovrebbe fare una seconda
passata che in base al valore del campo "match" impone l'altezza della
riga (in pixel credo)
Io però non lo so fare.... :(
ciao, Lo

Lorenzo

unread,
Oct 4, 2017, 8:36:01 AM10/4/17
to
preciso che l'altezza dovrebbe essere associata al campo i cui valori
sono univoci, non si ripetono cioè per più records.
Nel tuo caso potrebbe essere il campo "TITOLO" a prescindere da quale
campo sceglierai per l'ordinamente che ritengo dovrà anch'esso essere
fatto tramite VBA affinchè la cosa funzioni.
Ciao, Lo

casanmaner

unread,
Oct 4, 2017, 9:35:05 AM10/4/17
to
Direi che la tua soluzione, di inserire dopo il testo del titolo, diversi "a capo" con esecuzione dell'adattamento di riga, sia la soluzione più funzionale.
Si potrebbe aggiungere una colonna ulteriore di appoggio alla fine della tabella e poi nascondere la colonna.

Roberto Guerra

unread,
Oct 4, 2017, 10:19:35 AM10/4/17
to
Anche l'idea della colonna da nascondere va benissimo. Infatti così posso inserire al posto dei diversi "a capo" una serie di numeri, così da controllare visivamente l'altezza delle righe e fare un copia e incolladei numeri nella colonna da nascondere.
In seguito ho provato una macro per fare tutta l'operazione di ordinamento delle colonne con conseguente selezione della tabella ed esecuzione dell'adattamento delle righe. In seguito nascondendo la colonna, con un solo pulsante situato all'inizio di ogni colonna assegnato ad una macro che esegua quello che avete spiegato, ottengo tutto in un solo clic.
Direi sia efficace.
Unico neo..... inserire i numeri in colonna su tutte le 2000 righe...
Per caso le righe si possono ordinare a seconda della loro altezza?
Grazie per l'aiuto.

casanmaner

unread,
Oct 4, 2017, 1:11:38 PM10/4/17
to
Il giorno mercoledì 4 ottobre 2017 16:19:35 UTC+2, Roberto Guerra ha scritto:


> Per caso le righe si possono ordinare a seconda della loro altezza?
Direi di no.
Forse si potrebbe prevedere una procedura che, in base alla situazione attuale dell'altenzza riga, inserisca tanti numeri e "acapo", in automatico.
In modo da non doverlo fare manualmente.
Vediamo se ne esce fuori qualcosa.

casanmaner

unread,
Oct 4, 2017, 1:45:16 PM10/4/17
to
Prova a vedere questo che è il tuo file dove ho aggiunto una colonna (F) che fa da appoggio.
In quella colonna ho impostato il carattere Calibrì 9.
Ho selezionato le righe, sempre in corrispondenza della colonna di appoggio, dove erano presenti le immagini e ho lanciato la macro "ImpostaAltezzaRighe".
https://www.dropbox.com/s/i4q6j0ike84fdrx/Ordinare%20i%20dati%20mantenendo%20la%20loro%20altezza%20riga.xlsm?dl=0

Ti direi di riprodurre la medesima situazione in una copia del tuo file originale e provare a vedere se dopo l'adattamento delle righe con il numero di numeri (scusa il gioco di parole) le immagini rimangono di dimensioni ottimali.
Qualche piccolo adattamento potrebbe esserci perché è difficile trovare un numero di caratteri preciso per via dei "rotti".
Io mi sono basato su di una riga prima delle modifiche che aveva altezza 48,75 e dove circa ci stanno 4 numeri e 3 "a capo".
Prova a vedere se può fare al tuo caso.
Ma prova prima su di una copia :-)

Questa la procedura che lavora le celle selezionate:

Sub ImpostaAltezzaRighe()
'nella colonna di appoggio Carattere Calibrì dimensione 9
'selezionare le "2000" righe della colonna di appoggio e lanciare questa macro
Const ParametroBase As Double = 48.75 / 4
Dim AltezzaRiga As Double
Dim DimensioneCarattere As Double
Dim NumeroCaratteriNumerici As Long
Dim c As Range
Dim i As Long, cont As Long
Dim str As String
For Each c In Selection
NumeroCaratteriNumerici = Application.WorksheetFunction.RoundUp(c.RowHeight / ParametroBase, 1)
cont = 1
str = ""
If NumeroCaratteriNumerici = 0 Then NumeroCaratteriNumerici = 1
For i = 1 To NumeroCaratteriNumerici
If NumeroCaratteriNumerici = 1 Then
str = cont
Else
If i < NumeroCaratteriNumerici Then
str = str & cont & Chr(10)
Else
str = str & cont
End If
cont = cont + 1
End If
Next i
With c
.Value = str
.EntireRow.AutoFit
End With
Next c
End Sub

Roberto Guerra

unread,
Oct 5, 2017, 2:08:14 AM10/5/17
to
Ma è fantastico!!
Grazie infinite casanmaner, ho provato su una copia e funziona egregiamente!
Questa cosa mi affascina...
Avevo iniziato manualmente ad inserire i numeri in una tabella da 120 righe, lasciando quella da 2000 righe per tempi migliori, ma con questa macro mi ci metto subito!!

L'altezza righe con le immagini dopo l'esecuzione della macro va benissimo. Come dici tu, a volte capita che i "rotti" creino uno spazio troppo grande dopo l'immagine, ma in quel caso, come già stavo facendo nel mio file manualmente, basta togliere un numero oppure diminuire la grandezza del font velocemente con il tastino in alto.

Direi che non potevo avere risposta migliore. Prima l'idea dei numeri, poi della macro: grazie davvero a te e a Lorenzo.
Buona giornata.

casanmaner

unread,
Oct 5, 2017, 2:17:14 AM10/5/17
to
Prego e buon lavoro :-)

Ammammata

unread,
Oct 5, 2017, 2:31:23 AM10/5/17
to
Il giorno Tue 03 Oct 2017 09:18:19a, ** ha inviato su
microsoft.public.it.office.excel il messaggio news:e930fe2b-0f12-4df1-9370-
49da31...@googlegroups.com. Vediamo cosa ha scritto:

> Una volta ordinati i dati ...

eppure mi sembra di ricordare che nel vecchio excel 2.1 (e forse anche 3)
potevo ordinare una tabella colorata a righe alterne mantenendo la
formattazione come l'originale... mah... dovrei andare a recuperare i
floppy e reinstallarlo sul vecchio thinkpad, magari durante le prossime
vacanze di natale

--
/-\ /\/\ /\/\ /-\ /\/\ /\/\ /-\ T /-\
-=- -=- -=- -=- -=- -=- -=- -=- - -=-
>>>>> http://www.bb2002.it :) <<<<<
........... [ al lavoro ] ...........

Roberto Guerra

unread,
Oct 5, 2017, 4:57:23 AM10/5/17
to

Mentre ancora godo delle soluzioni proposte :-) vorrei postare qui una domanda inerente.

Avendo necessità, dopo l'ordinamento, di evidenziare la tabella e settare altezza riga automatica, ho registrato una macro mentre svolgevo l'operazione.
La strana sorpresa è stata che, dopo aver cercato i dati in una colonna applicando un filtro e ordinato i dati secondo un'altra colonna mentre era attivo il filtro, la macro fa il suo lavoro ordinando e regolando l'altezza delle righe ma cancella il filtro e ho così nuovamente tutti i dati della tabella, senza filtri.

Dico che è strano, perchè se non uso la macroe faccio tutto a mano, l'ordinamento tiene conto del filtro.

Se si può ovviare all'inconveniente mi farebbe piacere.

Un saluto e sempre grazie


casanmaner

unread,
Oct 5, 2017, 7:53:00 AM10/5/17
to
Non è che registrando hai cancellato il filtro?

Roberto Guerra

unread,
Oct 5, 2017, 9:18:15 AM10/5/17
to
Il giorno giovedì 5 ottobre 2017 13:53:00 UTC+2, casanmaner ha scritto:
> Non è che registrando hai cancellato il filtro?

la procedura è ...
apro la tabella
inserisco il filtro PRODUTTORE
faccio partire la registrazione
ordino un'altra colonna TITOLO con filtro inserito su PRODUTTORE
seleziono tabella
aggiusto altezza righe automaticA
stop.

Se faccio partire la macro funziona. se inserisco un filtro e la faccio ripartire, mi riporta sempre a tutte le righe, mentre io pensavo agisse solamente su quelle selezionate dal filtro.

casanmaner

unread,
Oct 5, 2017, 9:32:29 AM10/5/17
to
Ho provato a seguire passo passo quanto hai detto e dalla registrazione ottengo questo
Sub Macro1()
'
' Macro1 Macro
'

'
ActiveWorkbook.Worksheets("Foglio1").ListObjects("Tabella1").Sort.SortFields. _
Clear
ActiveWorkbook.Worksheets("Foglio1").ListObjects("Tabella1").Sort.SortFields. _
Add Key:=Range("Tabella1[[#All],[Colonna1]]"), SortOn:=xlSortOnValues, _
Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Foglio1").ListObjects("Tabella1").Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("A3:B6").Select
Selection.Rows.AutoFit
End Sub


Però ogni volta che la lancio non perdo il filtro (sia che lo tolga o lo riapplichi).
E ottengo l'ordinamento dei soli elementi filtrati.

Roberto Guerra

unread,
Oct 5, 2017, 9:54:36 AM10/5/17
to
questo è quello che ottengo io

Sub PROVA()
'
' PROVA Macro
'

'
ActiveWorkbook.Worksheets("Effetti").ListObjects("Tabella2").Sort.SortFields. _
Clear
ActiveWorkbook.Worksheets("Effetti").ListObjects("Tabella2").Sort.SortFields. _
Add Key:=Range("Tabella2[[#All],[TITOLO]]"), SortOn:=xlSortOnValues, Order _
:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Effetti").ListObjects("Tabella2").Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
ActiveWindow.SmallScroll Down:=-24
Cells.Select
Selection.Rows.AutoFit
ActiveWindow.ScrollRow = 2
ActiveWindow.ScrollRow = 6
ActiveWindow.ScrollRow = 7
ActiveWindow.ScrollRow = 12
ActiveWindow.ScrollRow = 13
ActiveWindow.ScrollRow = 15
ActiveWindow.ScrollRow = 16
ActiveWindow.ScrollRow = 17
ActiveWindow.ScrollRow = 18
ActiveWindow.ScrollRow = 19
ActiveWindow.ScrollRow = 17
ActiveWindow.ScrollRow = 16
ActiveWindow.ScrollRow = 8
ActiveWindow.ScrollRow = 5
ActiveWindow.ScrollRow = 4
ActiveWindow.ScrollRow = 1
ActiveWindow.ScrollRow = 2
ActiveWindow.ScrollRow = 3
ActiveWindow.ScrollRow = 4
ActiveWindow.ScrollRow = 5
ActiveWindow.ScrollRow = 6
ActiveWindow.ScrollRow = 7
ActiveWindow.ScrollRow = 8
ActiveWindow.ScrollRow = 9
ActiveWindow.ScrollRow = 10
ActiveWindow.ScrollRow = 11
ActiveWindow.ScrollRow = 12
ActiveWindow.ScrollRow = 13
ActiveWindow.ScrollRow = 14
ActiveWindow.ScrollRow = 16
ActiveWindow.ScrollRow = 17
ActiveWindow.ScrollRow = 18
ActiveWindow.ScrollRow = 19
ActiveWindow.ScrollRow = 20
ActiveWindow.ScrollRow = 21
ActiveWindow.ScrollRow = 20
ActiveWindow.ScrollRow = 17
ActiveWindow.ScrollRow = 13
ActiveWindow.ScrollRow = 9
ActiveWindow.ScrollRow = 4
ActiveWindow.ScrollRow = 2
ActiveWindow.ScrollRow = 1
End Sub
Sub Macroprova()
'
' Macroprova Macro
'

'
ActiveWorkbook.Worksheets("Effetti").ListObjects("Tabella2").Sort.SortFields. _
Clear
ActiveWorkbook.Worksheets("Effetti").ListObjects("Tabella2").Sort.SortFields. _
Add Key:=Range("Tabella2[[#All],[TITOLO]]"), SortOn:=xlSortOnValues, Order _
:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Effetti").ListObjects("Tabella2").Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Cells.Select
Selection.Rows.AutoFit
Range("F3").Select
End Sub

casanmaner

unread,
Oct 5, 2017, 10:08:52 AM10/5/17
to
Prova su questo file a vedere se si toglie il filtro lanciando la Macro1 (c'è il pulsante)
https://www.dropbox.com/s/5te024oj2eemoys/Cartel1.xlsm?dl=0

Roberto Guerra

unread,
Oct 5, 2017, 10:41:20 AM10/5/17
to
Il giorno giovedì 5 ottobre 2017 16:08:52 UTC+2, casanmaner ha scritto:
> Prova su questo file a vedere se si toglie il filtro lanciando la Macro1 (c'è il pulsante)
> https://www.dropbox.com/s/5te024oj2eemoys/Cartel1.xlsm?dl=0

nella tua tabella funziona.

nel mio file no, mi da un errore ma devo guardare meglio appena riesco.

grazie

Roberto Guerra

unread,
Oct 6, 2017, 2:13:20 AM10/6/17
to
Il giorno giovedì 5 ottobre 2017 16:08:52 UTC+2, casanmaner ha scritto:
> Prova su questo file a vedere se si toglie il filtro lanciando la Macro1 (c'è il pulsante)
> https://www.dropbox.com/s/5te024oj2eemoys/Cartel1.xlsm?dl=0

Caro casanmer, posso dirti ora, dopo alcuni esperimenti, quello che mi succede e come ho aggirato l'ostacolo.

Ho notato che dopo che ho inserito il filtro e ordinato i dati, quando sistemo l'altezza delle righe e seleziono il foglio, sia che esegua poi doppio click sia che utilizzi il comando formato-adatta altezza righe, immediatamente quando Excel adatta le righe mi compaiono anche tutte le altre. Il filtro viene annullato, ma l'icona di filtro inserito c'è ancora e così anche le voci selezionate nella lista a discesa che compare cliccandoci sopra. Solo che in tabella vengono visualizzate tutte le righe.

Se ora eseguo il comando "riapplica filtro" nella colonna che avevo già filtrato ottengo quello che volevo. Dati filtrati colonna I, ordinati secondo colonna F, con righe adattate in altezza.

Ho inserito quindi nella macro, mentre la registravo, i comandi "riapplica filtro" su tutte le colonne e ora ci siamo!

E' stata lunga.... ma sono ostinato :-)
Non ho ancora capito però come mai nel tuo foglio esempio con pulsante la macro funzionasse bene...

Grazie ancora di tutto e buona giornata!
0 new messages