例えば、節点番号 X座標 Y座標 Z座標という並びのデータを整理する。
何かしらのインプットデータを作成するとして、各項は入力桁数(カラム)が10でなければならないとする。また、各座標の小数点以下は3桁とする。
いま、節点番号1 X座標-200 Y座標-100 Z座標0というデータが入力されているとして、これを下記のように変換したい。
1 -200.000 -100.000 0.000
なお、節点番号とX座標の間にはダミーのカラムが10桁入っている。
まずは節点番号とダミーのカラムの変換から見ていく。(下図赤枠)
例えばG2セルに下記のように入力する。
=CONCATENATE(REPT(" ",10-LENB(A2)),A2,(REPT(" ",10)))
CONCATENATE関数:( )内のカンマで区切った文字列を結合する。上記例の場合、「REPT(" ",10-LENB(A2))」と「A2」と「(REPT(" ",10))」を結合する。
REPT関数:文字列を繰り返す。例えば=REPT("あ",10)と入力すると、「ああああああああああ」と、あが10回繰り返される。上記例の場合、ダブルクォーテーションで括った半角スペースが「10-LENB(A2)」回繰り返される。
LENB関数:指定したセルの文字数(バイト数)を返す。ただし、半角文字は1文字につき1バイト、全角文字は1文字につき2バイトとなる。上記例の場合、A2セルは半角で1と入力されているため、LENB(A2)は1となる。
以上より、=CONCATENATE(REPT(" ",10-LENB(A2)),A2,(REPT(" ",10)))の出力は
「 1 」となる。1の前で半角スペースが9回、後で10回繰り返されている。
続いてX座標の変換。
例えばH2セルに以下のように入力する。
=CONCATENATE(REPT(" ",10-LENB(TEXT(C2,"0.000"))),TEXT(C2,"0.000"))
REPT関数とLENB関数で半角スペースの数を整え、CONCATENATE関数で( )内を結合するという基本的な構成は節点番号のときと同じ。今回の初登場はTEXT関数。
TEXT関数:数値に書式を指定し、文字列に変換する。上記例の場合、C2セルの-200という数値に対し、0.000という小数点以下3桁表示を指定している。実行結果は-200.000となる。他にも例えば、表示形式を"0e+0"と指定すると-2e+2と変換される。
以上より、=CONCATENATE(REPT(" ",10-LENB(TEXT(C2,"0.000"))),TEXT(C2,"0.000"))の出力は
「 -200.000」となる。-の前で半角スペースが2回繰り返されている。
Y座標、Z座標は参照セルをそれぞれD2、E2セルに変えればいいだけなので省略するが、諸々変換すると下図の様になっている。
あとはこれをCONCATENATE関数で結合すれば良い。
K2セルにでも=CONCATENATE(G2,H2,I2,J2)と入力すると、
「 1 -200.000 -100.000 0.000」と出力され、望んだデータが手に入る。