Excelの「行の高さを自動調整」機能で実際に行の高さを自動調整するにはどうすればよいですか?


88

覚えているExcelのすべての世代(現在使用している2010を含む)で、Excelの「行の自動サイズ調整」機能は、セルに折り返しテキストが含まれる場合、実際に行の自動サイズ調整に失敗することがあります。適切に機能すると、すべてのテキストが表示され、テキストの最後の行の下に追加のスペースがなくなります。失敗すると、テキストの下に余分なスペースが追加されます。さらに悪いことに、あなたが見るものは常にあなたが得るものとは限りません。すなわち、画面上で問題なく表示されたテキストは、印刷されると途切れます。また、ズームイン/アウトするか、実際のサイズにするかによって、サイズが異なります。

簡単なテストケース:

セルA1のテキストの後にA2ではなく1行のギャップがあるのはなぜですか?

(再現するには、列Aの幅を17.14(125ピクセル)に設定し、テキストを折り返し、セルの配置を上にします。)

(Auto Fit Row Heightを両方の行に適用したことを再確認しました。ズームレベルは100%です。)

自動適合は最初の行で失敗し、2番目の行で成功します

行の高さを手動で調整することなく、これに対する既知の解決策はありますか(これは、少数の行よりも実用的ではありません)?


誰かが私の質問の例を再現したい場合、列Aの幅は17.15(125ピクセル)です。
-devuxer

1
バグはフォントとフォントサイズに依存しているようです
Raystafarian

1
@ Raystafarian、Wrap Textが有効になっていると動作しないようです。
-devuxer

1
1列を広げた列を自動調整してから、行を自動調整しました。これにより、73ページから64ページになりましたが、ほとんどの行の下部にはまだ多くの空白行があります。行を上に揃えています。行のサイズを手動で変更すると、ドキュメントで作業しているときは問題なく見えますが、プレビューや印刷ではできません。

1
はい、とても迷惑です!これは少なくともExcel 2007でも見られました
。Excel2003

回答:


105

私が見つけた方法(前回の投稿を少し拡張):

  • シート全体を選択します。
  • 列の幅をもう少し広げます(シート全体が選択されているため、すべての列が広くなります)
  • 行セパレーターをダブルクリック-行の高さは自動調整されます
  • 列セパレーターをダブルクリック-列幅は自動調整されます

出来上がり!


2
これは本当にうまくいくようです。1つの灰色の領域は、「少し広い」という意味です。私が試した例の1つは、コラムをかなり伸ばしていない限り機能しませんでしたが、最終的には機能するようになりました。ありがとう!
-devuxer

5
シート全体を選択してから、2つのランダムな行の間の行セパレーターをダブルクリックし、ドキュメント全体で行の高さを再調整しました。
キースサーモンズ

6

このメソッドは、すべての列が同じ幅である場合にのみ機能しませんか?列のサイズをもう少し広くすると、他の列はすべて同じ幅になりました(Excel 2010)。
エドグリーブス

ちょっと待ってください-この方法には、シート内のすべての列の幅を広げるという副作用がありますか?
Ant_222

13

ExcelのWYSIWYGは最高ではありません。あなたの写真の中の「猫」。5行目にかろうじて侵入します。ズーム率を100%未満(たとえば99%)に下げると、「cat」になります。これで、6行目に折り返されます。Excelは、ズームレベルに関係なく、ほとんどすべてが表示されるように自動調整しようとしていると思います。

AutoFitで発生する問題はそれだけではありません。さらに、ワードラップされたセルの印刷方法は、画面に表示されるものと常に一致するとは限りません。例を挙げて、サイズを11のままにしてフォントをCourierに変更します。

フォントをCourierに変更しました

ご覧のとおり、セルA1には1.5行追加されているようです。次に、印刷プレビュー「cat」を見てください。完全に隠されています。

同じファイルの印刷プレビュー

