いきなり答える備忘録

G Suite・Microsoft 365・LibreOfficeなどに関するメモと日々の実験

(Gスプレッドシート)文字列のローテートシフト

 Googleスプレッドシートで、文字列を指定した文字数だけ左右にシフトし、はみでた文字は反対側に送るというローテートシフトを行う方法についてです。

  • MID関数等を使って文字列のローテートシフトを行うことができます。

手順

f:id:accs2014:20210420021728p:plain:right:w550

 画像ではB列に対象となる文字列を、C列にはシフトする文字数を記しています。文字数がプラスの場合は左方向へ、マイナスの場合は右方向へシフトさせるものとします。さらにシフトする文字数が対象の文字数を超える場合は2周目以上のローテートになるものとします。
 D列に式を入力してシフトさせた結果を表示しています。
 D3セルの式の内容は次のとおりです(D4セル以降も同様)

 D3セル

=MID(B3&B3,MOD(C3,LEN(B3))+1,LEN(B3))

 「B3&B3」により対象文字列を2回繰り返した文字を生成したうえで、MID関数により読み出しの位置を調整して抽出しています。
 2周以上のローテートと右方向シフトに対応するためMOD関数を使っており、その分ちょっと長くなっています。