« 2022年12月 | トップページ | 2023年2月 »

Excel のTEXTSPLIT関数で文章を別々のセルに入れる。

この記事は自分用の覚書です。

■MacBook Pro macOS Monterey
バージョン 12.6

■Microsoft 365 Apps for businessサブスクリプション
(旧称 Office 365 Business)
Excel for Mac バージョン 16.69.1 (22011600)

M.K さん

昨年の8月でしたか新関数が追加されました。そのなかの一つ「TEXTSPLIT関数」を使っていますか。我々の仕事ではとても役に立ちますよ。
今のところ、Microsoft365サブスクライバーなら使える関数です。

「区切り位置」の機能を関数で実現したのがTEXTSPLIT関数です。
指定した目印でテキストを区切ってくれます。

この記事この記事のように「区切り位置」機能を使わなくてもよくなりました。
使ってはいけないということではないですが、我々の仕事で今後は「区切り位置」の機能の利用は減るでしょうね。

ネット上ではたくさんの人がTEXTSPLIT関数の使い方を解説してくれていますから、詳しいことはご自分で調べてください。

ここでは、我々の仕事上でたまに遭遇する、だからこそ都度やるのは面倒な「セル内にある文章を区切って別々のセルに入れる」例を取り上げます。

■「区切り位置」にはない利点

「区切り位置」にはないTEXTSPLIT関数の利点は次の3点だと私は思います。

  1. 行方向に分割できる。
    「区切り位置」では列方向にしか区切れません。
    TEXTSPLIT関数では行方向にも区切れます。
  2. 元の文字列が無くならない。
    「区切り位置」を実行すると元の文字列が消えてしまいます。
    1つのセルに入っている状態を残しておきたければ、どこかにコピー貼り付けしておくしかありません。
    TEXTSPLIT関数では元の文字列は無くなりません。
  3. 元の文字列が変わったら連動する。
    なんらかの理由で元の文字列が変わった場合、「区切り位置」ではやり直しが必要です。
    TEXTSPLIT関数ではそれが必要ありません。数式のなかで元の文字列のセルを参照しているだけなので。

■TEXTSPLIT関数の構文

TEXTSPLIT関数の構文は次のようです。
引数がまだ英語圏用の表示のままなのがちょっと残念ですが、そのうち日本語表示になるのではないかと思っています。

00textsplit

我々の仕事でなら、左から4番目の引数まで知っておけば大抵の用途は満たせると思います。

  • text
    「元の文字列」を指定します。
    当たり前ですが省略できません。
  • col_delimiter
    「列に区切るときの目印」を指定します。省略可能です。
  • row_delimiter
    「行に区切るときの目印」を指定します。省略可能です。
  • ignore_empty
    「空欄を無視するか、しないか」を指定します。省略可能です。
    省略すると「FALSE」(空欄を無視しない)を指定したことになります。

引数「ignore_empty」について少しふれておきます。

たとえば、

A,B,,C

となっている文字列があって , を目印に区切ると、B の右側に , が2つあるので次のようになります。

05textsplit_kuran

「正味の文字はそこにないのだからカンマで区切ったら、A B C でしょう」と考えることができるのは人間だからです。

エクセルは、人間が指定した目印で元のデータを区切るので、目印があるということは隣に値があってもなかってもそこで区切って値を入れるためのセルを確保します。

だから、A,B,,C は A B □ C になります。

こうなった場合に「空のセル」を無視しないで残すか、無視して詰めるかを指定するのが引数「ignore_empty」です。

目印で区切ったときにできる空欄を無視しないのは、「区切り位置」機能と同じです。
「区切り位置」機能がそうなっているため、TEXTSPLIT関数の標準をそちらに合わせたのでしょうね。

■セルに入っている文章を区切る。

考え方は「区切り位置」機能と同じです。
上記のリンク先にもあるように、どこで区切るかの位置として指定した "もの" は消えてしまいます。
だとしたら、「。」ごとに文章を区切る場合は「。」を「。と区切りのための目印」に置換してから、その目印をTEXTSPLIT関数の引数に指定すれば「。」を残して区切れます。

次図では、「。」を「。_」(。とアンダーバー)に置換してから「_」をTEXTSPLIT関数の引数に指定しています。

