いきなり答える備忘録

Google Workspace・Microsoft 365・LibreOfficeなどに関するメモ

(Gスプレッドシート)セル内で縦書きにする方法

 Googleスプレッドシートでセル内のテキストを縦書きにする方法と、表示の問題への対応方法を紹介します。

  • 対象とする範囲を選択して、メニューから「表示形式」→「回転」→「縦書き」と選択すればセル内のテキストが縦書きになります。
  • テキストの回転のアイコンを使う方法もあります。
  • カッコ・伸ばし棒(長音記号)・句読点などの表示、数字の横書きといった課題にも一定の対応は可能です。

セル内のテキストを縦書きにする方法

 まずは縦書きにするセル範囲を選択します。



 そしてウインドウ上部のメニューから「表示形式」→「回転」→「縦書き」と選択します。



 なお、「テキストの回転」のアイコンから縦書きを選んでも同じです。



 これでテキストが縦書きになりました。
 ただ、「オーストラリア」の「ー」(伸ばし棒や長音記号と呼ばれるもの)が回転せずそのままなので、表示としては不自然な感じになっています。これについては以降で対応例をみてみます。

カッコ・伸ばし棒・句読点などを縦書きに合わせる方法

 上記の例でも見たように、普通なら縦書きにした際に回転して表示されるような記号がそのままになるので、表示が不自然なものになります。
 次の画像のB2セルのテキストのうち、伸ばし棒のほかカッコと句読点、つまり「ー()、。」の5種の文字が横書き用の表示そのままになっており、見た目はかなりおかしな感じになっています。



 残念ながら文字を部分的に回転させたりする機能はないので、必要な場合は縦書き用に文字を置き換えることとなります。
 画像では「ー()、。」の5種の文字をそれぞれ「丨︵︶︑︒」に置き換えています。
 セル内の見た目はだいぶ自然になりました。ただし別の文字になっているので「コーヒー」などと検索してもヒットしません。



 置き換えを手作業で行うのは大変なので、次の画像では関数で一括変換しています。

 D2セル

=CONCATENATE(ARRAYFORMULA(
MID("丨︵︶︑︒"&B2,FIND(MID(B2,SEQUENCE(LEN(B2)),1),"ー()、。"&B2),1)
))

 これもなかなか難解な式ですが、テキストを1文字ずつ分割して「ー()、。」に含まれる文字は「丨︵︶︑︒」の中の対応する位置にある文字に置き換え、それ以外の文字はそのままにするという内容です。「" "」で囲まれた2つの文字列は変換リストになっており、文字の順番を対応させる必要があります。


 縦書き用文字は環境によっては適切に表示されない恐れがあるのでやりすぎはおすすめしませんが、より多種類の文字を本格的に変換しようという場合はまず必要な文字を集めて整理する必要があります。

参考サイト:
「縦書き字形」のブラウザ上での表示具合はどんなもんだろう。 - freefielder.jp


 あとは横書き用文字⇔縦書き用の文字の対応テーブルを作成し、変換については次の記事内で紹介しているSUBSTITUTE/REDUCE関数を使う、というような方法が考えられます。

www.officeisyours.com

数字だけ横書きにする方法

 縦書きに設定すると当然ながらテキスト中の数字の部分も縦書きになります。
 しかし見栄えがよくないので「数字だけ横書きにしたい」というケースがよくあります。



 しかし縦中横のような機能はないので、実現するとすれば横書きのまま適当な位置に改行を挿んでいくという方法が考えられます。
 画像では1つ1つ「Alt+Enter」で改行を挿んでいます。



 確定したところですが左寄せになっているので……



 水平位置を中央にして完成です。



 しかしこれも数が多くなると大変なので、次の画像では関数で一括して改行を挿んでいます。
 (D2セルには水平方向の中央揃えを設定しています)

 D2セル

=JOIN(CHAR(10),SPLIT(REGEXREPLACE(B2,"([^0-9])",CHAR(10)&"$1"&CHAR(10)),CHAR(10)))

 スマートな式ではありませんが、数字以外の文字の前後に改行を追加し、SPLIT/JOIN関数を使って先頭と末尾の改行を除くとともに連続する改行を1つにまとめる、ということをやっています。
 全角数字も横書きにしたい場合はREGEXREPLACEの第2引数「"([^0-9])"」を「"([^0-90-9])"」に置き換えてください。

 なお手動、関数いずれの場合でもセルの設定は横書きのままですので、「縦書きのような改行や折り返し」は一切できなくなります。

右から左へ進むようにする方法

 次の画像内のB2セルでは縦書きと折り返しの設定を行っており、テキストの改行と折り返しがそれぞれ2か所ずつ発生しています。
 このように縦書きの文字列は改行や折り返しで左から右へと進んでいきます。



 これを右から左へ進むように変える方法ですが、まずいったんGoogleスプレッドシートのホーム画面に戻り、左上の三本線のマークをクリックします。



 そして「設定」をクリックします。



 ダイアログが出ますので、「右から左への言語オプションを常に表示する」にチェックを入れてOKします。



 シートに戻り、対象範囲(ここではB2セル)を選択した状態でメニューから「表示形式」→「方向」→「セル(右から左へ)」と選択します。
 (「シート(右から左へ)」を選べばシートごと設定できます)



 以上でテキストが右から左へ流れるようになりました。
 数式バーの表示が空白になっているように見えますが、文字は数式バー内の最も右側に表示されています。