Trinity

TRILOGトリログ

データの結合・分割の幅を広げたい。改行するなら CHAR(10) を使おう!

2019.10.01

私たちは、開発中製品の仕様や特徴をスプレッドシートにまとめて管理しています。

最終的には、この仕様や特徴のキーワードを商品説明文に変換して、取引先や Amazon に登録するための csv やエクセルのファイルに入力していくわけですが、たいていの場合、私たちのリストでは 50 ある項目を、製品登録用ファイルの見出しに合わせて数個ないしひとつにまとめなければなりません。登録する製品数たるや 100 を超えることもあります。仕様や特徴によっては「無し」と入力されているものもあるので、それらは無視して、仕様や特徴をひとつずつ拾い出して、セルにまとめて。。。という作業は何時間かかるかわかりません。どうにか簡単に登録できないかとインターネットであれこれ検索していて見つけたのが「CHAR(10)」でした。インターネットにも同様のブログ記事がたくさんありますが、私自身がとても感動したので紹介したいと思います。

実際に使っている表や数式に触れる前に、まずは、基本的なデータの結合と分割の方法をご紹介していきます。

データの結合

エクセルを使ったことのある方なら、一度は「&」を使ってセルに書かれた内容をくっつけたことがあるのではないでしょうか。たとえば、セル:A1 に名字(例:山田)、セル:B1 に名前(例:太郎)が入力されているとき、セル:C3 に「=A1&B1」と入力すると「山田太郎」と表示させることができます。※ CONCAT 関数CONCATENATE 関数を使ってデータ結合することもありますが、今回は省略します。

 

もし、名字と名前の間にスペースを入れたい場合は、「=A1&” “&B1」と入力すれば、「山田 太郎」と表示させることができます。ダブルクオテーション(”)は数式の中に文字列を入れたいときに使います。「=A1&” “&B1」の「” “」の部分は、半角スペースをダブルクオテーションで挟んでいる状態です。

 

この半角スペースを「★」に変えてみると、「山田★太郎」になります。

=A1&” “&B1」の「” “」の部分に「”★”」を入れると「山田 太郎」が「山田★太郎」になるのであれば、「” “」の部分に改行を意味する何かを入れれば、名字と名前をひとつのセルの中で改行して表示させることができるはずです。この改行を意味する何かというのが、冒頭で少し触れた「CHAR(10)」です。「” “」の代わりに「CHAR(10)」を入れてみます。

「山田」と「太郎」が改行された状態で表示されました。「CHAR(10)」は文字列ではないので、ダブルクオテーションでは挟まず、そのまま数式に入れます。「CHAR(10)」は一体何者なのか。。。調べてみたのですが、私が理解できる答えは見つけられませんでした汗 「CHAR(10)」は文字列ではない、「CHAR(10)」は改行を意味していることを覚えておくことにしました。

データの分割

「CHAR(10)」を使ってデータを結合して改行表示できるのであれば、セル内で改行されているいくつかのテキストを分割することもできるのではないか。。。と思いました。順を追って確認していきましょう。

たとえば、「Taro Yamada」というように、名前と名字の間に半角スペースがある場合、この半角スペースの前と後ろを別々のセルに分けることができます。使う関数は SPLIT 関数です。SPLIT 関数には、何で区切るかを入力しますので、先ほど結合させたときと同様に、「” “」を入れます。

 

★で区切りたいときは、「”★”」を入れてあげると、★の前と後ろが別々のセルに分かれます。

 

たとえ、単語が3つになったとしても、関数ひとつでセルに分けることができます。

 

勘の良い方はおわかりかと思います。半角スペースのところを「CHAR(10)」にしてあげると、改行されているテキストがセルに分かれて表示されます。

3行だったとしても、ちゃんとセル3つに分かれます。

 

こうして確認してみると、仕組みはめちゃめちゃシンプルでしたね! これまでの人生で出会ったことはありませんでしたが、「CHAR(10)」も怖くないことがわかりました。

CHAR(10)を使って製品登録フォーマットに入力するための商品説明文を作る

それでは、製品登録用の商品説明文を作るために、「CHAR(10)」をどのように使ってみたかをご紹介します。ベースは、前述のデータ結合を使います。

実現したいゴールは2つです。

  • 私たちのリストで 50 項目ある仕様や特徴のうち、「無し」を除く仕様・特徴をひとつのセルにまとめる(試作段階のため、50項目から24項目を抜き出して作っています)。
  • ひとつのセルに連結させた仕様や特徴を、1仕様 / 1特徴ごとに改行して入力する。

実際の作業をはじめから順を追って書くとかなり長くなってしまいますので、開発中製品をまとめたリストから仕様や特徴を転記した表から始めたいと思います。

 

A 列に型番が入力されていて、D 列以降に商品説明文が入力されています。製品によっては「無し」が表示されています。最終的には、「無し」を除く商品説明文をひとつのセルにまとめて、説明文ごとに改行させて表示させます。

(↓ B 列が完成イメージです。)

 

まず、FILTER 関数を使って「無し」と、念のため、空白セルを取り除きます。

=FILTER(D2:AA2,D2:AA2<>“”,D2:AA2<>“無し”)

数式は「セル:D2 からセル:AA2 のうち、空白セルと「無し」が入力されていないセルだけを左に詰めて表示させる」ということを意味しています。「ではない」は「<>」で表します。エクセルやスプレッドシートでフィルター機能を使ったとき、「(空白)」と「無し」のチェックを外している状態と同じです。

 

