本記事では、エクセルでのテーブルと箇条書きの効果的な変換方法について具体的なステップとともに解説します。箇条書きで取ったメモをエクセルやパワーポイントにてテーブル形式にまとめ直す際などにご活用ください。
結論
箇条書きからテーブル形式への変換
- WordやOneNoteなどの箇条書き形式が使用できるアプリ上で、テキストをコピー
- エクセルに、[形式を選択して貼り付け] (Ctrl + Alt + V) → [Unicode テキスト]形式で箇条書きの文章を貼り付け
- テーブルを出力したい任意のセルに下記の数式を入力
([箇条書きを貼り付けた全てのセル範囲]には、1で貼り付けたセル範囲を入力してください)
=LET( range, [箇条書きを貼り付けた全てのセル範囲], values, INDEX(range,, 2), bullet, INDEX(range,, 1), w_idx, MATCH(bullet, UNIQUE(bullet),), width, MAX(w_idx), h_idx, SCAN(0, 1-(INDEX(w_idx, SEQUENCE(ROWS(w_idx)))>INDEX(w_idx, SEQUENCE(ROWS(w_idx))-1)), LAMBDA(cum,row, SUM(cum, row))), height, MAX(h_idx), seq, SEQUENCE(height, width, 0), col, MOD(seq, width)+1, row, ROUNDDOWN(seq/width, 0)+1, IFERROR(INDEX(values, MATCH(row&"-"&col, h_idx&"-"&w_idx,)), "") )
テーブル形式から箇条書きへの変換
- 任意のセルに下記の数式を入力し結果をコピー
([箇条書きに変換したいセル範囲]はご使用のセル範囲を入力してください)
=LET( range, [箇条書きに変換したいセル範囲], TEXTJOIN(CHAR(10), 1, IF(range="", "", REPT(CHAR(9), COLUMN(range)-COLUMN(INDEX(range, 1, 1)))&range)) )
- Wordなどの箇条書き形式が使用できるアプリ上で、[形式を選択して貼り付け] (Ctrl + Alt + V) → [Unicode テキスト]形式で貼り付け
- 最初と最後の
"
(ダブルクオーテーション)を削除 - 箇条書きスタイルを適用
次のセクションで箇条書きとテーブルを変換する方法について、ステップごとに丁寧に解説します。どちらの方法とも数式は一見難しく見えますが、簡単にご使用いただけます。
箇条書きからテーブル形式への変換
まず初めに、箇条書きからテーブル形式への変換方法をご紹介します。箇条書きからテーブル形式への変換は以下のステップで実行することができます。
- 前提
- ステップ1
- ステップ2
- ステップ3
- ステップ4
前提: 箇条書きのスタイルを確認
まず初めに、Wordなどのアプリ上で箇条書きを用意します。インターネットからコピーしたり、番号付きリストなどになっている場合、Word上で規定された箇条書き形式になっていることを確認してください。
この際に、各レベルごとの箇条書きで別々の記号が使われていることを確認してください。
テキストのコピー
レベルごとに別々の記号が設定された箇条書きになっていることを確認後、Wordなどのアプリ上で箇条書きをコピーします。
エクセルへの貼付け
コピーした箇条書きのテキストを、エクセルの任意のセルに貼り付けます。この際に、[形式を選択して貼り付け] (Ctrl + Alt + V) → [Unicode テキスト]形式で箇条書きの文章を貼り付けてください。
任意のセルに数式を入力
次に、任意のセルに下記の数式を入力します。その際に、[箇条書きを貼り付けた全てのセル範囲]を先程の箇条書きを貼付けたセル範囲に変更してください。2列 × 行数分のセル範囲となります。
=LET(
range, [箇条書きを貼り付けた全てのセル範囲],
values, INDEX(range,, 2),
bullet, INDEX(range,, 1),
w_idx, MATCH(bullet, UNIQUE(bullet),),
width, MAX(w_idx),
h_idx, SCAN(0, 1-(INDEX(w_idx, SEQUENCE(ROWS(w_idx)))>INDEX(w_idx, SEQUENCE(ROWS(w_idx))-1)), LAMBDA(cum,row, SUM(cum, row))),
height, MAX(h_idx), seq, SEQUENCE(height, width, 0),
col, MOD(seq, width)+1,
row, ROUNDDOWN(seq/width, 0)+1,
IFERROR(INDEX(values, MATCH(row&"-"&col, h_idx&"-"&w_idx,)), "")
)
この数式は、箇条書きリストのデータを持つセル範囲から、その構造を行と列ごとに解析し、特定のフォーマットで新しい配列を生成します。スピル形式で出力され、空欄には空文字が入力されます。
テーブルを整形
最後に、必要に応じて出力結果のテーブルのフォーマットを調整します。罫線やセルの結合など、任意の形式にご調整ください。ブレットの深さ(最大レベル)に応じて条件付き書式を設定して罫線を引くだけでも、かなり見やすくなります。
以上が、箇条書きからテーブル形式への変換方法の解説となります。
テーブル形式から箇条書きへの変換
次に、テーブル形式から箇条書きへの変換方法をご紹介します。テーブル形式から箇条書きへの変換は以下のステップで実行することができます。
- ステップ1
- ステップ2
- ステップ3
- ステップ4
テーブルをまとめるための数式を入力
まず初めに、任意のセルにて下記の数式を入力します。この数式では、指定されたセル範囲から非空のデータを抽出し、列番号に応じたインデントを行い、最終的に改行で区切られた一つの文字列として結合しています。これにより、階層的なテキストが生成されます。
ご使用の際には、[箇条書きに変換したいセル範囲]を任意のセル範囲に変更してください。その後、出力結果のセルをコピーします。
=LET(
range, [箇条書きに変換したいセル範囲],
TEXTJOIN(CHAR(10), 1, IF(range="", "", REPT(CHAR(9), COLUMN(range)-COLUMN(INDEX(range, 1, 1)))&range))
)
Wordなどのテキストエディターへの貼付け
次に、先の数式の出力結果をWordなどのテキストエディターに貼り付けます。この際に、[形式を選択して貼り付け] (Ctrl + Alt + V) → [Unicode テキスト]形式で箇条書きの文章を貼り付けてください。
なお、OneNoteなどの貼付け形式が指定できない場合は、ペースト後にCtrlキーを押して、値貼り付けを選択してください。
不要なダブルクオーテーションの削除
上記の貼付けを実行すると、テキストの先頭と末尾に"
(ダブルクオーテーション)が入力されていることが分かります。これはエクセルからペーストを行った場合に表示されるもので、手動で削除する必要があります。
箇条書きスタイルの設定
最後に、任意の箇条書きスタイルを設定します。箇条書きの記号や深さは通常タブ文字によって区切られるため、今回ペーストしたテキストに対して、後から箇条書きスタイルを適用することができます。
以上が、テーブル形式から箇条書きへの変換方法の解説となります。
参考:カスタム数式としての登録方法
今回のような非常に長くて複雑な数式では、数式が何を行うためのものなのか分からなくなったり、数式が打ち間違いなどで使えなくなってしまったりすることがあります。
そうした問題を解決するために、これらの数式を個別にカスタム数式として登録する方法があります。別記事にて紹介しておりますのでよろしければご確認ください。
ここでは、下記の数式をカスタム数式として名前付き範囲に登録すると簡単に関数を使用できるようになります。(本記事でご紹介した内容と全く同じ数式ですが、改行が削除されています。)
=LAMBDA(range, LET(values, INDEX(range,, 2), bullet, INDEX(range,, 1), w_idx, MATCH(bullet, UNIQUE(bullet),), width, MAX(w_idx), h_idx, SCAN(0, 1-(INDEX(w_idx, SEQUENCE(ROWS(w_idx)))>INDEX(w_idx, SEQUENCE(ROWS(w_idx))-1)), LAMBDA(cum,row, SUM(cum, row))), height, MAX(h_idx), seq, SEQUENCE(height, width, 0), col, MOD(seq, width)+1, row, ROUNDDOWN(seq/width, 0)+1, IFERROR(INDEX(values, MATCH(row&"-"&col, h_idx&"-"&w_idx,)), "")))
おわりに
以上がエクセルで箇条書きとテーブルを相互に変換する方法の解説となります。
ご質問やご不明点などがありましたらお気軽にコメントお待ちしております。
ご精読いただきありがとうございました。
コメント