引数のなかでの「_」の位置に注目してください。

引数「col_delimiter」に「_」を指定した場合は「3列」に区切られています。
「row_delimiter」に指定した場合は「3行」になっています。上記の利点の 1 番、「区切り位置」機能ではできない区切り方です。

引数「ignore_empty」は TRUE (空欄は無視する)です。

以下では和文を例にしていますが英文でもやり方は変わりません。
英文ならば、「.」(ピリオド)を「.と目印」に置換することになります。

「スピル」については大丈夫ですか。TEXTSPLIT関数はスピルします。
これからのエクセルは「スピル」についての理解が必須です。

図では「作業列」を使って処理の過程を分けています。こうすることで、全体を通して何をどうやっているのかが誰にでも理解しやすくなります。

職場で作るファイルは誰のものでもありません。皆のものです。
他の人が引き継ぐこともありますし、流用することもあります。

そんなときに、ぱっと見て何をしているのかわかりづらいファイルは迷惑でしかありません。

仕事で作るファイルは、いつ誰が見ても理解しやすく作っておくべきです。
他社さんではどういう方針でやっているかは知りませんが、我々の職場ではそういう考え方をしてください。

誤解がないようにいっておきますが、「関数をネストとして長い数式を1つのセルに入れてはいけない」わけではないです。
そうするしかない場合だってありますから。

ただ、どんな場合も「いつ誰が見ても理解しやすく作っておく」ことが大事だということです。

01textsplit

ひょっとして、上図の数式を見て「1つの文章の終わりに「。」が複数あることはないから、空欄はできないので "TRUE" (空欄は無視する)は不要だろう」と感じていますか。

だとしたら、ちょっとした勘違いです。さっきの A,B,,C の例と同じです。
「アンダーバーで区切ったら最後の文章の次には何もないのだから空欄はできない」と考えることができるのは人間だからです。

引数「ignore_empty」を省略する( FALSE を指定したことになる)と次のようになります。

06textsplit_kuran2

最後の「……である。_」にもアンダーバーが付いていますからエクセルはそこで区切って、隣にあるであろう値を入れるためのセルを確保します。

だから、

 ……です。………ます。………である。[空のセル]

になります。

その「空のセル」はこの事例の場合は不要なので、引数「ignore_empty」を "TRUE" (空欄は無視する)にしています。

なお、上図では「_」を使いましたが、区切るための目印にする "もの" は「記号」でなくてもかまいません。
数字も英字でも漢字でもひらがなでもカタカナでもなんでもよいです。

元データのなかにあるものは目印にはできません。そこで区切られてしまうので。
「"。" で区切るために "。" を目印付きの "。" に置き換えるときは、元のデータのなかに絶対に存在しないものを目印にする」という注意点も「区切り位置」機能と同じです。

02textsplt

もっと言うと、「目印」は「1文字」である必要はないです。わざわざこんなことする人はいないでしょうけどね。

03textsplit

■セル内改行ごとに区切る。

セル内改行で区切る場合も「区切り位置」と考え方は同じです。

CHAR関数(キャラクター関数)が「改行コード」を返すように指定してそれを引数に使います。
改行コードを返す構文は、CHAR(10)です。

04textsplit

これらをテンプレートにしておけば、テキストを貼り付けるだけで済みます。

TEXTSPLIT関数の登場のおかげで「セルの中の文章を区切って別々のセルに入れる」作業はずいぶん楽になりました。
積極的に使って仕事の効率を上げていきたいですね。

| | コメント (0)

Excel for Mac で「列のピボット解除」が可能に。

この記事は自分用の覚書です。

■MacBook Pro macOS Monterey
バージョン 12.6

■Microsoft 365 Apps for businessサブスクリプション
(旧称 Office 365 Business)
Excel for Mac バージョン 16.69.1 (22011600)

H.K さん。

Excel for Mac の Power Query が機能アップされましたね。

Windows版Excel にしかなかった「列のピボット解除」が、Excel for Mac でもできるようになりました。
細かい話をすると、Windows版Excelにはある「テーブルまたは範囲から」コマンドがないです。これからに期待しましょう。

Windows版Excel の「列のピボット解除」と操作はほとんど変わりません。

