EXCELトラブル回避テクニック

Home What's
New
Site
Concept
生産性向上
基本テクニック
トラブル回避
テクニック
生産性向上
リンク
personal.xls
強化講座
生産性向上
ツール
Site Map

Coffee
Break

Guest
Book
地球風
画像館
Q&A Salon
EXCELの質問はこちらへ

 

03/05/2002 -
15.数字の文字列には気をつけろ!
 
  EXCELで数字を文字列として扱う場合には、その書式設定作業の順番等には十分注意が必要です、というお話です。
まずは、実例から紹介します。(ご自分の環境でも実験してみてください)
 
(1)
シートに右のような表を用意して、入力を始めるものとします。
各セルの「書式」「表示形式」は、何も設定しなければ「標準」の状態になっているハズです。
     

(2)

A列に「銘柄コード」を入力すると、数字ですので右詰で表示されます。
     
(3)
途中まで入力したところで、右図のようにA列全体を選択して、メニューから「書式(O)」 「セル(E)」 (または Ctrl + 1 ) で「表示形式」「分類(C)」から「文字列」を選択し、銘柄コードの入力欄の書式を文字列の設定に変更します。

すると、右図のように銘柄コードの数字は(数字から文字列になったので)左詰表示に変ります。

 
     
(4)
(3)の作業で銘柄コードの列の書式を文字列に変更した後に、さらに続けてデータを入れて行きます。

ここでは、(3)までで入力したものと区別するために、赤い字にしています。

(入力したデータの銘柄コードは、あえて並び順をバラバラにしています)
     
(5)
ここまで入力した状態で、右図のようにA1からB8の範囲を選択し、メニューから 「データ(D)」 「並べ替え(S)」 として銘柄コードの昇順(小さい順)で並べ替えてみましょう。

結果は、右図(既に並べ替えが終わった状態です)のようになります。
(2)で入力した黒字の4件の中で並べ替えられ、(4)で入力した赤字の3件の中でも並べ替えられていますが、本来の銘柄コードの順番(6501,6502,6503,6752,6753,6758,6829)には並び替りません。

 
     
(6)

もうひとつ実験です。

右図のように、セルA9A5と同じ 6758 という銘柄コードを入力し、セルB11に(どこでもいいんですが)

=IF(A5=A9,"Yes","No")

という式を入れてみます。A5とA9が等しいならばYesを、異なればNoを表示しなさいという関数ですね。

結果は、右図のように No と表示されます。

つまり、A5A9はどちらもセルの書式の表示形式が「文字列」で、入っている値も6758で、書式も見た目も同じなのに、EXCELは「違うものだ」と判断している事になります。

   
  この実験から導かれる教訓としては、
数字を入力してから書式の表示形式を「文字列」にしたセルと、書式の表示形式を「文字列」にしてから入力した数字は、見た目が同じでも別のものとして扱われる
ということです。
   
  少し詳しく言うと、英文字や漢字を扱う「文字列」と、数字を入力後に表示形式を文字列にした「数値文字列」は、EXCEL内部の形式が異なるということです。
  これに気づかずにいると、数値データの入力を行っている途中で書式を文字列にして入力を続けた場合や、書式を文字列に設定してから入力した表に別のシートの列をコピーして挿入した場合などで、ソート(並び替え)をしたつもりが並び順がおかしい状態になってしまうことがあるわけです。VLOOKUP関数やMATCH関数の結果も、期待したものと異なってしまう可能性があります。
   
 
【2003.4.6 追加】
2つのセルに同じ数字が入力されている場合、書式設定と入力の順序の違いによって、その2つのセルを比較した結果は右表のようになります。
(○は同じと判定され、×は違うものと判定される)
比較結果
数値
数値文字列
文字列
数値
×
数値文字列
×
文字列
×
×

数値 : 書式「標準」状態のセルに数字を入れたセル
数値文字列  : 上記数値セルの書式を「文字列」に変えたセル
文字列 : 書式「文字列」状態のセルに数字を入れたセル
   
  (2)で入力した数字を、本来の「文字列」にするためには、各セルでF2を押してからEnterを押します。
ただ、これではセル1つ1つでの作業になってしまいますので、件数が多い場合などまとめてやりたいという時は、

・A列を選択する
・メモ帳や秀丸エディターなどのテキストエディターに貼り付ける。(もしくは、ワードの文書上に 「編集(E)」 「形式を選択して貼り付け(S)」 「貼り付ける形式(A)」「テキスト」にして貼り付ける)
・テキストエディター(またはワード)に張り付いた値をコピーし、EXCELのA列に 「編集(E)」 「形式を選択して貼り付け(S)」 「貼り付ける形式(A)」「テキスト」にして貼り付けて戻す

とします。これで全て本来の「文字列」になります。
   
  なお、EXCEL XP(2002)以降では、並べ替えの際に「数値に見えるものは、すべて数値として並べ替えを行う」か「数値とテキスト形式の数値を分けて並べ替えを行う」かを選択するダイアログが表示されます(下図)ので、ソート順が気づかないままおかしくなる事はありません。

 
 
   
  【2002.7.8 追加】

「数字として入力したセル」、および「数字を入力してから書式の表示形式を文字列にしたセル」を、一括して「文字列」にする方法がありました。(学生時代の友人U氏の情報提供にこの場を借りて感謝いたします)
 
  まず、文字列に変換したいセル範囲を選択します。

右図のように、 「データ(D)」 「区切り位置(E)」メニューを選びます。
 
 
  そうすると、「区切り位置指定ウィザード」画面が表示されるので、「次へ」ボタンを2回押して右図のような 3/3 画面まで進めます。

この画面の「列のデータ形式」の中から「文字列(T)」を選択して、「完了(F)」を押します。

これだけで、数値のセルも数値を入力してから書式の表示形式を文字列にしたセルも、純粋な文字列(始めに書式の表示形式を文字列にしてから入力した文字列)の数字に変換されます。
   
  【2003.4.6 追加】

上では一括して「文字列」にする方法を紹介しましたが、逆に「一括して数値文字列にする方法」もあります。
 
  まず、どこでも良いので書式を設定していない空いているセルに数字の1 を入れます。(右図ではB11に入れています)

・そのセルをコピーします。(右図では表示されていませんが、セルB11の外周が破線で表示されます)

・セルA2からA9を選択し、「編集(E)」 「形式を選択して貼り付け(S)」を選択します。

・そうすると、右図下側のように「形式を選択して貼り付け」のダイアログが表示されるので、「貼り付け」「値(V)」に、「演算」「乗算(M)」に設定してOKを押します。

・これで、セルB11の値(つまり1)を選択範囲A2からA9それぞれに掛け算する、という処理が行われます。

・1を掛け算するわけですから数字は変化しませんが、この演算を行うことで「文字列である数字も数値文字列に変化する」ようです。

・この結果、上記(6)と同様にA5とA9を比較すると、”等しい”と判断されるようになります。
   

↑目次に戻る

back next

モーグ
Google
  Web excel7.com