Come rendere la funzione "Adatta automaticamente altezza riga" di Excel adattare automaticamente l'altezza della riga?


88

Per ogni generazione di Excel che ricordo (incluso il 2010, che sto utilizzando ora), le funzionalità "Ridimensionamento automatico riga" di Excel a volte non riescono a ridimensionare automaticamente una riga quando la cella contiene testo racchiuso. Quando funziona correttamente, tutto il testo viene rivelato e non c'è spazio aggiuntivo sotto l'ultima riga di testo. Quando fallisce, aggiunge ulteriore spazio sotto il testo. A peggiorare le cose, ciò che vedi non è sempre quello che ottieni, cioè, il testo che è apparso bene sullo schermo viene tagliato quando viene stampato. Puoi anche ottenere dimensioni diverse a seconda che tu abbia ingrandito / ridotto o alle dimensioni effettive.

Caso di prova semplice:

Perché c'è un gap di una riga dopo il testo nella cella A1 ma non in A2?

(Per riprodurre: imposta la larghezza della colonna A su 17,14 (125 pixel), il testo si avvolge e l'allineamento delle celle in alto.)

(Ho ricontrollato che ho applicato l'altezza automatica della riga su entrambe le righe. Il livello di zoom è del 100%.)

Adattamento automatico non riuscito per la prima riga, successo per la seconda

Esiste un rimedio noto per questo senza ricorrere alla regolazione manuale delle altezze delle righe (che non è pratico per più di una manciata di righe)?


Nel caso in cui qualcuno volesse riprodurre l'esempio nella mia domanda, la larghezza della colonna A è 17,15 (125 pixel).
Devuxer,

1
Il bug sembra dipendere dal carattere e dalla dimensione del carattere
Raystafarian,

1
@Raystafarian, non sembra funzionare con Wrap Text attivato.
devuxer

1
Ho provato a montare automaticamente le colonne, che hanno allargato una colonna, quindi a montare automaticamente le righe. Questo ha fatto scendere da 73 a 64 pagine, ma ancora molte righe vuote nella parte inferiore della maggior parte delle righe. Ho le righe allineate in alto. La modifica manuale delle dimensioni delle righe fa sembrare OK quando lavoro sul documento, ma non nell'anteprima o nella stampa.

1
Sì, così fastidioso! Anche visto questo, almeno in Excel 2007. Non ricordo di aver mai visto in Excel 2003.
abstrask

Risposte:


105

Un metodo che ho appena trovato (estendendo un po 'il post precedente):

  • Seleziona l'intero foglio.
  • Ridimensiona una colonna un po 'più ampia (poiché è selezionato l'intero foglio, tutte le colonne diventeranno più larghe)
  • Fare doppio clic su un separatore di riga: l'altezza della riga verrà adattata automaticamente
  • Fare doppio clic su un separatore di colonna: le larghezze della colonna verranno adattate automaticamente

Ecco!


2
Questo sembra davvero funzionare. L'unica area grigia è dove dici "un po 'più ampio". Uno degli esempi che ho provato non ha funzionato a meno che non abbia allungato abbastanza la colonna, ma alla fine l'ho fatto funzionare. Grazie!
Devuxer,

5
Ho selezionato l'intero foglio, quindi ho fatto doppio clic sul separatore di riga tra due righe casuali e l'intero documento ha riadattato le altezze delle righe.
Keith Sirmons,

6
Si noti che AutoFit non funziona per le celle unite: support.microsoft.com/kb/212010
freb

Questo metodo non funziona solo se tutte le colonne hanno la stessa larghezza? Quando ho ridimensionato una colonna un po 'più ampia, tutte le altre colonne sono diventate della stessa larghezza (in Excel 2010).
Ed Greaves,

Aspetta un attimo: questo metodo ha l'effetto collaterale di aumentare la larghezza di tutte le colonne nel foglio, non è vero?
Ant_222

13

Excel WYSIWYG non è il migliore. Nella tua foto, "gatto". appena si insinua nella quinta riga. Se riduci la percentuale di zoom a un valore inferiore al 100% (ad esempio il 99%), allora "cat". è ora spostato sulla sesta riga. Penso che Excel stia cercando di adattarsi automaticamente in modo da garantire che tutto sia quasi sempre visibile, indipendentemente dal livello di zoom.

Questo non è l'unico problema che avrai con AutoFit. Inoltre, il modo in cui viene stampata una cella racchiusa in una parola non corrisponderà sempre a ciò che vedi sullo schermo. Prendi il tuo esempio e cambia il carattere in Courier lasciando la dimensione a 11.

Carattere modificato in Courier

Come puoi vedere, la cella A1 sembra avere 1,5 linee extra. Ora guarda l'anteprima di stampa, "cat". è completamente nascosto.

anteprima di stampa dello stesso file

Nella mia esperienza, Excel ha questo problema con alcuni caratteri e dimensioni dei caratteri più di altri. Courier è peggio di Courier New , la dimensione 11 è generalmente peggiore di 10 o 12. (Perché hanno scelto la dimensione 11 come nuovo default, non ne ho idea.)


Quindi ... praticamente l'hanno rotto. La tua spiegazione è plausibile però, ma mi dà davvero
fastidio

3

Ho appena scritto una piccola macro a tale scopo. Gli ho assegnato un tasto di scelta rapida (Ctrl-Shift-J) e per me funziona come un incantesimo.

Sub ArrangeTable()
'set proper column width and row height for the current region
    With Selection.CurrentRegion
        .Columns.ColumnWidth = 200
        .Columns.EntireColumn.AutoFit
        .Rows.EntireRow.AutoFit
    End With
End Sub

Per renderlo disponibile in modo permanente, puoi facilmente creare un componente aggiuntivo a caricamento automatico:

  • crea un modulo in una nuova cartella di lavoro vuota e incolla il codice,
  • assegnagli il tasto di scelta rapida desiderato,
  • quindi Save As, Add-innella cartella In %appdata%\Microsoft\Excel\XLSTART
    questo modo verrà caricato in modo invisibile ogni volta che avvii Excel.

Oppure potresti fare questo: Private Sub Worksheet_Change (ByVal Target As Range) Disponi Tabella Fine
Sottotitolo

0

In alcuni casi, il problema dello spazio aggiuntivo in alcune righe dopo aver richiamato "Altezza riga adattamento automatico" potrebbe essere che una colonna nascosta ha racchiuso il testo in quelle righe.


Non è il caso di questa domanda.
Dmitry Grigoryev il

0

C'è un articolo di KB su questo che "suggerisce" (è inaccettabilmente scarso, nel classico modo di Microsoft) che se mai imposta un'altezza di riga, il montaggio automatico dell'altezza viene definitivamente eliminato per quella riga di quel foglio di lavoro. Tuttavia, le righe la cui altezza non hai toccato si adattano automaticamente.

Mentre puoi ripristinare le larghezze di colonna con l'impostazione "larghezza standard" nel 2003 (progettato da Madman 2007: passa a "larghezza predefinita"), ma si sono dimenticati (ancora) (e ancora) di inserirla per le righe. Quindi la permanenza sembra inevitabile. Ciò significa che, se si dispone di un'altezza predefinita di 15 e si crea un foglio e si impostano tutte le altezze su 12, si è rinunciato al montaggio automatico automatico.


1
Non posso duplicare questo comportamento. Non appena eseguo "Adatta automaticamente altezza riga", qualsiasi impostazione di altezza manuale per quella riga viene immediatamente sostituita con l'altezza di adattamento automatico. Il problema è semplicemente che l'altezza di adattamento automatico è spesso errata.
Devuxer,

POSSO duplicare questo comportamento. Questo è esattamente come funziona per me.
Peter Nore,

0

A volte esiste il metodo nucleare per correggere gli autoproblemi che si comportano male.

Quello che faccio è copiare il testo da ogni cella e incollare i dati nel Blocco note, quindi eliminare la riga. Quindi copio e inserisco immediatamente una riga vuota ma con la stessa formattazione e il buon comportamento della riga che è stata eliminata. (È necessario copiare e inserire l'intera riga utilizzando i pulsanti della riga sinistra.)

Fatto ciò, devi tornare indietro e inserire il testo dal blocco note in ogni cella. (Usa F2o attiva in altro modo la modalità di modifica di ogni cella prima di inserire il testo.) È una seccatura, quindi è l'ultima risorsa, specialmente per i fogli di lavoro ginormalmente ampi.

A volte è l'unica soluzione, poiché il problema risiede nel programma stesso.


1
copia il testo da ogni cella - questo sembra richiedere tanto lavoro quanto la formattazione manuale.
Dmitry Grigoryev il

0

Non l'ho provato a fondo ma ha funzionato per me. Fondamentalmente regola automaticamente tutti i fogli, quindi torna indietro e imposta la larghezza della colonna sulla larghezza originale, a meno che non sia stata estesa dalla regolazione automatica. Avevo solo 10 colonne e mai più di 1000 righe, quindi regola il codice secondo necessità.

Sub ResizeCells()
    Dim sheetCounter As Integer
    Dim rowCounter As Integer
    Dim colCounter As Integer
    Dim totalWidth As Double
    Dim oldColWidths(1 To 10) As Double

    For sheetCounter = 1 To ThisWorkbook.Sheets.Count
        ActiveWorkbook.Worksheets(sheetCounter).Select
        totalWidth = 0

        ' Extend the columns out to 200
        For colCounter = 1 To 10
            oldColWidths(colCounter) = Cells(1, colCounter).ColumnWidth
            totalWidth = totalWidth + oldColWidths(colCounter)
            Cells(1, colCounter).ColumnWidth = 200
        Next

        For rowCounter = 4 To 1000
            If Cells(rowCounter, 1).Value <> "" Or Cells(rowCounter, 2).Value <> "" Or Cells(rowCounter, 3).Value <> "" Then
                Rows(rowCounter & ":" & rowCounter).EntireRow.AutoFit
            End If
        Next

        ' do autofit
        For colCounter = 1 To 10
            Cells(1, colCounter).EntireColumn.AutoFit
        Next

        ' reset to original values if current width is less than the original width.
        For colCounter = 1 To 10
            If Cells(1, colCounter).ColumnWidth < oldColWidths(colCounter) + 0.25 Then
                Cells(1, colCounter).ColumnWidth = oldColWidths(colCounter)
            End If
        Next
    Next
End Sub

Come risolve il bug di Adattamento automatico? Si adattano automaticamente le righe, quindi si adattano automaticamente le colonne e quindi si ridimensionano le larghezze della colonna originale. Perché finisce con l'altezza corretta della fila di raccordo? A proposito, totalWidthè disoccupato.
Ant_222,

Non funziona completamente per me, perché ripristini solo la larghezza di quelle colonne che sono diventate più strette. Il tuo algoritmo pertanto non mantiene la larghezza della colonna.
Ant_222

-1

Per parafrasare Dunc :

Ho risolto un problema simile con:

  1. Selezione dell'intero foglio di calcolo.

  2. Fare doppio clic sulla linea a margine tra le due righe.

In particolare per risolvere il problema relativo a quella riga aggiuntiva, suppongo che ci sia un personaggio lì. Potrebbe non essere un personaggio visibile, ma c'è sicuramente qualcosa lì.


3
I tuoi passaggi non sono diversi da quelli che ho già provato (il doppio clic tra le righe è solo una scorciatoia per "Adatta automaticamente altezza riga"). Per quanto riguarda la tua teoria secondo cui esiste un personaggio in più, potresti avere ragione, ma di certo non ne ho scritto uno e non saprei liberarmene. Ti invito a provare a digitare il testo esatto che ho nella mia illustrazione in Excel e vedere se ottieni gli stessi risultati.
Devuxer,

1
Non c'è personaggio lì sul mio.
Raystafarian,

-1

Non mi sono preso il tempo di leggere gli altri commenti. Perché la linea nella parte inferiore del primo blocco e non nel secondo blocco?

È perché il testo termina troppo vicino al bordo destro della cella. Se regoli la colonna in modo che sia leggermente più larga e fai doppio clic tra le righe, verrà ridimensionata di conseguenza.


4
Non ho dubbi sul fatto che tu abbia ragione, ma non è più "auto", è manuale.
Devuxer

-1

Anch'io ho sopportato questo insetto minuscolo ma estremamente distratto per molti anni. Non ho alcun problema, tranne che armeggiare con la larghezza della riga per la cella con la maggior parte del testo al suo interno, e alla fine il programma cederà e mostrerà il testo correttamente.


armeggiare con la larghezza della riga non è una soluzione riproducibile.
Dmitry Grigoryev il

-1

C'è una soluzione semplice:

1) Seleziona tutte le righe che vuoi formattare automaticamente (se è un blocco grande fai clic sul primo e poi premi Maiusc + Fine e Maiusc + Giù)

2) Fai clic con il pulsante destro del mouse sulla selezione, Formatta celle, scheda Allineamento, deseleziona Avvolgi testo.

Spero che sia di aiuto ;)