(仮に、フィルター機能で表すと、下記の状態です。)

 

今回は、各仕様や特徴の頭に中黒(・)をつけたかったので、「&」を使って中黒をつけました。

=IF(AC2=””,“”,“&AC2)

数式は「セル:AC に何も入力されていなかったら空欄にする、何か表示されていたら、中黒(・)とセル:AC2に書かれたテキストをくっつけて表示させる」ということを意味しています。。IF 関数が絡んでいて複雑そうに見えていますが、元は「=”・”&AC2」という数式です。データの結合で紹介した「山田太郎(=A1&B1)」と構造はまったく同じです。

 

いよいよ、仕様や特徴をひとつのセルにまとめる準備が整いました。数式はこちらです。

=TRIM(BB2&CHAR(10)&BC2&CHAR(10)&BD2&CHAR(10)&BE2&CHAR(10)
&BF2&CHAR(10)&BG2&CHAR(10)&BH2&CHAR(10)&BI2&CHAR(10)&BJ2&
CHAR(10)&BK2&CHAR(10)&BL2&CHAR(10)&BM2&CHAR(10)&BN2&CHAR
(10)&BO2&CHAR(10)&BP2&CHAR(10)&BQ2&CHAR(10)&BR2&CHAR(10)&
BS2&CHAR(10)&BT2&CHAR(10)&BU2&CHAR(10)&BV2&CHAR(10)&BW2&
CHAR(10)&BX2&CHAR(10)&BY2)

長すぎて何がなんだかわからない状態になっていますが、これも「山田」と「太郎」を改行して表示させた先ほどの数式(=A1&CHAR(10)&B1)と構造は同じです。24個のセルを結合しており、24個のセルとセルの間に「&CHAR(10)&」を入れています。24のセルに分かれていたデータをくっつけてひとつのセルにまとめ、1項目1行になるように表示させました。本当はもう少しスマートで短い数式にしたいところですが、いい方法を探せず、いったんこれでよしとしました汗

 

関数の一番あたまについているのは TRIM 関数で空白セルを取り除くために使っています。もし、TRIM 関数を使わないと、空白セルも1行扱いになってしまい、添付画像のようになります。

B 列の仕様テキストを取引先の製品登録フォームに入力して完成です。

データの結合や分割はデータを整理するときにとても役に立ちます。基本ルールを押さえておくと応用できていいと思います。

データの結合・分割の幅を広げたい。改行するなら CHAR(10) を使おう!
「$」マークを使いこなして表をパパッと作る 〜相対参照と絶対参照の復習〜
わざわざ使いたい、転置して貼り付けができるGoogleスプレッドシートの「TRANSPOSE関数」
地味にはまっている、GoogleスプレッドシートでUNIQUE関数とSORT関数で入力規則(プルダウン)用のデータリストをつくる方法
Googleスプレッドシートのフィルタ表示機能が便利
Googleスプレッドシートでチェックリストを5分で作ってみる
営業日の異なる日本と中国のスケジュール作成ツールをGoogleスプレッドシートで作ってみた
Google チームドライブの制限(備忘録)

このブログを書いたスタッフ

オペレーション

あさすけ

とてつもない悩み性であったが、この会社に入ってから「死なない! 大丈夫!」が合い言葉に。日々、色々な人に助けられながら元気に働いている。透き通った歌声の、トリニティの看板娘。

あさすけのブログ一覧

コメントを投稿

ログイン

新規登録

ログインせずに投稿する場合には名前とメールアドレスを入力してください。


管理者の承認後、コメントが表示されます。

コメント

2019.10.03 04:42 #23219 white_out
#23219への返信

2019.10.03 04:42 #23219 white_out

お世話になっております。

CHAR(10)というのはASCIIコードの
10進法で10
16進法で0x0a
文字にするとLF(改行)
によりCHAR(10)を入力すると改行されると
理解していました。合っているかは分かりませんが…
カタリストのiPhone11用いつ頃販売でしょうか?以上宜しくお願いします。

    2019.10.03 14:49 #23338 あさすけ
    #23338への返信

    2019.10.03 14:49 #23338 あさすけ

    コメントいただきまして、ありがとうございます。「10進法で10」「16進法で0x0a」という文字は自分で調べたときにも目にはしていたのですが、私には理解できない!と諦めていました。しかし、「文字にするとLF(改行)」と教えていただき、ASCII コードの制御文字のリストを見てみて、少し理解できた気がします。そういうことならと、CHAR(1) 〜 CHAR(1000) までをスプレッドシートで入れてみたら、他の数字にも記号が割り当てられていることがわかりました。使い道がまだ思い浮かびませんが、新しい発見ができてうれしいです。

    iPhone 11 用のカタリストケースにつきましては、現在、発売準備を進めているところと聞いております。発売が決まりましたらプレスリリースとニュースページにてお知らせする予定です。大変恐れ入りますが、今しばらくお待ちいただけますようお願いいたします。

続きを表示する

カテゴリー

コメント

このページをシェアする

ブランドから探す

機種から探す

  • NEO
  • Tablets
  • Smartphones
  • Apple Watch
  • iPad
  • iPhone

iPhoneから探す

iPadから探す

iPodから探す

Apple Watchから探す

Smartphoneから探す

Walkmanから探す

Tabletsから探す

カテゴリから探す