« 2015年4月 | トップページ | 2015年6月 »

Excel2013で、未使用のユーザー定義の表示形式を登録できないのは仕様

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

Excel2013 でセルの表示形式をユーザー定義で作る際、その表示形式を適用したセルがブックのなかにないと、ファイルを保存したときにユーザー定義の一覧から消える。これは仕様。
( Excel2013 Home & Business )

なので、Excel2013 では「あらかじめ未使用のユーザー定義の表示形式を作っておいて、あとからセルに適用する」というやり方はできない。

考え方を変えると、「作ったユーザー定義をセルに適用していない場合は、ユーザー定義の一覧に表示されない」のだから、使わなくなったユーザー定義が残らなくて一覧が見やすい。
(作ったユーザー定義が一覧に表示されているなら、覚えがなくても「どれかのワークシートのどこかのセルに必ず適用されている」ということ。)

Excel2013 というよりは、XLSX形式の仕様。
Excel2013 でもXLS形式でファイルを保存すると、どのセルに適用していなくても作ったユーザー定義の表示形式は一覧に出てくる。
(XLS形式では、使わなくなったユーザー定義も一覧に表示されるので、確実に使っていないとわかっていないかぎりは削除できない不便さがある。)

■「あらかじめユーザー定義の表示形式を作っておいて、あとでセルに適用する」には……
ワークシートを1枚追加してそのセルに新しく作ったユーザー定義を適用しておく。
その後、ワークシートを非表示にしておく。
テンプレート(拡張子XLTX)にユーザー定義の表示形式を複数作っておいて、ファイルを作成するときに選んでセルに適用する場合は、このやり方でできる。

| | コメント (0) | トラックバック (0)

Excelの「区切り位置」で「スペースによって右または左に揃えられた固定長フィールドのデータ」を使う場合

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

「区切り位置」の機能は、「データ」タブの「データツール」グループのなかにある。
区切りたいデータが入っているセルを選んで実行すると、次の選択肢が表示される。
( Excel2013 Home & Business )

・カンマやタブなどの区切り文字によってフィールドごとに区切られたデータ
・スペースによって右または左に揃えられた固定長フィールドのデータ

「カンマやタブなどの……」の方を選んでも、「区切り文字」として「スペース」を指定できる。
「スペースによって右または左に揃えられた固定長フィールドのデータ」は、どんな場合に使うのか。

■例
次のようにセルに入っているデータを、「西暦 月 日」・「製品番号」・「シリアル番号」の3つに分けたい。

Kugiriiti_no_data


・「スペースによって右または左に揃えられた固定長フィールドのデータ」の方を使う場合
上記のようなデータを分割したい場合は、「区切り位置」の「スペースによって右または左に揃えられた固定長フィールドのデータ」が使える。

具体的には、次の3つに当てはまる場合。

  1. 列のなかで1つひとつのセルに1個のデータが入っている。
  2. ここからここまでで一区切りにしたいといった固まりが、1個のデータのなかに1か所以上ある。
  3. 2個以上のデータがある場合は、1つの固まりにしたい位置がデータ間で同じ。

1.列のなかで1つひとつのセルに1個のデータが入っている。
例ではA列の1行目から4行目までの4つのセルにわたって4個のデータが入っている。

2.ここからここまでで一区切りにしたいといった固まりが、1個のデータのなかに1つ以上ある。
例では「西暦 月 日」・「製品番号」・「シリアル番号」の3つの固まりに分けたい。
・左の1文字目から8文字目までは、西暦と月と日
1月や3日などの一文字の場合は、01や03のように二ケタになっている。

・(左から)9文字目から5文字分(13文字目まで)は、製品番号。

・14文字目からあとは、シリアル番号。

3.2個以上のデータがある場合は、1つの固まりにしたい位置がデータ間で同じ。
各文字数は次のようになっている。
・西暦 月 日は8文字
1~8文字目

・製品番号は5文字
9~13文字目

