WordPressやプラグインのバージョンなどをExcel上で管理して、Excel上でバージョンの大小判定を行うのは面倒な作業の一つです。
WordPressやプラグインのバージョン番号はドットで区切られた表記になっており、Excelでは文字列になるため、単純な大小判定はできないためです。
バージョン番号の大小判定を行うには、ドットで区切られた文字列をそれぞれ数値として取り出し、比較できるようにします。
ドットで区切られた文字列を数値として取り出すExcelの関数は新しいExcelにあるようですが、古いバージョンのExcelでは利用できません。
この記事では、古いバージョンのExcelでも使えるドットで区切られた文字列を取り出す数式をご紹介します。
バージョン番号はIPアドレスと見た目が似ている
WordPressやプラグインのバージョン番号というのは、多くの場合3つの数値をドットでつなげたものです。
例えば、Wordpressで言えば、6.3.2、PHPのバージョンで言えば、7.4.33など。
先頭から2つ目までの数値がメジャーバージョンで、最後の数値がマイナーバージョンという感じで使われています。
この表記は実はIPアドレスとほぼ同じであるため、ExcelでIPアドレスを判定する時に同じ問題が起こります。
ドット区切りのバージョン番号から数値を取り出そうとすると検索してもなかなか出てきませんが、IPアドレスを判定する数式というのは簡単に見つかります。
ExcelでIPアドレスから数値を取り出すExcelの数式
検索すると簡単に見つかります。
こちらのサイトでは、第一オクテットから第四オクテットまで4つの数値を取り出す数式が紹介されています。
バージョン番号は3つの数値がドットでつながった文字列ですので、少し変更すればそのまま使えます。
ドット区切りのバージョン番号から数値を取り出すExcelの数式
D2セルにバージョン番号が入っているものとします。
数式を入力しているセルは、1つ目はP2、二つ目はQ2、3つ目はR3になります。
D | P | Q | R | |
2 | 6.2.3 | 6 | 2 | 3 |
1つ目
=IF(D2<>"",LEFT(D2,FIND(".",D2)-1),"")
1つ目の数式:単純に、LEFT関数とFIND関数で取り出します。
2つ目
=IF(D2<>"",MID(LEFT(D2,FIND(".",D2,LEN(P2)+2)-1),LEN(P2)+2,3),"")
2つ目の数式:1つ目の結果から1つ目のドット位置を特定し、FIND関数で2つ目のドット位置を特定し、それらの位置を使って、MID関数で文字列を取り出します。
FIND(検索文字列, 対象, [開始位置])
FINDB(検索文字列, 対象, [開始位置])
FIND 関数および FINDB 関数の書式には、次の引数があります。
- 検索文字列 必ず指定します。 検索する文字列を指定します。
- 対象 必ず指定します。 検索文字列を含む文字列を指定します。
- 開始位置 省略可能です。 検索を開始する位置を指定します。 対象の先頭文字から検索を開始するときは 1 を指定します。 開始位置を省略すると、1 を指定したと見なされます。
LEFT(文字列, [文字数])
LEFTB(文字列, [バイト数])
この関数の書式には、次の引数があります。
- 文字列 必ず指定します。 取り出す文字を含む文字列を指定します。
- 文字数 省略可能です。 取り出す文字数を指定します。
- 文字数には、0 以上の数値を指定する必要があります。
- 文字数が文字列の文字数を超える場合、文字列全体が返されます。
- 文字数を省略すると、1 を指定したと見なされます。
- バイト数 省略可能です。 LEFTB で取り出す文字数をバイト数で指定します。
3つ目
=IF(D2<>"",RIGHT(D2,LEN(D2)-LEN(P2&Q2)-2),"")
3つ目の数式:1つ目と2つ目で取り出した文字列の長さと、全体の長さの差分から取り出しRIGHT関数を使って、3つ目の文字列と取り出します。
P2やQ2、R3をVALUE関数で数値に変換すれば、大小判定などに使うことができます。
バージョン番号を大小判定したい
バージョン番号をドット区切りで数値にしても、大小判定する時にはひと手間必要です。
ドット区切りの数値を桁として数値に変換することを考えますが、数値が2桁になってしまう場合は上手く大小比較できないことになります。
10ずつ桁を区切るのではなく、100ずつ桁を区切れば問題なくなります。
Q2やR2が2桁になると上手くいかない
=P2*100+Q2*10+R2
Q2やR2が2桁になる可能性がある場合
=P2*10000+Q2*100+R2
まとめ
Excelでドット区切りの文字列の大小判定を行いたい場合は、IPアドレスに関する情報を探すと事例が多く見つかります。
それを応用することで、簡単にバージョン番号の文字列を大小判定できるように数値に変換することができます。