文字列に1文字ずつスペースをはさむ

 文字列に含まれるそれぞれの文字の間にスペースをはさむ方法についてです。
 例として右のようなテーブルを用い、クエリで実現するものとします。


 簡単なのはFormat関数を用いて次のような列を設ける方法です。



スペース入りタイトル: Trim(Format([タイトル],"& & & & & & & & & & & & & & & & & & & &"))

 「 &」は対象とする文字列の長さに応じて適宜繰り返すものとします(最大30文字なら30回)。また、Format関数だけですと左側にスペースが残りますのでTrim関数で取り除きます。


 データシートビューです。

 なお、当然ながらスペースだけでなく任意の文字をはさむことができますが、その場合は左側にその文字が残りますので、Trim関数ではなくRight関数などとLen関数を用いて必要な部分を取り出さなければなりません。


 さて、上記のやり方ですと文字列が長い場合にスマートではありませんので、文字数に応じた処理ができるようにしたいと思われるかもしれません。VBA向きという気もしますが関数でも次のようにすれば一応大丈夫です。



スペース入りタイトル: Trim(Format([タイトル],Replace(String(Len([タイトル]),"&"),"&"," &")))

 String関数を用いて文字列の長さの数だけ「&」を出力し、それぞれの「&」を「 &」に置き換え、その結果をFormat関数の引数として与えています。
 ただし、文字列が長いと(この例の場合58文字以上)エラーとなってしまいますので、工夫した甲斐があるかというと微妙です。


 データシートビューです。