・シリアル番号は14文字目以降
この例の場合は14文字目以降はすべて1つのセルに入れたいので、文字数を気にしなくてよい。

区切る位置は、8文字目と9文字目の境と13文字目と14文字目の境の2か所。それは4個のデータ間ですべて同じ。

1~8 | 9~13 | 14~

「スペースによって右または左に揃えられた固定長フィールドのデータ」と書いてあるが、スペースを含んでいるかいないかは、こちらを選択する場合の必須条件ではない。

エクセル以外のシステムからデータをエクスポートして持ってくる場合に、スペースを一部含んだ形になる場合がある。この表現はそのような場合を指している。

20150105CF-RZ    4SA0013
20150310CF-C1    SA2298
20150503AL-L1    MJ05111
20151015RT-W7    HW9876

のように。

このような形になっている場合、「スペースによって……」の方を選ばないとうまく分割できない。
「カンマやタブなどの……」の方を選んで「区切り文字」として「スペース」を指定すると、

20150105CF-RZ | 4SA0013

という分割になる。スペース(区切り文字)がない 20150105CF-RZ の部分は分割されない。

「固定長フィールドのデータ」とは、A列は8文字目まで、B列は9文字目から13文字目など「列」のセルに入れる文字数が決まっている(固定である)ということ。
データベースの世界では、エクセルの「列」にあたる領域を「フィールド」と呼ぶ。
(「行」のほうは「レコード」)

| | コメント (0) | トラックバック (0)

Excel で、文章を分割する。

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

1つのセルに入っている複数の文章を、文章単位に分割して個別のセルに入れる。
( Excel2013 Home & Business )

■例
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.

というひとかたまりの文章を、
The quick brown fox jumps over the lazy dog.
で分割してセルに入れる。
(この例では結果として、The quick brown fox jumps over the lazy dog. が5つのセルに分かれて入る。)

■考え方
例は英文なので . (ピリオド)で終わっている。(ピリオドまでが1つのかたまり)つまり、ピリオドごとに分ければ個々の文章に分けることができる。
こういうときは、Excel2013の機能「区切り位置」が使える。

「区切り位置」の機能では、どこで区切るかの位置として任意の文字を指定できる。ただし、区切り位置に指定した文字は消える。その文字で区切るから。
「ピリオドを区切り位置にして分ける」と聞いて、「ピリオドのすぐ右で区切る」と思えるのは人間だから。
Excelはそんな融通は利かしてくれない。指定した文字そのものを区切りの位置として扱う。
(上の例でピリオドを区切り位置にすると、末尾にピリオドが付かない The quick brown fox jumps over the lazy dog が5つできる。)

「区切り位置として指定した文字は消える」のであれば――ピリオドを残して区切るために、区切り位置の指定に使う文字を付け加えてやればよい。
たとえば、 . を検索対象にして、 .! に置き換える。その後、半角の ! を区切り位置に指定すれば、 ! は消えてピリオドが残っている分割ができる。

※「区切り位置」の機能における区切り文字について
区切り文字として使える字数は1文字。
(たとえば、 !! を区切り文字として入力できない。)

区切り文字は全角と半角を区別する。

■手順

  1. 例文が入ったセルを選択
  2. ショートカット Ctrl + F で「検索と置換」を表示し、「置換」タブを選択
  3. 「検索する文字列」に英数半角ピリオドを、「置換後の文字列」に英数半角の .! (ピリオドとびっくりマーク)を入力して「すべて置換」をクリック。
    この例では「5件を置換しました」の表示が出るので、「OK」をクリック
  4. 「データ」タブの「データツール」グループの「区切り位置」をクリック。
    「区切り位置指定ウィザード」が始まる。
  5. 「カンマやタブなどの区切り文字によってフィールドごとに区切られたデータ」にチェックを入れて、「次へ」をクリック
  6. 「その他」にチェックを入れて、隣の入力欄に英数半角の ! を入力
  7. 「データのプレビュー」のところで ! が消えて区切られてるのを確認して「次へ」をクリック
  8. 「区切ったあとのデータ形式を選択してください。」の画面では「表示先」に任意のセルを指定。
    どこか1つのセルを指定すればよい。
  9. 「完了」をクリック。
    この例では、「表示先」に指定したセルを含めて5つの列のセルに分割された文章が入る。
  10. さらに任意のセルにTRIM関数を入力し、分割されたセルを引数として指定する。
    分割後の文頭の左には、スペースが入っているものができる。それをTRIM関数で取り除く。
  11. これで、ピリオドを残した分割が完了。

