2012-02-14 21:16:14 +0000 2012-02-14 21:16:14 +0000
91
91

Como fazer com que a funcionalidade "Auto Fit Row Height" do Excel se ajuste realmente automaticamente à altura da linha?

Para cada geração do Excel que me lembro (incluindo 2010, que estou a usar agora), a funcionalidade “Auto Size Row” do Excel por vezes não consegue realmente auto dimensionar uma linha quando a célula contém texto embrulhado. Quando funciona correctamente, todo o texto é revelado e não há espaço adicional abaixo da última linha de texto. Quando falha, ele adiciona espaço extra abaixo do texto. Para piorar a situação, o que se vê nem sempre é o que se obtém, ou seja, o texto que apareceu bem no ecrã é cortado quando é impresso. Também se obtém um tamanho diferente consoante se faz zoom in/out ou em tamanho real.

Simples test case:

Por que existe um espaço de uma linha após o texto na célula A1 mas não na A2?

(Para reproduzir: largura definida da coluna A a 17,14 (125 pixels), texto envolto e alinhamento das células.)

(Verifiquei duas vezes que apliquei a Altura da Linha de Ajuste Automático em ambas as linhas. O nível de zoom é 100%.)

Existe algum remédio conhecido para isto sem recorrer ao ajuste manual da altura das filas (o que não é prático para mais do que um punhado de filas)?

Respostas (16)

106
106
106
2012-12-05 10:49:44 +0000

Um método que acabei de encontrar (alargando um pouco o posto anterior):

  • Seleccionar a folha inteira.
  • Redimensionar um pouco mais uma coluna (porque a folha inteira está seleccionada, todas as colunas ficarão mais largas)
  • Clicar duas vezes num separador de linhas - a altura da linha será auto-ajustada
  • Clicar duas vezes num separador de colunas - a largura da coluna será auto-ajustada

Voila!

13
13
13
2012-02-15 19:07:25 +0000

O WYSIWYG do Excel não é o melhor. Na sua foto, ‘gato’ mal se esgueira para a 5ª linha. Se reduzir a percentagem de zoom para algo inferior a 100% (99% por exemplo.) então ‘cat.’ é agora embrulhado até à 6ª linha. Penso que o Excel está a tentar auto-ajustar de forma a garantir que tudo é quase sempre visível independentemente do seu nível de zoom.

Esse não é o único problema que terá com o AutoFit. Para além disso, a forma como uma célula envolta em palavras é impressa nem sempre corresponde ao que se vê no ecrã. Tome o seu exemplo e mude a fonte para Courier enquanto deixa o tamanho a 11.

Como pode ver, a célula A1 parece ter 1,5 linhas extra. Agora veja a pré-visualização da impressão, ‘cat.’ está completamente escondida.

Na minha experiência, o Excel tem este problema com certas fontes e tamanhos de fonte mais do que outros. Courier é pior que Courier New , o tamanho 11 é geralmente pior que 10 ou 12. (Porque escolheram o tamanho 11 como o novo padrão, não faço ideia).

3
3
3
2016-01-22 08:51:09 +0000

Acabei de escrever um pequeno macro para esse efeito. Atribuí-lhe uma tecla de atalho (Ctrl-Shift-J) e funciona como um encanto para mim.

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

Para tornar isto permanentemente disponível, pode facilmente fazer um add-in de carregamento automático:

  • criar um módulo numa nova pasta de trabalho em branco e colar o código,
  • atribuir-lhe a tecla de atalho que pretende,
  • depois Save As, Add-in, %appdata%\Microsoft\Excel\XLSTART, para a pasta &007 Desta forma será carregado invisivelmente cada vez que iniciar o Excel.
0
0
0
2013-05-01 19:58:57 +0000

Há um artigo kb sobre isto que “sugere” (é inaceitavelmente escasso, à moda clássica da Microsoft) que se alguma vez se definir uma altura de linha, o ajuste automático de altura desaparece permanentemente para essa linha da folha de trabalho. No entanto, as linhas cuja altura ainda não tocaste vão-se autoajustar bem.

Enquanto que em 2003 podes repor as larguras das colunas com a definição “largura padrão” (madman-design 2007: muda para “largura padrão”), mas esqueceram-se (e outra vez) de colocar isso para as linhas. Por isso, a permanência parece inevitável. Isto significa que, se tiver uma altura por defeito de 15, e criar uma folha e definir todas as alturas para 12, apenas se perdeu o auto-ajuste automático.

0
0
0
2013-07-05 17:03:56 +0000

Por vezes existe o método nuclear para corrigir problemas de auto-comportamento.