ただし、上記でふれたように「テーブルまたは範囲から」がないので、ピボット解除したいファイル自体を開いての操作はできません。
いったん、別のファイルを用意してそこに「ピボット解除したいファイル」を読み込むことになります。

こういう形の表があるとします。

01retu_pivot_kaijo

これではほぼ何もできません。

・最小値・最大値を見つける。
・最大値(最小値)の拠点を見つける。
・何日がどんな値なのかを調べる。
などなど。

つまり、こういう形の表だとエクセルがもつポテンシャルを十分に生かせないわけですね。
これをポテンシャルを生かせる形にするのが「列のピボット解除」です。

先の形の表をこのような形にしてくれます。
こうなっていれば、エクセルの関数やさまざまな機能を使って、なんとでもできます。

14retu_pivot_kaijo

「列のピボット解除」の操作 1

冒頭の形の表を開いていてはピボット解除ができないので閉じておきます。
別のファイルで「データ」タブの「データファイル指定(Power Query)」を選びます。

02retu_pivot_kaijo

「列のピボット解除」の操作 2

「データソースの選択」の画面になります。
ここではエクセルのブックを例として使うので、「Excelブック」を選択しています。

03retu_pivot_kaijo

「データソースへの接続」の画面になるので「参照」から該当するブックを選びます。

ブックを選択したら「データ取り出し」をクリックします。

04retu_pivot_kaijo

「データソースへの接続」の画面に戻るので、「次へ」をクリックします。

「列のピボット解除」の操作 3

「データの選択」画面になるので、目的のシートにチェックを入れます。(例では Sheet1 だけしかありません。)
ここで慌てないように!
「読み込む」をクリックしてはいけません。「データの変換」のほうをクリックします。
「読み込む」をクリックすると、ワークシート上にこのまま読み込まれてしまいます。

07retu_pivot_kaijo

「列のピボット解除」の操作 4

「データの変換」をクリックすると、Powewr Query エディターにデータが読み込まれます。
ここで、すでに1列目が選択されていることを意識してください。

08retu_pivot_kaijo

「変換」タブを開いて「1行目をヘッダーとして使用」をクリックします。

09retu_pivot_kaijo

1行目がヘッダーになります。
さっきまでは、Column1 や Column2 になっていた部分です。

10retu_pivot_kaijo

「変換」タブの「列のピボットの解除」から「その他の列のピボット解除」を選びます。

11retu_pivot_kaijo

さきほど、「1列目が選択されていることを意識しておく」といいました。
"1列目が選択されている" ので、 「その他の列のピボット解除」の "その他" というのは、2列目以降のことになります。

1列目はすでにヘッダー(列見出し)があって、2行目から下に値が入っている状態になっています。

そうなっていないのは、2列目と3列目です。
2列目と3列目のピボット状態を解除したいわけです。

なので、ここでは「その他の列のピボットの解除」を選びます。

2列目と3列目のピボットが解除されると、こうなります。

12retu_pivot_kaijo

「列のピボット解除」の操作 5

これで完成ではありません。これをワークシートに読み込む必要があります。
「ホーム」タブの「閉じて読み込む」をクリックします。

13retu_pivot_kaijo

ワークシートにデータが読み込まれます。
これで「列のピボット解除」は完了です。
14retu_pivot_kaijo

どんな場合も「列のピボット解除」が役立つわけではありませんが、かなり助かるのは確かです。

Power Query でデータをワークシートに読み込むと、元のブックとの関係が維持されます。
元のブックで値を追加すると、こちらのファイルを開いてその値を表示させることができます。

「茨城県」を追加してみました。

15retu_pivot_kaijo

Power Query を実行した側のファイルを開くと、「セキュリティの警告」が表示されます。「コンテンツの有効化」をクリックしてください。

「データ」タブの「すべて更新」を実行すると「茨城県」が追加されます。

16retu_pivot_kaijo

なお、「セキュリティの警告」の表示を消す手順がネットで見つかりますが、それらはたいていの場合、「元データとの接続を解除する」やり方が書いてあります。

当たり前ですが、さきほどのように「元データに追加があったら Power Query を実行した側のファイルにも自動的に追加される」状態を維持しておくのであれば、解除はしないでください。

| | コメント (0)

« 2022年12月 | トップページ | 2023年2月 »