Como fazer com que o recurso "Ajustar automaticamente a altura da linha" do Excel se ajuste automaticamente à altura da linha?


88

Para todas as gerações de Excel que me lembro (incluindo 2010, que estou usando agora), os recursos "Linha de tamanho automático" do Excel às vezes não conseguem dimensionar automaticamente uma linha quando a célula contém texto agrupado. Quando funciona corretamente, todo o texto é revelado e não há espaço adicional abaixo da última linha do texto. Quando falha, ele adiciona espaço extra abaixo do texto. Para piorar a situação, o que você vê nem sempre é o que obtém, ou seja, o texto que parecia bom na tela é cortado quando é impresso. Você também obtém tamanhos diferentes, dependendo de aumentar ou diminuir o zoom ou o tamanho real.

Caso de teste simples:

Por que há uma lacuna de uma linha após o texto na célula A1, mas não na A2?

(Para reproduzir: defina a largura da coluna A como 17,14 (125 pixels), quebra automática de texto e parte superior do alinhamento de células.)

(Verifiquei duas vezes se eu apliquei o ajuste automático da altura da linha nas duas linhas. O nível de zoom é 100%.)

O ajuste automático falha na primeira linha e é bem-sucedido na segunda

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


Caso alguém queira reproduzir o exemplo na minha pergunta, a largura da coluna A é 17,15 (125 pixels).
Devuxer

1
Bug parece dependente da fonte e tamanho da fonte
Raystafarian

1
@Raystafarian, parece não funcionar com o Wrap Text ativado.
Devuxer

1
Tentei ajustar automaticamente as colunas, que ampliaram uma coluna e, em seguida, ajustar automaticamente as linhas. Isso reduziu de 73 para 64 páginas, mas ainda havia muitas linhas em branco na parte inferior da maioria das linhas. Eu tenho as linhas alinhadas no topo. Alterar manualmente o tamanho das linhas faz com que pareça OK quando estou trabalhando no documento, mas não na visualização ou na impressão.

1
Sim, tão chato! Também vi isso, pelo menos no Excel 2007. Não lembro de ter visto isso no Excel 2003.
abstrask

Respostas:


105

Um método que acabei de encontrar (estendendo um pouco o post anterior):

  • Selecione a folha inteira.
  • Redimensione uma coluna um pouco mais (porque toda a planilha está selecionada, todas as colunas ficarão mais largas)
  • Clique duas vezes em um separador de linhas - a altura da linha será ajustada automaticamente
  • Clique duas vezes em um separador de colunas - as larguras das colunas serão ajustadas automaticamente

Voila!


2
Isso realmente parece funcionar. A única área cinza é onde você diz "um pouco mais". Um dos exemplos que experimentei não funcionou, a menos que estiquei bastante a coluna, mas acabei conseguindo que ela funcionasse. Obrigado!
Devuxer

5
Selecionei a folha inteira e cliquei duas vezes no separador de linhas entre duas linhas aleatórias e o documento inteiro reajustou as alturas das linhas.
precisa saber é o seguinte

6
Observe que o AutoFit não funciona para nenhuma célula mesclada: support.microsoft.com/kb/212010
freb

Este método não funciona apenas se todas as colunas tiverem a mesma largura? Quando redimensionei uma coluna um pouco mais, todas as outras colunas ficaram com a mesma largura (no Excel 2010).
Ed Greaves

Espere um minuto - esse método tem o efeito colateral de aumentar a largura de todas as colunas da planilha, não é?
Ant_222 29/03/19

13

O WYSIWYG do Excel não é o melhor. Na sua foto, 'gato'. apenas mal entra na 5ª linha. Se você reduzir a porcentagem de zoom para algo menor que 100% (99%, por exemplo.), Então 'gato'. agora está agrupado na sexta linha. Acho que o Excel está tentando se ajustar automaticamente de forma a garantir que tudo esteja quase sempre visível, independentemente do seu nível de zoom.

Esse não é o único problema que você terá com o AutoFit. Além disso, a maneira como uma célula quebrada é impressa nem sempre corresponde ao que você vê na tela. Tome seu exemplo e altere a fonte para Courier, deixando o tamanho em 11.

Fonte alterada para Courier