O que eu faço é copiar o texto de cada célula e colar os dados no Bloco de Notas, depois apagar a linha. Depois copio e inseri imediatamente uma linha que está em branco mas tem a mesma formatação e bom comportamento que a linha que foi apagada. (Deve copiar e inserir a linha inteira utilizando os botões da linha da esquerda)

Uma vez feito isso, tem de voltar atrás e inserir o texto do Bloco de Notas em cada célula. (Use F2 ou active o modo de edição de cada célula antes de inserir o texto). É um problema, por isso é um último recurso, especialmente para folhas de trabalho ginormemente largas.

É a única solução por vezes, uma vez que o problema reside no próprio programa.

0
0
0
2015-01-08 19:14:53 +0000

Não testei isto exaustivamente, mas tem estado a funcionar para mim. Essencialmente vai ajustar automaticamente todas as folhas e, em seguida, voltar atrás e definir a largura da coluna para a largura original, a menos que tenha sido estendida pelo ajuste automático. Eu só tinha 10 colunas e nunca mais de 1000 linhas, por isso ajuste o código conforme necessário.

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
0
0
2012-06-21 14:33:14 +0000

Em alguns casos, o problema de espaço extra em algumas filas após invocar “AutoFit Row Height” pode ser que uma coluna oculta tenha envolvido texto nessas filas.

-1
-1
-1
2013-04-08 16:10:30 +0000

Eu tenho o Excel 2010. Descobri que esta questão me aconteceu quando o meu Zoom não estava a 100%. Desde que esteja a 100%, não recebo o texto cortado com o AutoFit para colunas e filas

-1
-1
-1
2012-02-14 21:29:39 +0000

Parafraseando Dunc :

resolvi um problema semelhante por:

  1. Selecção da folha de cálculo inteira.

  2. Clique duplo na linha da margem entre as duas linhas.

Especificamente para resolver o seu problema dessa linha extra, eu assumiria que existe um carácter lá. Pode não ser um carácter visível, mas definitivamente há algo lá.

-1
-1
-1
2013-01-01 11:17:02 +0000

Também eu sofri este pequeno mas extremamente perturbador insecto durante muitos anos. Não tenho nenhum trabalho a fazer a não ser mexer na largura da linha para a célula com a maior parte do texto, e eventualmente o programa vai desistir e mostrar o texto correctamente.

-1
-1
-1
2013-02-26 11:57:20 +0000

Existe uma solução fácil:

1) Seleccione todas as linhas que pretende autoformatar (se for um bloco grande clique no primeiro e depois prima Shift+End e Shift+Down)

2) Clique com o botão direito do rato na selecção, Células de Formato, separador Alinhamento, desmarque Texto de Envolvimento.

Espero que isto ajude ;)

-1
-1
-1
2015-12-17 16:10:03 +0000

Na verdade, há aí um carácter extra. É o carácter LF escondido que está no fim de cada campo. Quando o texto tem o tamanho certo a linha extra está lá para segurar o carácter LF. Redimensionar a largura da coluna como outras pessoas sugeriram vai resolver o problema dessa célula, mas se a tua folha de cálculo tiver muitos valores de tamanho variável nesta mesma coluna, é possível que a tua correcção para esta célula faça com que outra célula da coluna tenha o problema. Eu aprendi a viver com isso a maior parte do tempo.

-1
-1
-1
2012-08-06 12:19:12 +0000

Não tive tempo para ler os outros comentários. Porquê a linha no fundo do primeiro bloco e não no segundo bloco?

É porque o texto acaba demasiado perto da margem direita da célula. Se ajustar a coluna para ser um pouco mais larga e fizer duplo clique entre as linhas, o texto será redimensionado em conformidade.

-1
-1
-1
2013-06-20 11:46:42 +0000

A minha hipótese é que o Excel fica atado quando tem de estender demasiadas linhas. Tive uma experiência semelhante à anterior. É como se houvesse um NL/CR/LF extra no final, mas eu sei que não há. Se eu construir a célula alguns caracteres de cada vez, ela auto-formata OK até que um determinado tamanho seja alcançado, então ela coloca na linha extra. (Comportamento semelhante ao contrário acontece se começar por apagar alguns caracteres). Acontece em momentos diferentes com células diferentes.

Bummer!

Por isso se você can ampliar a largura da célula, você provavelmente pode evitar o problema. Se não conseguir (como no meu caso) está preso com a formatação manual. Como eu disse, “Que chatice!”.

-2
-2
-2
2013-01-30 20:38:33 +0000

seleccione todas as células, e clique duas vezes na linha que separa as filas… isso será feito automaticamente.

-2
-2
-2
2012-12-20 00:41:51 +0000

O que funcionou para mim (Excel 2010), foi apagar uma centena de colunas não utilizadas, à direita dos meus dados. Só posso adivinhar que havia algo lá que fazia com que a altura da fila automática se comportasse mal.