何かと世間を騒がせている「神エクセル」、こんな記事も話題になっています。

こういった話題をうけて前回は、


といった記事を書きました。

これは神エクセルやエクセル方眼紙といって忌み嫌われている官公庁の申請書類について、申請者がデータ入力する段階から根本的に使いやすいようにしてみようという、フォーマット上で問題を解決するアプローチでした。

そのあとでふと思いついたんですが、

ということで、方眼紙のようなマス目に1文字ずつ入力されてしまっている文字列を簡単に結合するため、ワークシート上からもVBAコード上からも使える関数を書いてみました。
作るのも使うのも思いのほか簡単でしたので、ご紹介します。

とりあえず簡単なサンプルファイルも作成しましたので、興味ある方はダウンロードしてみてください。
職場のネット環境が厳しくてダウンロードできない方は作り方も書きますので大丈夫です。

<指定範囲の文字列をすべて連結できる関数のサンプルファイルはこちらです>
rconcatenate.xls

ではいってみましょう。

スポンサーリンク

選択範囲のセルの文字列を全部一発でつなげる関数の使い方

指定範囲の文字列をすべて連結する関数の使用例

サンプルファイルをダウンロードしていただいた方はもう開くだけでわかると思いますが、使い方は超簡単。

=RCONCATENATE(選択範囲)

エクセルにもともと入っているCONCATENATE関数ではなくて、今回作ったのはRCONCATENATE関数です。

どうしてCONCATENATE関数じゃダメなのか

エクセルのワークシート上で文字列を連結する方法は大きく分けて2通りあります。

  • 「&」記号を使って文字列を連結する方法
  • CONCATENATE関数を使って文字列を連結する方法

たくさんのセルの文字をつなげたい場合は「&」記号よりもCONCATENATE関数を使ったほうが楽なのですが、この関数、セルの指定方法があまりイケてないのです。

=CONCATENATE(セル1,セル2,セル3,・・・・セル30)

という調子で、文字列をつなげたいセルをいちいち1つずつ別々に指定したあげく、なんと30個のセルまでしか指定できません。

なれている人はセルを選択する際にCtrlキーを押したままポチポチマウスをクリックしていくんでしょうけれども、それにしても使いづらい。

SUM関数みたいに一定のセル範囲をいっぺんに指定して文字列を連結できればいいのに

ということで、RCONCATENATE関数を作ってみました。
ちなみにRはセル範囲を表す「Range」の頭文字からとってみましたよ。

RCONCATENATE関数の作り方

「えっ!?エクセル関数って作れるの?」
という方もいらっしゃると思いますが、なれれば簡単に作れちゃいます。

いったいどんなプログラムを書いているのかというと、恐ろしく短いので驚かないでくださいね。

なんと、たったの6行です。
このままだとわかりづらいかもしれませんので、緑色の文字のコメントを追加してみました。

ちなみに、先頭にシングルクォート「’」を打つと文字が緑色になって、その行はプログラムとしては解釈されないようになっているので心配ありません。プログラムの世界ではこれを「コメント」といいます。まあ、よくわからない人は気にしないでください。

このプログラムをどこに貼り付ければいいか

エクセルを開いてAltキーを押しながらF11キーを押すと、下のような画面が表示されます。
エクセルでプログラミングをするときはこれを使うんですが、準備として画面上部の「挿入」から「標準モジュール」を選んでください。
VBEで標準モジュールを追加する

で、あとは下のようにコピーしたプログラムコードを貼り付けるだけです。
これで自作のワークシート関数の出来上がりです。

標準モジュールにVBAコードを貼り付ける

最後の方はちょっとマニアックでしたね。すみません。
よくわからなければ手っ取り早くダウンロードしたエクセルを使ってみてください。
rconcatenate.xls

今日のExcelスキルアップ

今回は、碁盤の目というか方眼紙状になったエクセルシートのセル1つ1つに文字がバラバラに入っているところから、関数一発でつながった文字列を取り出す実験をしてみました。

泣いても笑っても、もうすでに作られてしまったエクセル方眼紙はどうしようもありません。
ならばそこからいかに楽してデータを取り出すかというアプローチです。

たくさんの「ネ申エクセル」に泣かされている方はぜひ試してみてください。

Pocket