it-swarm-eu.dev

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

Per ogni generazione di Excel che riesco a ricordare (incluso il 2010, che sto usando ora), le funzionalità di "Auto Size Row" di Excel a volte non riescono a dimensionare automaticamente una riga quando la cella contiene del testo avvolto. 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, quello che vedi non è sempre quello che ottieni, cioè il testo che sembrava ok sullo schermo viene troncato quando viene stampato. È inoltre possibile ottenere ridimensionamenti diversi a seconda che si esegua l'ingrandimento/la riduzione o la dimensione effettiva.

Semplice test case:

Perché c'è un intervallo 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 a capo e l'allineamento delle celle in alto.)

(Ho ricontrollato che ho applicato Auto Fit Row Height a entrambe le righe. Il livello di zoom è 100%.)

Auto Fit fails for the first row, succeeds for the second

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

85
devuxer

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

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

Ecco!

101
Nick Carrington

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

Questo non è l'unico problema che avrai con AutoFit. Inoltre, il modo in cui una cella con Word viene stampata non corrisponde sempre a ciò che vedi sullo schermo. Prendi il tuo esempio e cambia il carattere in Courier lasciando le dimensioni a 11.

Changed font to Courier

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

print preview of same file

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

13
mischab1

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

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 sempre disponibile, puoi facilmente creare un componente aggiuntivo di caricamento automatico:

  • creare un modulo in una nuova cartella di lavoro vuota e incollare il codice,
  • assegnagli il tasto di scelta rapida che desideri,
  • poi Save As, Add-in, nella cartella %appdata%\Microsoft\Excel\XLSTART
    In questo modo verrà caricato in modo invisibile ogni volta che avvii Excel.
2
Patrick Honorez

Anch'io ho sopportato questo insetto minuscolo ma estremamente distratto per molti anni. Non ho alcun modo di aggirare il problema, ad eccezione del fatto che mi piace armeggiare con la larghezza della riga per la cella con la maggior parte del testo, e alla fine il programma si fermerà e mostrerà il testo correttamente.

0
Andrew Buchanan

Qualche volta esiste il metodo nucleare per correggere i malfunzionamenti degli autoveicoli.

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 eliminata. (È necessario copiare e inserire l'intera riga utilizzando i pulsanti della riga sinistra.)

Una volta fatto, devi tornare indietro e inserire il testo dal blocco note in ogni cella. (Uso F2 o altrimenti attivare la modalità di modifica di ogni cella prima di inserire il testo.) È un dolore, quindi è l'ultima risorsa, soprattutto per i fogli di lavoro incredibilmente ampi.

È l'unica soluzione a volte, poiché il problema risiede nel programma stesso.

0
Paul

Non l'ho provato a fondo, ma ha funzionato per me. In sostanza, regola automaticamente tutti i fogli, quindi torna indietro e imposta la larghezza della colonna sulla larghezza originale, a meno che non venga estesa dalla regolazione automatica. Ho 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
0
Dan Williams

C'è un articolo kb su questo che "suggerisce" (è inaccettabilmente scarso, nella classica moda di Microsoft) che se si imposta un'altezza di riga, l'autopitting automatico dell'altezza automatica è permanentemente scomparso per quella riga di quel foglio di lavoro. Le file di cui non hai toccato l'altezza saranno autofittate bene.

Mentre è possibile ripristinare le larghezze delle colonne con l'impostazione "larghezza standard" nel 2003 (2007 progettato da madman: passare a "larghezza predefinita"), ma hanno dimenticato (di nuovo) (e di nuovo) per inserire 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 è appena perso l'autofitting automatico.

0

In alcuni casi, il problema dello spazio extra in alcune righe dopo aver richiamato l'altezza della riga di AutoFit potrebbe essere dovuto al fatto che una colonna nascosta ha il testo avvolto in quelle righe.

0
BobO

Ho Excel 2010. Ho scoperto che questo problema mi è successo quando la mia impostazione Zoom non era al 100%. Fintanto che sono al 100%, non riesco a tagliare il testo con AutoFit per colonne e righe

0
Kevin Morin

C'è una soluzione facile:

1) Seleziona tutte le righe che vuoi formattare automaticamente (se si tratta di un blocco di grandi dimensioni, fai clic sul primo e quindi premi Maiusc + Fine e Maiusc + Giù)

2) Fare clic con il tasto destro sulla selezione, Formatta celle, scheda Allineamento, deselezionare Testo a capo.

Spero che questo ti aiuti ;)

0
Pedro