背景
Excelのグラフの軸に改行文字を含む値を出力したいと思い、単純に改行文字(CHAR(10))を追加したところ、軸の表示が中央揃えになってしまいました。
2024年4月4日現在、ワンクリックで右揃えを叶える方法はなさそうでしたので、備忘録としてここに残します。
注意事項
- 軸に使うフォントは、等幅フォントとします。(上記画像は、游ゴシックのため不可。今回はメイリオを使用しました。)
- 長い文字列に改行文字を挿入すると、グラフサイズによっては、改行文字以後の文字列が、表示されない可能性があります。
やり方
REPT関数
を使用し、スペースでパディングして調整します。
上図の場合、H2セルに、以下のように関数を設定します。
n数("(n=" & F3 & ")"
)を別のセルに記載し、参照する方がスマートな気がします。
=A3 & CHAR(10) & REPT(" ", LENB(A3) - LENB("(n=" & F3 & ")")) & "(n=" & F3 & ")"
参照セル部分を置き換えると以下のとおりです。
="いろは小学校" & CHAR(10) & REPT(" ", LENB("いろは小学校") - LENB("(n=180)")) & "(n=180)"`
-
LENB関数
指定した文字列の文字数(バイト数)を返す関数です。全角の文字は2バイト、半角の文字は1バイトとカウントされます(LENB("いろは小学校")
の返値は12です)。軸に記載する文字列がすべて全角である場合は、LEN関数を使用しても問題ないでしょう。 -
REPT関数
REPT(文字列, 繰り返し回数)
の形です。上記の記載では、「改行文字以前に記載の文字列(いろは小学校)の文字数」と「改行文字以後の文字列((n=180))の文字数」の差分をとり、半角スペースでパディングしています。
改行文字前後の文字数にバラつきがある場合
先の例は、改行文字以後の文字列の文字数が少ないことを前提としています。文字数の大小にバラつきがある場合は、文字数が少ない方をパディングすることで実現可能です。
if文を使用して分岐した例が以下です。
=IF(LENB(A3)<LENB(B3), REPT(" ", LENB(B3)-LENB(A3)) & A3 & CHAR(10), A3 & CHAR(10) & REPT(" ",LENB(A3)-LENB(B3))) & B3
おわりに
ここに投稿するには、ふさわしくない記事でしたら申し訳ございません。
他に良い方法をご存じの方いらっしゃいましたら是非ご教示ください。
個人的には、スペースでパディングしたくはないのですが、見栄えを求められるので仕方なくでした。