私の経験では、Excelには特定のフォントとフォントサイズで他よりもこの問題があります。CourierCourier Newよりも悪く、サイズ11は一般に10または12よりも悪いです(サイズ11を新しいデフォルトとして選択した理由はわかりません)。


だから...基本的に彼らはそれを破った。あなたは説明がもっともらしいですが、それは本当に私を
悩ま

3

その目的のために小さなマクロを作成しました。私はそれにショートカットキー(Ctrl-Shift-J)を割り当てましたが、それは私にとって魅力のように機能します。

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

これを永続的に利用可能にするために、自動的にロードするアドインを簡単に作成できます。

  • 新しい空のブックにモジュールを作成し、コードを貼り付けます。
  • 必要なショートカットキーを割り当てます。
  • その後Save AsAdd-in、フォルダに%appdata%\Microsoft\Excel\XLSTART
    それは目に見えないExcelを起動するたびにロードされます。この道を。

または、これを行うことができます:Private Sub Worksheet_Change(ByVal Target As Range)ArrangeTable End Sub
kurdtpage

0

場合によっては、「AutoFit Row Height」を呼び出した後の一部の行の余分なスペースの問題は、非表示の列がそれらの行のテキストを折り返していることです。


これはこの質問には当てはまりません。
ドミトリーグリゴリエフ

0

行の高さを設定した場合、そのワークシートの行の自動高さの自動調整が永久になくなるという「提案」(古典的なMicrosoftのやり方では容認できないほどまばらです)に関するkb記事があります。ただし、触れていない高さの行は自動的に調整されます。

2003年の「標準幅」設定で列幅をリセットできますが(madmanが設計した2007:「デフォルト幅」に変更します)、行のためにそれを入れることを(再び)忘れました(そして再び)。したがって、永続性は避けられないようです。つまり、デフォルトの高さが15で、シートを作成してすべての高さを12に設定すると、自動自動調整が無効になります。


1
この動作を複製することはできません。「行の高さの自動調整」を行うとすぐに、その行の手動の高さ設定はすぐに自動調整の高さに置き換えられます。問題は、単に自動調整の高さがしばしば間違っていることです。
devuxer

この動作を複製できます。これは私にとってうまくいくものです。
ピーターノア14年

0

誤動作する自動問題を修正するための核の方法がある場合があります。

私がしていることは、各セルからテキストをコピーし、メモ帳にデータを貼り付けてから行を削除することです。次に、空の行をすぐにコピーして挿入しますが、削除された行と同じ書式設定と良好な動作があります。(左の行ボタンを使用して、行全体をコピーして挿入する必要があります。)

それが完了したら、戻ってメモ帳から各セルにテキストを挿入する必要があります。(F2テキストを挿入する前に各セルの編集モードを使用するか、その他の方法でアクティブにします。)これは苦痛なので、特に広大なワークシートの場合は最後の手段です。

問題はプログラム自体にあるため、これが唯一の解決策になることもあります。


1
各セルからテキストをコピーします -これには、手動の書式設定と同じくらいの作業が必要と思われます。
ドミトリーグリゴリエフ

0

私はこれを徹底的にテストしていませんが、私のために働いています。基本的に、すべてのシートが自動調整され、自動調整によって拡張されない限り、元の幅に戻って列幅が設定されます。私は10列しかなく、1000行を超えることはなかったので、必要に応じてコードを調整します。

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

自動調整のバグはどのように解決しますか?行を自動調整し、次に列を自動調整し、元の列幅を調整します。正しいフィッティング行の高さになるのはなぜですか?ところで、totalWidth失業者です。
Ant_222

狭くなった列の幅のみを復元するので、私には完全に機能しません。したがって、アルゴリズムは列幅を保持しません。
Ant_222

-1

Duncを言い換えると:

同様の問題を次の方法で解決しました。

  1. スプレッドシート全体を選択します。

  2. 2つの行の間の余白にある線をダブルクリックします。

具体的には、その余分な行の問題に対処するために、そこにキャラクターがあると思います。目に見えるキャラクターではないかもしれませんが、間違いなくそこには何かがあります。


