Excel文字列の分割と連結

Excel で入力した文字列に一定の規則がある場合、複数のセル( 右方向に )に分割して表示することが出来ます。また、一定文字数ごとに下方向に分割することができます。逆にセル分割された文字列を1つのセルに統合する方法は 特にデータ量が多い場合には大変な作業になります。簡便な方法もトライしてみます。

文字列の分割…右方向

図1.例題

図2.区切り位置指定ウィザード

図1.のような例で 「 大学 」, 「 学部 」 で分割する場合は b2 〜 b5 を選択した状態で
① Ctrl + H の置換機能で 検索する文字列に 「 大学 」 を 置換後の文字列に 「 大学□ 」 (□はスペース)と入力してすべて置換します。
② 同様に 「 部 」 を 「 部□ 」 に置換します。
③ 「 データ 」 → 「 区切り位置 」 で、 『 区切り位置指定ウィザード 』 を起動させます。 ( 図2.参照 )ウィザードの1ページ目では、 「 カンマやタブなどの区切り文字によってフィールドごとに区切られたデータ 」 にチェックが入ったまゝで 『 次へ 』 をクリックします。
④ )ウィザードの2ページ目 ( 図4.) の区切り文字で 「 スペース 」 を指定して完了をクリックします。

区切り文字にスペースを指定した場合には 半角・全角の区別はしません。

日本語でなく英文が入力されている場合には自動的に 「 スペースによって右または左に揃えられた固定長フィールドのデータ 」 にチェックが入ります。英文の場合単語間にスペースがあるので容易に単語の分離が行われます。


「 ねずみ!うし!とら!うさぎ!たつ 」 のように規則的な 「 ! 」 がある場合

図3.特定文字による区切り

図4.区切り位置ウィザード P.2

区切り文字は通常スペース、セミコロン、カンマ等ですが規則性があれば何でも OK です。前項と同様 「 データ 」 → 「 区切り位置 」 で、 『 区切り位置指定ウィザード 』 を起動させます。

ウィザードの2ページ目の 「 その他 」 でエクスクラメーションマーク 「 ! 」 ( 感嘆符:ここでは全角の文字を使っていますので半角では不可 )を指定します。 「 完了 」 でデータが分割され、 B 〜 F 列に 「 ねずみ 」 「 うし 」 「 とら 」 … と表示されます。 但し区切り文字の役割を果たした 「 感嘆符 」 は消去されます。 「 感嘆符 」 も必要とするのであれば b3 セルに 『 = b2 & "!" 』 と入力しこれを c3 〜 f3 セルに貼り付けします。 『 + 』 記号は数値の加算に使われますが、 文字列の場合は & ( アンパサンド ) が文字列の 連結の演算子として使われます。

(参考)
のように1つのセル内で Alt + Enter で改行したデータの場合 図4.の「 その他 」 で Ctrl + J を入力すれば Windows XP, Excel2003, Word2003 に区切られます。

下方向への分割

図5.

図5.のような文字列がセルの列幅に応じた文字列群に分割され下方に表示されます。セル幅より小さい文字列の場合は何ら変化しません。Excel2003 では 「 編集 」 → 「 フィル 」 → 「 文字の割付 」 で、 Excel2007 では 「 ホーム 」 の 「 編集 」 グループの 「 フィル 」 から 「 両端揃え 」 をクリックします。

文字区切り位置を変更するには最初にセル幅を変更するか、 b2 〜 c2 セルのように複数セルを選択しておきます。フォントやフォントサイズを変えても有効ですが下方のセルの書式も変更しておく必要があります。英文の場合には、セル幅に収まる単語なら複数個の単語が入り、またセル幅に収まらない単語でもはみ出て1つの単語が入ります。

文字列の連結

上述のように分割された文字列は で元に戻せば復元しますが、最初から分割された文字列だと1つのセルに統合するのは至難です。図5.の下方に分割された文字列の例だと、当該範囲のセル以外で … 『 = b2 & b3 & b4 & b5 & b6 & b7 』 または 『 = concatenate(b2,b3,b4,b5,b6,b7) 』 のように面倒な記述をしなければなりません。ここの例では6行なのでまだしも、一般的には相当の行数が想定されます。