Como você pode ver, a célula A1 parece receber 1,5 linhas extras. Agora olhe para a pré-visualização, 'gato'. está completamente oculto.

visualização de impressão do mesmo arquivo

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


Então ... basicamente eles quebraram.
Sua

3

Acabei de escrever uma pequena macro para esse fim. Atribuí a ele 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 disponibilizar permanentemente, você pode criar facilmente um suplemento de carregamento automático:

  • crie um módulo em uma nova pasta de trabalho em branco e cole o código,
  • atribua a tecla de atalho desejada,
  • em seguida Save As, Add-inpara a pasta %appdata%\Microsoft\Excel\XLSTART
    Desta forma, ele será invisível carregado toda vez que você iniciar o Excel.

Ou você pode fazer isso: Private Sub Worksheet_Change (ByVal Target As Range) ArrangeTable End Sub
kurdtpage

0

Em alguns casos, o problema de espaço extra em algumas linhas após a chamada "Ajustar automaticamente a altura da linha" pode ser que uma coluna oculta tenha quebrado o texto nessas linhas.


O que não é o caso nesta questão.
Dmitry Grigoryev 27/01

0

Há um artigo em kb sobre isso que "sugere" (é inaceitavelmente escasso, no estilo clássico da Microsoft) que, se você definir uma altura de linha, o ajuste automático de altura automática será permanentemente removido para essa linha da planilha. As fileiras cuja altura você não tocou serão ajustadas automaticamente.

Embora você possa redefinir as larguras de coluna com a configuração "largura padrão" em 2003 (projetada pela madman 2007: altere para "largura padrão"), mas eles se esqueceram (novamente) (e novamente) de colocar isso em linhas. Portanto, a permanência parece inevitável. Isso significa que, se você tem uma altura padrão de 15 e cria uma planilha e define todas as alturas para 12, perde o ajuste automático automático.


1
Não consigo duplicar esse comportamento. Assim que eu faço "Ajustar automaticamente a altura da linha", qualquer configuração manual de altura para essa linha é imediatamente substituída pela altura de ajuste automático. O problema é simplesmente que a altura do ajuste automático geralmente está errada.
devuxer

Eu posso duplicar esse comportamento. É exatamente assim que funciona para mim.
Peter Nore #

0

Às vezes, existe o método nuclear para corrigir autoproblemas que se comportam mal.

O que faço é copiar o texto de cada célula e colar os dados no bloco de notas e excluir a linha. Em seguida, copio e insiro imediatamente uma linha em branco, mas com a mesma formatação e bom comportamento da linha que foi excluída. (Você deve copiar e inserir a linha inteira usando os botões da linha esquerda.)

Feito isso, é necessário voltar e inserir o texto do bloco de notas em cada célula. (Use F2ou ative o modo de edição de cada célula antes de inserir texto.) É uma dor, portanto é um último recurso, especialmente para planilhas gigantescas.

Às vezes, é a única solução, pois o problema reside no próprio programa.


1
copie o texto de cada célula - isso parece exigir tanto trabalho quanto a formatação manual.
Dmitry Grigoryev

0

Eu não testei completamente isso, mas está funcionando para mim. Essencialmente, ele ajustará automaticamente todas as folhas e voltará e definirá a largura da coluna para a largura original, a menos que tenha sido estendida pelo ajuste automático. Eu tinha apenas 10 colunas e nunca mais de 1000 linhas, então 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

Como ele resolve o bug de ajuste automático? Você ajusta automaticamente as linhas, ajusta automaticamente as colunas e redefine as larguras das colunas originais. Por que termina com a altura correta da linha de montagem? By the way, totalWidthestá desempregado.
Ant_222

Isso não funciona totalmente para mim, porque você restaura a largura apenas dos campos que se tornaram mais estreitos. Seu algoritmo, portanto, não retém a largura da coluna.
Ant_222

-1

Parafraseando Dunc :

Resolvi um problema semelhante:

  1. Selecionando a planilha inteira.

  2. Clique duas vezes na linha na margem entre as duas linhas.

Especificamente, para resolver seu problema dessa linha extra, eu suponho que exista um personagem lá. Pode não ser um personagem visível, mas definitivamente há algo lá.


