セル自体のサイズを変更したり、セルの内容を折り返すように設定したりせずに、セルのテキストが隣接するセルに重ならないようにする方法があるかどうか疑問に思っています。
6 に答える
おはようございます。これをきれいに行う方法があります:
- 範囲を選択
- 右クリック>[セルの書式設定]>[配置]タブ
- [テキストの配置]領域で、[水平]ドロップダウンメニューから[塗りつぶし]を選択します
VBAでは、次のようになります。
Sub AwayWithYouConfusingOverlap()
Range("A1").HorizontalAlignment = xlFill
End Sub
前述の2つの方法(セルのサイズを変更して折り返すように設定する)以外の唯一の方法は、隣接するセルにテキストを配置することです。[編集:Siddharth Routが指摘したように、もう1つ忘れた方法があります。セルを「縮小して収まる」(配置>テキスト制御下)としてフォーマットすると、コンテンツがセル幅内に収まるようにフォントサイズが自動的に縮小されます。 ]長いテキストをセルの端で切り取りたいだけの場合、Excelは、テキストが流れ込むセルに独自のコンテンツがある場合にのみこれを行います。
これを自動的に実施する最速の方法は次のとおりです。
- コンテンツを含むすべてのセルをループします。
- まだコンテンツがない場合は、水平方向に隣接するセルに空白を配置します。
コンテンツがオーバーフローしているセルの左右の両方のセルに対してこれを行うか、テキストが左揃えか右揃えかを確認して、水平方向に隣接する2つのセルのどちらを塗りつぶす必要があるかを判断する必要があることに注意してください。
オーバーフローしたセルに対してのみこれを実行したい場合は、より複雑なことを実行する必要があります。あなたはしなければならない:
- コンテンツを含むすべてのセルをループします。
- 現在のセルに隣接するセルが空白かどうかを確認します。そうでない場合は、このセルをスキップして次のセルに進むことができます。
- 現在のセルの内容を空白の列のセルにコピーします(できれば新しい一時シートに)。
- 一時的な列に自動サイズ設定を指示します(セルの目的の幅を見つけるため)。
- 一時列の自動サイズ設定の幅がソース列の幅よりも大きい場合、セルの内容がオーバーフローするため、隣接するセルに空白を配置する必要があります。
最近、隣接するセルからテキストが重なって表示されないようにするためのクリーンな方法を発見しました。
- 範囲を選択
- 右クリック>セルの書式設定>配置>チェックボックスの折り返し
異なる線が異なる高さで表示される可能性があるため、結果は見苦しいように見える場合があります。ただし、すべての線を同じ高さにすることで、すべてを修正することは可能です。
- 範囲を選択
- 左端の列(行番号を保持)を右クリック>行の高さ>目的の値を入力します。
それでおしまい ...
私のフランス語が私の英語を覆い隠さないことを願っています。少なくともあまり多くはありません。
このソリューションには、追加の列が必要ないため、印刷でも機能するという利点があります(追加の空白ページへのオーバーフローを防ぎたい場合)。
同じ手順をVBAで実行できます。
With Range("A1:H100")
.WrapText = True ' enable wrapping, will autoformat height
.rows.RowHeight = 12.75 ' set back to default height, overflow is removed
End With
重なり合うセルの隣のセルにスペースを入れるだけです。オーバーラップしなくなりました。そのセルをスプレッドシート全体にコピーして貼り付けます
重なりを止めたい列の右側に列を挿入し、小さなポイントサイズで1文字入力するだけです。次に、それをスプレッドシートの一番下までコピーし、列の幅を0.5に縮小して、ほとんど目立たないようにします。このようにして、数式に影響を与えず、スプレッドシートを読みやすくします。