web-dev-qa-db-ja.com

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

私が覚えていることができるすべての世代のExcel(今使っている2010を含む)のために、セルが折り返されたテキストを含むとき、Excelの "Auto Size Row"機能は実際に行の自動サイズ調整に失敗することがあります。正しく機能すると、すべてのテキストが表示され、テキストの最後の行の下に追加のスペースがなくなります。失敗すると、テキストの下にスペースが追加されます。さらに悪いことに、あなたが見るものは必ずしもあなたが得るものではない、すなわちスクリーン上にうまく現れたテキストはそれが印刷されるときに途切れてしまう。ズームイン/アウトしているか実際のサイズであるかによって、サイズも異なります。

簡単なテストケース:

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

(再現するには:A列の幅を17.14(125ピクセル)、テキストの回り込み、およびセルの配置を上に設定します。)

(両方の行に[行の高さを自動調整]が適用されていることを再確認しました。ズームレベルは100%です。)

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

手動で行の高さを調整することに頼らずに、これに対する既知の解決策はありますか(これは、ほんの一握りの行よりも実用的ではありません)。

86
devuxer

私が見つけた方法(前の記事を少し拡張したもの):

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

ほら!

103
Nick Carrington

ExcelのWYSIWYGは最善ではありません。あなたの写真では、「猫」。 5行目にはほとんど侵入しません。あなたがズーム率を100%(例えば99%)以下に減らすならば、 'cat。'現在は6行目まで折り返されています。私は、ズームレベルに関係なく、Excelがほぼ常に見えるように自動調整を試みていると思います。

これがAutoFitで起こる唯一の問題ではありません。さらに、Wordで折り返されたセルの印刷方法は、画面に表示されるものと必ずしも一致しません。例を挙げて、サイズを11のままフォントをCourierに変更します。

Changed font to Courier

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

print preview of same file

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

13
mischab1

そのための小さなマクロを書いただけです。私はそれにショートカットキー(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を起動するたびに表示されなくなります。
3
Patrick Honorez

時には、不正行為の自己問題を修正するための核となる方法があります。

各セルからテキストをコピーしてメモ帳にデータを貼り付けてから、行を削除します。それから私はすぐに空白であるが削除された行と同じフォーマットと良い振る舞いを持つ行をコピーして挿入します。 (左の行ボタンを使用して行全体をコピーして挿入する必要があります。)

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

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

0
Paul

私は徹底的にこれをテストしていませんが、それは私のために働いています。それが自動調整によって拡張されていない限り、基本的にそれはすべてのシートを自動調整し、そして戻って列幅を元の幅に設定します。私は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

これについて kbの記事 があります。これは、行の高さを設定すると自動高さになることを「示唆する」(従来のMicrosoftの方法では受け入れられないほどまばらです)そのワークシートのその行には、自動調整は永久になくなりました。まだ高さに触れていない行でも、自動調整できます。

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

0

場合によっては、 "AutoFit Row Height"を呼び出した後にいくつかの行に余分なスペースがあるという問題は、隠し列がそれらの行のテキストを折り返していることです。

0
BobO