1
Se deselezioni Wrap text, non ha più senso regolare automaticamente le altezze delle righe, poiché tutte le righe avranno le stesse dimensioni.
Dmitry Grigoryev il

Sono stato infastidito da questo problema per anni. Attivare o disattivare il testo a capo per una riga problematica ripristina la funzione di adattamento automatico.
Mitch,

-1

Ho Excel 2010. Ho scoperto che questo problema si è verificato quando l'impostazione di Zoom non era al 100%. Finché sono al 100%, non riesco a tagliare il testo con AutoFit per colonne e righe


3
Nell'esempio che ho usato per la mia domanda, ero a zoom = 100% per tutto il tempo. Il problema si è verificato a prescindere.
Devuxer,

-1

La mia ipotesi è che Excel viene annodato quando deve estendere troppe linee. Ho avuto un'esperienza simile a quanto sopra. E sembra che ci sia un extra NL / CR / LF alla fine, ma so che non ci sia. Se costruisco alcuni caratteri alla cella, si formatta automaticamente OK fino a quando non viene raggiunta una dimensione particolare, quindi inserisce la riga aggiuntiva. (Un comportamento simile al contrario si verifica se si inizia eliminando alcuni caratteri.) Succede in momenti diversi con celle diverse.

Bummer!

Quindi, se puoi estendere la larghezza della cella, probabilmente puoi evitare il problema. Se non riesci (come nel mio caso), sei bloccato con la formattazione manuale. Come ho detto, "Bummer!"


