セル内の改行ごとに連番を付けるには

セルの中で改行をするにはAtl + Enterキーを押します。

ここでは、その改行ごとの先頭に「1. 」から連番を付けるマクロを紹介します。

実行するとこのような感じになります。A列は変換前、B列は変換後です。分かりやすいように幅を変えています。空行の場合は番号を付けず空行のままとしています。

事前設定

以下のVBAコードは事前に正規表現の参照設定をしておく必要があります。

VBAの画面でツールメニュー→参照設定のダイアログを開き、「Microsoft VBScript Regular Expressions 5.5」にチェックを付けることで正規表現のRegExpクラスが利用できるようになります。

セル内の改行ごとに連番を付けるマクロ

選択セル範囲のすべてのセルに対して、改行ごとの連番を設定します。

値が入っていないセルには連番は設定しません。

セル内改行がないセルでも値が設定されていれば「1. 」を先頭に付けます。

 

コード説明

詳細はコメントの通りなので、概要を説明します。

選択セル範囲を1セルずつ処理するためにSelectionをループします。

ループごとのセルに含まれる改行コードLFでセルの文字列を分割します。LFなのはセル内の改行は改行コードLFによって行われているためです。

LFごとに分割された数だけループします。たとえばLFが1つであれば2回ループすることになります。

あとは改行ごとの文字列に対して、左端に連番を付与していきます。半角スペースの判定を行っているのは、最終的に「連番+ドット+半角スペース」を付与するためです。

使い方

連番を付けたいセル範囲を選択して、上のマクロ「セル内改行連番」を実行します。

1. セルに入力します。ここではセル内に改行がある場合、ない場合、セル未入力の場合を用意しています。

2. 連番を付けたいセル範囲を選択します。

3. マクロを実行します。実際には選択状態は維持されたままですが、わかりやすいように選択状態は外しています。