私が覚えていることができるすべての世代のExcel(今使っている2010を含む)のために、セルが折り返されたテキストを含むとき、Excelの "Auto Size Row"機能は実際に行の自動サイズ調整に失敗することがあります。正しく機能すると、すべてのテキストが表示され、テキストの最後の行の下に追加のスペースがなくなります。失敗すると、テキストの下にスペースが追加されます。さらに悪いことに、あなたが見るものは必ずしもあなたが得るものではない、すなわちスクリーン上にうまく現れたテキストはそれが印刷されるときに途切れてしまう。ズームイン/アウトしているか実際のサイズであるかによって、サイズも異なります。
簡単なテストケース:
セルA1のテキストの後にA2ではなく1行のギャップがあるのはなぜですか?
(再現するには:A列の幅を17.14(125ピクセル)、テキストの回り込み、およびセルの配置を上に設定します。)
(両方の行に[行の高さを自動調整]が適用されていることを再確認しました。ズームレベルは100%です。)
手動で行の高さを調整することに頼らずに、これに対する既知の解決策はありますか(これは、ほんの一握りの行よりも実用的ではありません)。
私が見つけた方法(前の記事を少し拡張したもの):
ほら!
ExcelのWYSIWYGは最善ではありません。あなたの写真では、「猫」。 5行目にはほとんど侵入しません。あなたがズーム率を100%(例えば99%)以下に減らすならば、 'cat。'現在は6行目まで折り返されています。私は、ズームレベルに関係なく、Excelがほぼ常に見えるように自動調整を試みていると思います。
これがAutoFitで起こる唯一の問題ではありません。さらに、Wordで折り返されたセルの印刷方法は、画面に表示されるものと必ずしも一致しません。例を挙げて、サイズを11のままフォントをCourierに変更します。
ご覧のとおり、セルA1には1.5行の余分な行が与えられているようです。印刷プレビュー、「猫」を見てください。完全に隠されています。
私の経験では、Excelには他のものよりも特定のフォントとフォントサイズの問題があります。 CourierはCourier Newより、サイズ11は一般的に10より悪いです。または12。(なぜ彼らは新しいデフォルトとしてサイズ11を選んだのか、私にはわかりません。)
そのための小さなマクロを書いただけです。私はそれにショートカットキー(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
へ時には、不正行為の自己問題を修正するための核となる方法があります。
各セルからテキストをコピーしてメモ帳にデータを貼り付けてから、行を削除します。それから私はすぐに空白であるが削除された行と同じフォーマットと良い振る舞いを持つ行をコピーして挿入します。 (左の行ボタンを使用して行全体をコピーして挿入する必要があります。)
それが終わったら、戻ってメモ帳から各セルにテキストを挿入する必要があります。 (つかいます F2 または、テキストを挿入する前に各セルの編集モードを有効にします。)これは面倒なので、特に幅の広いワークシートにとっては最後の手段です。
問題はプログラム自体にあるため、これが唯一の解決策になることがあります。
私は徹底的にこれをテストしていませんが、それは私のために働いています。それが自動調整によって拡張されていない限り、基本的にそれはすべてのシートを自動調整し、そして戻って列幅を元の幅に設定します。私は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
これについて kbの記事 があります。これは、行の高さを設定すると自動高さになることを「示唆する」(従来のMicrosoftの方法では受け入れられないほどまばらです)そのワークシートのその行には、自動調整は永久になくなりました。まだ高さに触れていない行でも、自動調整できます。
あなたは2003年に "標準の幅"の設定で列幅をリセットすることができますが(Madman-designed 2007: "default width"に変更しますが)、彼らはそれを行に入れるのを忘れていました。そのため、永続性は避けられないようです。つまり、デフォルトの高さが15で、シートを作成してすべての高さを12に設定すると、自動調整は無効になります。
場合によっては、 "AutoFit Row Height"を呼び出した後にいくつかの行に余分なスペースがあるという問題は、隠し列がそれらの行のテキストを折り返していることです。