文字列を逆転・反転させる関数と計算式

Excelでデータを扱う際、時には文字列を逆転させる必要が生じることがあります。2023年現在、Excelには直接的な「文字列を逆転させる」関数は存在しませんが、複数の関数を組み合わせてこの目的を達成することができます。以下に紹介する式を用いれば効率的に文字列を逆順にすることが可能です。

コピペ用:文字列を逆転させる計算式

式の解説は次節以降で行います。解説を読まずに使いたい方は以下の式の「対象セル」を反転したい文字が入力されるセルに置き換えて、コピペして利用してください。

=LET(cell_address, 対象セル, TEXTJOIN("", TRUE, MID(cell_address, LEN(cell_address) - SEQUENCE(LEN(cell_address), 1, 0), 1)))

対象セルがA1ならば以下のようになります。

=LET(cell_address, A1, TEXTJOIN("", TRUE, MID(cell_address, LEN(cell_address) - SEQUENCE(LEN(cell_address), 1, 0), 1)))
セルA1に入力されている文字データを逆転・反転して表示させる計算式をA2へ設定した。

セルA1に入力されている文字データを逆転・反転して表示させる計算式をA2へ設定した。

式の意味を理解したい方は次節へお進みください。

使用している関数と概要

文字列を逆転するために使用する主な関数は以下の通りです。

これらを組み合わせた式が以下です。「対象セル」を3度登録する必要があります。1度で済ますにはLET関数で処理する必要がありますが、その手順は記事の後半で解説します。

=TEXTJOIN("", TRUE, MID(対象セル, LEN(対象セル) - SEQUENCE(LEN(対象セル), 1, 0), 1))

調査対象のセルがA1であるならば以下の式になります。

=TEXTJOIN("", TRUE, MID(A1, LEN(A1) - SEQUENCE(LEN(A1), 1, 0), 1))

式の詳細解説

STEP 1: 文字列の長さを計算

LEN(A1) は、セル A1 に入力された文字列の文字数を計算します。この値は、後のステップで使用されます。

STEP 2: 数値シーケンスの生成

SEQUENCE(LEN(A1), 1, 0) は、0 から始まり、文字列の長さまでの連続する整数を生成します。例えば、文字列の長さが 5 の場合、生成されるシーケンスは [0, 1, 2, 3, 4] です。

STEP 3: 文字の位置を計算

LEN(A1) - SEQUENCE(LEN(A1), 1, 0) この計算により、文字列の末尾から先頭に向かって位置が決定されます。上の例では、[5, 4, 3, 2, 1] となります。これは MID 関数で使用される文字の抽出開始位置です。

STEP 4: 文字の抽出

MID(A1, ..., 1) は、計算された各位置から1文字ずつ抽出します。MID関数は指定された位置から指定された数の文字を文字列から抽出します。

STEP 5: 文字列の結合

TEXTJOIN("", TRUE, ...) は、抽出された文字を結合して一つの文字列にします。TEXTJOIN関数の第一引数に空の文字列を指定することで、間に区切り文字を挟まずに連続して文字を結合します。TRUE は空のセルを無視することを意味します。

LET関数を使用した効率的な方法

Excel 365ではLET関数を使用して、計算内で使用する値や中間結果を名前に割り当てることができます。これにより、複雑な計算をより簡潔にし、再計算の回数を減らすことが可能になります。特に、文字列を逆転させる処理では、LET関数を利用して、セルの参照や計算結果を一度定義し、その後の処理で何度も使い回すことができます。

文字列逆転のための LET関数の使用例

以下の式は、セルA1に入力された文字列を逆転させるためのものですが、LET関数を用いることで、cell_address という名前にA1セルの内容を割り当て、この名前を式全体で使用します。

=LET(cell_address, A1, TEXTJOIN("", TRUE, MID(cell_address, LEN(cell_address) - SEQUENCE(LEN(cell_address), 1, 0), 1)))

式の解説:

  1. 変数の定義
    • cell_address:この変数にA1セルの値を割り当てます。これにより、A1の内容を一度参照するだけで済みます。
  2. 逆転ロジックの実行
    • TEXTJOINMIDLENSEQUENCEの各関数は、cell_addressを使用して計算を行います。cell_addressA1から取得された値を保持しているため、元のセルを何度も参照する必要がありません。
    • LEN(cell_address)cell_addressの長さを求め、SEQUENCEでその長さに基づいた数列を生成します。
    • MID関数はcell_addressから、逆順に文字を抽出します。
  3. 結果の結合
    • TEXTJOINは抽出された文字をすべて結合して、最終的な逆順の文字列を生成します。

利点

この方法の利点は、複数の関数間でセル参照を繰り返すことなく、処理を一元化できる点です。これにより、処理の速度が向上し、エラーの可能性を減少させます。また、式がより読みやすくなり、メンテナンスが容易になります。

コメント