エクセルの「行の高さを自動で合わせる」機能を実際に自動で合わせるには?

microsoft-excel microsoft-excel-2010

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

簡単なテストケース

セルA1ではテキストの後に1行の空白があるのに、セルA2では空白がないのはなぜですか?

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

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

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

手動で行の高さを調整しなくても(一握りの行以上の場合は実用的ではありません)、この問題を解決する方法は知られていますか?

  92  None  2012-02-14


ベストアンサー

先ほど見つけた方法(前の記事を少し延長)

  • シート全体を選択します
  • 列のサイズを少し広くします(シート全体が選択されているので、すべての列が広くなります)
  • 行の区切り文字をダブルクリックすると、行の高さが自動的に調整されます
  • 列の区切り文字をダブルクリックすると、列の幅が自動的にフィットします

Voila!

108  Nick Carrington  2012-12-05


エクセルのWYSIWYGは最高ではありません。あなたの写真では、’cat.’ が 5 行目にギリギリ入り込んでいます。もしあなたがズーム率を100%以下にすると(例えば99%)、’cat.’は6行目まで折り込まれてしまいます。Excel は、ズームレベルに関係なくすべてがほぼ常に表示されるように自動フィットしようとしているのだと思います

オートフィットの問題はこれだけではありません。さらに、ワードラップされたセルの印刷方法は、画面上に表示されるものと必ずしも一致するとは限りません。例として、フォントをCourierに変更し、サイズは11のままにしてください

Changed font to Courier

ご覧のように、セルA1には1.5行の余分な行が与えられているように見えます。印刷プレビューを見ると、「cat.」が完全に隠れています

print preview of same file

私の経験では、Excelは特定のフォントとフォントサイズで他のものよりもこの問題を抱えています。CourierはCourier Newよりも悪く、サイズ11は一般的に10や12よりも悪いです。(なぜ彼らは新しいデフォルトとしてサイズ11を選んだのか、私にはさっぱりわかりません)

15  mischab1  2012-02-15


そのための小さなマクロを書きました。ショートカットキー(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 As, Add-in, %appdata%\Microsoft\Excel\XLSTARTフォルダに移動して、Save As, Add-in, %appdata%\Microsoft\Excel\XLSTARTフォルダに移動します

3  Patrick Honorez  2016-01-22


AutoFit Row Height “を実行した後に、いくつかの行で余分なスペースが発生する問題は、隠れた列がそれらの行でテキストをラップしている場合があります

0  BobO  2012-06-21


これに関するkbの記事には、行の高さを設定した場合、そのワークシートのその行の高さの自動調整が永久に行われないことを「示唆している」(Microsoftの古典的なやり方で、受け入れがたいほどまばらです)という記述があります。しかし、あなたが触れていない高さの行については、自動フィットは正常に行われます

2003年の「標準幅」設定で列の幅をリセットできるのに対し(madman-designの2007年は「デフォルト幅」に変更)、行に対してはそれを入れるのを忘れていた(またしても)。なので、永続性は避けられないようです。つまり、デフォルトの高さを15にして、シートを作成して、すべての高さを12にした場合、自動オートフィットを見送ったことになる

0  GatesIsAntichrist  2013-05-01


時には自己問題の誤動作を修正するための核の方法があります

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

それが終わったら、戻ってメモ帳のテキストを各セルに挿入する必要があります。(テキストを挿入する前に、F2を使うか、各セルの編集モードを有効にしてください)。これは面倒なので、特に幅の広いワークシートには最後の手段です

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

0  Paul  2013-07-05


私はこれを徹底的にテストしたわけではありませんが、私にとってはうまくいっています。基本的には、すべてのシートを自動調整してから元の幅に戻し、列の幅を元の幅に設定します。私は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

0  Dan Williams  2015-01-08


ダンクを言い換えれば

同じような問題を解決したことがあります

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

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

具体的には、その余分な行の問題についてですが、私はそこに文字があると考えています。目に見える文字ではないかもしれませんが、確かに何かがあるはずです

-1  wizlog  2012-02-14


他のコメントを読むのに時間がかかりませんでした。なぜ最初のブロックの下の方に線が入っていて、2番目のブロックには入っていないのでしょうか?

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

-1  Renier Wessels  2012-08-06


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

-1  Andrew Buchanan  2013-01-01


簡単な解決策があります

1)あなたがオートフォーマットしたいすべての行を選択します(それは大きなブロックの場合は、最初にクリックしてから、Shift+EndとShift+Downを押してください)

2) 選択部分を右クリックし、「セルの書式設定」「整列」タブで「テキストを折り返す」のチェックを外します

これが助けになることを願っています 😉

-1  Pedro  2013-02-26


私はExcel 2010を使用しています。この問題は、ズームの設定が100%になっていないときに起こることがわかりました。100%に設定している限り、列と行のオートフィットではテキストが切り取られません

-1  Kevin Morin  2013-04-08


私の仮説ですが、エクセルはあまりにも多くの行を伸ばさなければならないときに節ができてしまうのです。私も上記と似たような経験をしました。最後にNL/CR/LFが余っているように見えますが、余っていないのは分かっています。一度に何文字かセルを積み上げていくと、特定のサイズに達するまではオートフォーマットでOK、その後は余分な行を入れてくれます。(いくつかの文字を削除することから始めると、逆に似たような挙動が起こります)。これは、異なるセルで異なるタイミングで起こります

Bummer!

ですから、セルの幅を広げることができれば、おそらく問題は回避できるでしょう。もしできなければ(私の場合のように)手動での書式設定に行き詰ってしまいます。私が言ったように、”ガッカリ!”

-1  GeoffH  2013-06-20


実はそこには余分な文字があります。それはすべてのフィールドの最後にある隠れたLF文字です。テキストのサイズがちょうど良い場合、余分な行はLF文字を保持するために存在します。他の人が提案しているように列の幅を変更すれば、そのセルの問題は解決しますが、スプレッドシートの同じ列にサイズの異なる値がたくさんある場合、このセルを修正しても、その列の別のセルで問題が発生する可能性があります。私はほとんどの場合、それに耐えられるようになりました

-1  phipywr  2015-12-17


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

-2  Runk  2012-12-20


すべてのセルを選択して、行を2回に分けている行をクリックしてください…自動的にそうしてくれます

-2  paul  2013-01-30


タイトルとURLをコピーしました