3
あなたの手順は、私がすでに試したものと変わりません(行間をダブルクリックすることは、「行の高さを自動調整」のショートカットです)。余分なキャラクターがあるというあなたの理論に関しては、あなたは正しいかもしれませんが、私は確かにそれをタイプしませんでした、そして、私はそれを取り除く方法を知りません。イラストにある正確なテキストをExcelに入力して、同じ結果が得られるかどうかを確認してください。
devuxer

1
私のキャラクターはありません。
Raystafarian

-1

他のコメントを読むのに時間はかかりませんでした。なぜ2番目のブロックではなく、最初のブロックの一番下に行があるのですか?

テキストがセルの右端に近すぎるためです。列を少し広くするように調整し、行間をダブルクリックすると、それに応じてサイズが変更されます。


4
私はあなたが正しいことは間違いありませんが、それはもう「自動」ではなく、マニュアルです。
devuxer

-1

私もこの小さな、しかし非常に気を散らすバグに長年耐えてきました。ほとんどのテキストを含むセルの行幅をいじる以外に回避策はありません。最終的に、プログラムはテキストを適切に表示します。


行の幅をいじるのは、再現可能な解決策ではありません。
ドミトリーグリゴリエフ

-1

簡単な解決策があります:

1)自動フォーマットするすべての行を選択します(大きなブロックの場合、最初の行をクリックし、Shift + EndおよびShift + Downを押します)

2)選択、セルの書式設定、配置タブを右クリックし、テキストの折り返しをオフにします。

お役に立てれば ;)


1
のチェックを外すとWrap text、すべての行が同じサイズになるため、行の高さを自動調整しても意味がありません。
ドミトリーグリゴリエフ

私は何年もこの問題に悩まされてきました。面倒な行の折り返しテキストを切り替えると、自動調整機能が復元されました。
ミッチ

-1

Excel 2010を使用しています。ズーム設定が100%でないときにこの問題が発生することがわかりました。100%である限り、列と行のAutoFitでテキストが途切れない


3
質問に使用した例では、ズーム= 100%でした。問題は関係なく発生しました。
devuxer

-1

私の仮説は、Excelが余りにも多くの行を拡張しなければならないときに結び付けられるということです。上記と同様の経験がありました。最後に余分なNL / CR / LF があるように見えますが、ないことは知っています。一度にいくつかの文字をセルに構築すると、特定のサイズに達するまで自動フォーマットが正常に行われ、その後、余分な行が挿入されます。(いくつかの文字を削除することから始めた場合、逆の同様の動作が発生します。)異なるセルで異なる時間に発生します。

残念!

したがって、セルの幅広げることできれば、おそらく問題を回避できます。できない場合(私の場合のように)、手動でフォーマットする必要があります。私が言ったように、「残念!」


-1

実際には余分なキャラクターがあります。すべてのフィールドの最後にあるのは、非表示のLF文字です。テキストがちょうどいいサイズの場合、LF文字を保持するために余分な行があります。他の人が提案したように列の幅を変更するとそのセルの問題は解決しますが、スプレッドシートのこの同じ列にさまざまなサイズ値がたくさんある場合、このセルの修正により列の別のセルに問題が発生する可能性があります。私はほとんどの時間、それと一緒に暮らすことを学びました。


もちろん、OPがAlt + Enterを使用してそこに置いていない限り、すべてのフィールドの最後に確かに非表示のLF文字はありません。問題は実際には改行文字がない場合ですが、Excelはセルを適切に配置できません。
ドミトリーグリゴリエフ

-2

私にとってうまくいったのは(Excel 2010)、データの右側にある100個ほどの未使用の列を削除することでした。私はそこに何かがあったので、自動行の高さが誤動作していると推測できます。


4
どのように役立つかはわかりますが、私の質問に示されているテストケースでは違いはありません。
devuxer

-2

すべてのセルを選択し、行を2回区切る線をクリックします...自動的に実行されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.