Excel 文書を Word に

レジュメなど相当な分量のある文書を、従来 Excel で作成したけれども改めて Word で再編集し直したいことがあります。

★ 1つの方法は Excel 文書をコピーして Word に貼り付けをし、「 貼り付けのオプション 」 で 「 テキストのみ保持 」 にします。 表として貼り付けた場合は、 2003では、「罫線」→「変換」→「表の解除」、2007では「表ツール」の「レイアウト」で「表の解除」をクリックします。いずれにせよ 不要な段落記号 ( 改行マーク ) が数多く生じます。

段落記号を ( 必要なものも含め ) 一括消去する方法を次に示します。Word 画面上で Ctrl + H で 図1.と類似のダイアログがでます。

図6.

①オプションで上の図に変わります。② あいまい検索のチェックをはずすと ③ の特殊文字の選択が有効になるのでここをクリックし、④の 段落記号を選び、置換後の文字列は何も入力しません。すべて置換(A)で OK です。 不要なタブ文字も同様に消去できます。

★ もう1つの方法は Excel で文字列を連結し Word に貼り付けする。不要な改行マークがなければ必要な箇所の設定だけですむので簡単です。

多くのセル文字列の連結

① 連結する目的の文字列をすべて a 列に配置しておいて、 a 列以外のセルで 下記の文字列を貼り付け Enter を押せば OK です。 200 行まで連結出来るようにしています。 1つのセルには 32,767 文字までしか入力できません。また 1,024 文字を超えるとセルに表示されない場合がありますが Word 等には全て貼りつけられます。次の文字列はトリプルクリックで全文字列が選べます。途中空白セルがいくらあっても結果に影響しません。concatenate 関数は、連結出来る参照のリミットが 255 ( Excel2003 では 30 ) など制約があります。

=a1&a2&a3&a4&a5&a6&a7&a8&a9&a10&a11&a12&a13&a14&a15&a16&a17&a18&a19&a20 &a21&a22&a23&a24&a25&a26&a27&a28&a29&a30&a31&a32&a33&a34&a35&a36&a37&a38&a39&a40 &a41&a42&a43&a44&a45&a46&a47&a48&a49&a50&a51&a52&a53&a54&a55&a56&a57&a58&a59&a60 &a61&a62&a63&a64&a65&a66&a67&a68&a69&a70&a71&a72&a73&a74&a75&a76&a77&a78&a79&a80 &a81&a82&a83&a84&a85&a86&a87&a88&a89&a90&a91&a92&a93&a94&a95&a96&a97&a98&a99&a100 &a101&a102&a103&a104&a105&a106&a107&a108&a109&a110&a111&a112&a113&a114&a115&a116&a117&a118&a119&a120 &a121&a122&a123&a124&a125&a126&a127&a128&a129&a130&a131&a132&a133&a134&a135&a136&a137&a138&a139&a140 &a141&a142&a143&a144&a145&a146&a147&a148&a149&a150&a151&a152&a153&a154&a155&a156&a157&a158&a159&a160 &a161&a162&a163&a164&a165&a166&a167&a168&a169&a170&a171&a172&a173&a174&a175&a176&a177&a178&a179&a180 &a181&a182&a183&a184&a185&a186&a187&a188&a189&a190&a191&a192&a193&a194&a195&a196&a197&a198&a199&a200

② 簡単なイミディエイト記述による方法を記します。実行する前に当該セル範囲 ( 複数列でも可 ) を選択しておきます。 c1 セルに連結文字列が表示されます。元のデータは c1 を避けた方がよいです。


w="":for each c in selection:w=w & c.value:next:range("c1")=w

図7.

①の連結の式や 『 =a1&b1&a2&b2&a3&b3&…』 などを自分で作るには 図7.のように入力したセルを下方に オートフィルで必要な行まで埋め上記マクロイミディエイトを使い連結した文字列の最初に 『 = 』 を付し、末尾の 『 & 』 を消去するとOKです。

マクロを使わず 図7.で下方にオートフィル実行後 c3 セルで 『 =c2&a2&b2 』 とタイプし、これをさらに下方にオートフィルしても同様に作成されますが要らない式が数多く生じます。

このサイトで扱った項目