■追記(2015年6月16日)
置換する際に、「検索する文字列」に英数半角ピリオドと半角スペースを、「置換後の文字列」に英数半角の .! (ピリオドとびっくりマーク)を入力して「すべて置換」をクリック。
これで「区切り位置」を実行すると、分割後の文頭にスペースがない状態で分割できる。

| | コメント (0) | トラックバック (0)

王妃じゃないシャーロットだったらよかったのに。

大分市の高崎山自然動物園の猿のニュース。
誕生したばかりの赤ちゃん猿に「シャーロット」と名付けたら、電話やメールで「英王室に対して失礼」などの抗議があったのだとか。

手元にある朝日新聞によると、動物園は謝罪し、さらに取り消しも含めて検討したけど結論が出なかったって。

なんだかなぁ、だ。

僕に言わせれば、動物園が謝罪したというのがそもそも大きな間違い。猿の名前は公募だったというじゃないか。だったら、謝罪したらだめだよ。

失礼だという抗議があること自体は尊重されるべきだと思う。自由主義社会として、相反する意見を主張できないのはおかしいと思うから。

でも、その案は公募で出てきたんでしょうが。しかも一番多かったっていうじゃないか。
それで動物園が謝罪しちゃったら、その案をよしとして出してきた人の立場や思いはどうなるんだ? 公募したんだから、それを無視して動物園が謝罪したらいけないんじゃないか。

誰が何と言ってこようと、公募で決めたんだからさ。なのに、それに対して一番大きく頻繁に言ってきた声のほうが優先的に扱われるみたいなことを許したらいけないよ。

シャーロット王妃のニュースが流れた以降で、「シャーロット」という案が増えたらしいから、そもそもは英王室のニュースにあやかったのはまぁ間違いないとしても、それを採用したら失礼だとか配慮が足りないとか、ちょっと変だろ。
いろんな人が "これがいいです" って出してくる公募なんだもの。一番多かったものを選ばなかったら何のための公募なんだよ。

王室があるいは王室の関係者が言ってくるなら筋としてわかる。でも、なんの関係もない人間が――ほとんどたぶんおそらく全部英王室とは無関係な人が言っているんだろうし――その名前は失礼だなんて何の筋があって動物園に言ってくるんだ?

新聞に反対意見を投書するとか、自分のブログに書くとかいうなら自由な発言として理解できるけどね。

動物園側ももうちょっと考えて行動しないといけないよなぁ。

「不快に感じられる方もおられるかもしれません。英王室に失礼だというご指摘もいただいています。ですが、公募で一番多く集まった名前でして、私共としては公募した以上は、一番多かった名前を採用することにいたしました」……とかなんかと、それぐらいは言わないといけないでしょって僕は思うのだけど。

でも惜しかったなぁ、動物園にもうちょっとしゃれっ気のある人がいたらなぁ。

ぜひこう言ってほしかった。――――「"マッサン"のエリーさんにあやかったつもりなんですが……」って。
(NHKの連続テレビ小説『マッサン』で、エリー役をやっていたのはシャーロット・ケイト・フォックス)

今ならまだ、「エリー人気にあやかりました」って言ってたら許されたと思うのだけど。

| | コメント (0) | トラックバック (0)

« 2015年4月 | トップページ | 2015年6月 »