-1

In realtà c'è un personaggio in più lì. È il personaggio LF nascosto che si trova alla fine di ogni campo. Quando il testo ha le dimensioni giuste, la riga in più è lì per contenere il carattere LF. Ridimensionare la larghezza della colonna come suggerito da altre persone risolverà il problema di quella cella, ma se il tuo foglio di calcolo ha molti valori di dimensioni variabili in questa stessa colonna, è possibile che la correzione per questa cella causi il problema ad un'altra cella della colonna . Ho imparato a conviverci per la maggior parte del tempo.


Non c'è certamente nessun personaggio LF nascosto alla fine di ogni campo, a meno che ovviamente l'OP non l'abbia messo lì con Alt + Invio. La domanda riguarda davvero il caso in cui non ci sono caratteri di nuova riga, ma Excel non riesce ancora ad allineare le celle correttamente.
Dmitry Grigoryev il

-2

Ciò che ha funzionato per me (Excel 2010) è stato eliminare un centinaio di colonne inutilizzate a destra dei miei dati. Posso solo supporre che ci fosse qualcosa che causava un comportamento anomalo dell'altezza della riga automatica.


4
Posso vedere come ciò potrebbe aiutare, ma non fa alcuna differenza per il caso di test mostrato nella mia domanda.
Devuxer

-2

seleziona tutte le celle e fai clic sulla linea che separa due volte le righe ... lo farà automaticamente.

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.