3
Seus passos não são diferentes do que eu já tentei (clicar duas vezes entre as linhas é apenas um atalho para "Ajustar automaticamente a altura da linha"). Quanto à sua teoria de que existe um personagem extra, você pode estar certo, mas eu certamente não digitei um e não saberia como me livrar dele. Convido você a tentar digitar o texto exato que tenho na minha ilustração no Excel e ver se você obtém os mesmos resultados.
Devuxer

1
Não há nenhum personagem lá no meu.
Raystafarian 15/02

-1

Não tive tempo para ler os outros comentários. Por que a linha na parte inferior do primeiro bloco e não no segundo bloco?

É porque o texto termina muito perto da borda direita da célula. Se você ajustar a coluna para ser um pouco mais larga e clicar duas vezes entre as linhas, ela será redimensionada de acordo.


4
Não tenho dúvidas de que você está correto, mas isso não é mais "automático", é manual.
Devuxer 20/12/12

-1

Eu também já sofri esse bug minúsculo, mas extremamente perturbador, por muitos anos. Não tenho solução alternativa, exceto mexer na largura da linha da célula com mais texto nela e, eventualmente, o programa irá ceder e mostrar o texto corretamente.


mexer na largura da linha não é uma solução reproduzível.
Dmitry Grigoryev

-1

Existe uma solução fácil:

1) Selecione todas as linhas que deseja formatar automaticamente (se for um bloco grande, clique no primeiro e pressione Shift + End e Shift + Down)

2) Clique com o botão direito do mouse na seleção, Formatar células, guia Alinhamento, desmarque a opção Quebrar texto.

Espero que isto ajude ;)


1
Se você desmarcar Wrap text, não há mais motivo para ajustar automaticamente a altura das linhas, pois todas as linhas terão o mesmo tamanho.
Dmitry Grigoryev

Estou incomodado com esse problema há anos. A alternância do texto de quebra automática para uma linha problemática restaurou a função de ajuste automático.
Mitch

-1

Eu tenho o Excel 2010. Constatei que esse problema ocorreu comigo quando minha configuração de Zoom não estava em 100%. Contanto que eu esteja em 100%, não recebo o texto cortado com o Ajuste automático para colunas e linhas


3
No exemplo que usei para minha pergunta, estive no zoom = 100% o tempo todo. O problema ocorreu independentemente.
devuxer

-1

Minha hipótese é que o Excel fica atado quando precisa estender muitas linhas. Eu tive uma experiência semelhante à anterior. Ele parece que há um extra NL / CR / LF no final, mas eu sei que não é. Se eu construir alguns caracteres de cada vez na célula, ele formata automaticamente OK até que um tamanho específico seja atingido e coloca na linha extra. (Um comportamento semelhante ao contrário acontece se você começar excluindo alguns caracteres.) Isso acontece em momentos diferentes com células diferentes.

Vadio!

Portanto, se você pode estender a largura da célula, provavelmente pode evitar o problema. Se você não pode (como no meu caso), está preso à formatação manual. Como eu disse, "Que chatice!"


-1

Na verdade, há um personagem extra lá. É o personagem LF oculto que está no final de cada campo. Quando o texto tem o tamanho certo, a linha extra existe para conter o caractere LF. O redimensionamento da largura da coluna, conforme sugerido por outras pessoas, resolverá o problema dessa célula, mas se sua planilha tiver muitos valores de tamanho variados nessa mesma coluna, é possível que sua correção para essa célula faça com que outra célula da coluna tenha o problema . Aprendi a conviver com isso na maioria das vezes.


Certamente não há caracteres LF ocultos no final de cada campo, a menos que o OP tenha colocado lá com Alt + Enter. A questão é realmente sobre o caso quando não há caracteres de nova linha, mas o Excel ainda falha ao alinhar as células corretamente.
Dmitry Grigoryev

-2

O que funcionou para mim (Excel 2010) foi excluir centenas de colunas não utilizadas à direita dos meus dados. Só posso supor que havia algo ali fazendo com que a altura da linha automática se comportasse mal.


4
Eu posso ver como isso ajudaria, mas não faz nenhuma diferença para o caso de teste mostrado na minha pergunta.
Devuxer 20/12/12

-2

selecione todas as células e clique na linha que separa as linhas duas vezes ... isso será feito automaticamente.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.