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)))
式の意味を理解したい方は次節へお進みください。
使用している関数と概要
文字列を逆転するために使用する主な関数は以下の通りです。
- TEXTJOIN関数: 文字列を結合するために使用します。
- MID関数: 文字列から特定の部分を抽出します。
- LEN関数: 文字列の長さを求めます。
- SEQUENCE関数: 一連の数値を生成します。
これらを組み合わせた式が以下です。「対象セル」を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)))
式の解説:
- 変数の定義:
cell_address
:この変数にA1
セルの値を割り当てます。これにより、A1
の内容を一度参照するだけで済みます。
- 逆転ロジックの実行:
TEXTJOIN
、MID
、LEN
、SEQUENCE
の各関数は、cell_address
を使用して計算を行います。cell_address
はA1
から取得された値を保持しているため、元のセルを何度も参照する必要がありません。LEN(cell_address)
はcell_address
の長さを求め、SEQUENCE
でその長さに基づいた数列を生成します。MID
関数はcell_address
から、逆順に文字を抽出します。
- 結果の結合:
TEXTJOIN
は抽出された文字をすべて結合して、最終的な逆順の文字列を生成します。
利点
この方法の利点は、複数の関数間でセル参照を繰り返すことなく、処理を一元化できる点です。これにより、処理の速度が向上し、エラーの可能性を減少させます。また、式がより読みやすくなり、メンテナンスが容易になります。
コメント