いきなり答える備忘録

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

(Excel)文字列を逆に並べ替える方法

 Excelでセルに記録されている文字列を逆から(後ろから)並べ替える方法についてです。
 VBAだとStrReverse関数がありますが、ここでは別の方法を試してみます。

SEQUENCE関数等を使う方法

 B3セルに文字列が記録されています。
 そこでC3セルに関数式を入力して逆から並べ替えた結果を得ています。

 C3セル

=CONCAT(MID(B3,SEQUENCE(1,LEN(B3),LEN(B3),-1),1))

 MID関数を使って文字列を1文字ずつ取り出していますが、その第2引数(抽出開始位置)を「SEQUENCE(1,LEN(B3),LEN(B3),-1)」つまり9,8,7…1という配列にしている(9は文字数)のがポイントで、これにより後ろから1文字ずつ取り出されます。最終的にそれらをCONCAT関数でつないで完成です。

Python in Excelを使う方法

 2024年秋に利用可能となったPython in Excelを使う方法です。

 C3セル(Python in Excel)

xl("B3")[::-1]

 数値に対してはエラーになるので「str(xl("B3"))[::-1]」としてみてください。
 内容としてはxl関数を使ってB3セルを参照し、スライス([ ]の部分)を使って逆から並べるというものです。スライスを使って取得開始位置、終了位置、取り出し間隔の3つを指定することで対象(ここでは文字列)の任意の部分を取得できますが、初めの2つを省略して間隔を-1(後ろから順にという意味)とすることで全体を逆順にすることができます。

 補足しておくと入力手順の例は次のようになります。

  1. C3セルに「=PY(」まで入力する。または数式タブから「Pythonの挿入」を選択する。
      →数式バーが変化する
  2. 上記の数式を入力する。具体的にはB3セルをクリックすると「xl("B3")」が自動入力されるので、その後に「[::-1]」を加えればOKです。
  3. Ctrl+Enterキーで確定する。



 ところでセルの左端に[PY]のようなマークが表示されるのが気になると思います。詳しくは省略しますが、これを表示させたくない場合は数式バーのところにあるアイコンをクリックして「Excelの値」を選択します。

 


 これで値(逆に並べた文字列)だけが表示されました。

 ちなみにxl関数内のセル参照もフィルコピーで書き換わってくれるので、複数の文字列を対象としたい場合はそうするのが手軽です。「xl("B3:B5")[::-1]」のように記してもスピルのような効果は得られず、配列状のもの(DataFrame)を並べ替えた結果となり、1つ1つの文字列を並べ替えた結果は得られません。