• ベストアンサー

Excel 数値を文字列にしたい

お世話になります。 例えば、型番として  0001  0001A  0001B  0002   ・   ・ というものがあった場合、0001と0002は数値と認識されて1と2に なってしまいます。 この状態で、セルの書式設定で文字列にしたとしても、現状の1が 文字列になるだけです(要するに手遅れ)。 また、頭にシングルクォーテーションをくっつけて'0001や'0002と 入力してやればよいかと思うのですが、上記のようなケースが 数百行あった場合、ひとつずつシングルクォーテーションを くっつけていくには手間がかかります。 何かよい方法はございますでしょうか。 ご教示の程、宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.9

>確かに文字列にはなるのですが、型番、製品名、仕様などの項目が ひとつのセルとなってしまいます。 実際に私の提示した方法をそのまま試されたのでしょうか? もちろん、Webページの表は通常の表とは異なるので、空白列などの一括削除処理などが必要になりますが、 Webページの表を1回ワードに貼り付け、その表をセルの書式を文字列にしたエクセルに「形式を選択して貼り付け」で「テキスト」で貼り付ければ、ご希望の文字列形式のまま取り込むことができるはずですが・・・

naoto0216
質問者

お礼

すみません。。 Webページをコピーし、Wordに貼り付けた際「応答なし」になった為、 テキストエディタに貼り付けてそれをExcelに貼り付けました。 ※Excelに貼り付ける前に、いったん別の何かに貼り付ければWordも  テキストエディタも関係ないという認識でした。 今、Webページの表の頭5行をコピーして、Wordに貼り付けて、それを Excelに貼り付けたところうまく区切ってくれました。 「いったんWordに貼り付ける」ってことが肝だったんですね。 大変失礼しました。 で、もう一度表の全体をコピーして同様の方法を試しておりますが 15分待っても未だWordに貼りつかない状況です。 しばらくこのまま放置してみたいと思います。 ちなみに、Core i5、mem4GBです。 ※この方法だと、型番は文字列になるしちゃんと区切られるのですが、  貼り付け作業に15分以上+Accessに取り込めるよう体裁を整える  作業で10分かかったとしたら、Webページを右クリック⇒  Excelにエクスポート(2秒程度)して、数値になった型番を手動で文字列に  した方が早いかもしれませんね。

naoto0216
質問者

補足

以下の方法がベストなのかは分かりませんが、とりあえず いけることを確認しました。  1.Webページをmhtで保存。  2.mhtファイルを右クリック⇒プログラムから開く⇒Word  3.表の部分をコピー※ここで結構時間かかる  4.Excelに貼り付け ここまででトータル10分ぐらいでいけました。

その他の回答 (8)

  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.8

質問で提示する模擬データは実際の元データと条件を同じにしなければ的確な回答を得られません。 Webページからのコピー&ペーストであることを最初から提示されていれば余分な検証を行わずに目的に近い回答を考えます。 Webページの一部をコピーでクリップボードに取り込んだときはExcelへ貼り付けるときテキストとして行単位で1列の文字データになります。 これをフィールド毎に分割するときデータの形式を指定できますので、数字だけのフィールドでも文字列に指定すればセルに再配置されたとき数値化することはありません。(「区切り位置」の機能を使う) 提示されたWebページの一部をフィールド毎に区分したデータを貼付画像に例示しますので確認してください。

naoto0216
質問者

お礼

bunjiiさま 度々のご回答ありがとうございます。 仰る通り、当初の質問からズレてしまい申し訳ございません。 ユーザーより型番テーブルと突き合わせて欲しいとの依頼でしたので、 突き合わせる為に「数値になった型番を桁数合わせて文字列にしたい」 ということしか頭にありませんでした。 記載して頂いた方法だと、(わたしのやり方が悪いのかもしれませんが) 体裁よく区切れません。。 確かに数行だけであればうまくいきますが、表全体でみると コードや製品名の文字数まちまちなのでうまく区切れず、また ひとつのコードで2行になってしまいます(税込価格のところ)。 この件については、別途質問させて頂きたいと思います。 ありがとうございました。

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.7

>確認したところ、メーカーのWebページをhtmlで保存し、 それをExcelにドラッグ&ドロップして体裁を整えたもの でした。 まったく、最初のご質問とは関係のない新しい質問のようですね。 もし、上記のような作業をしているなら、以下のような手順が簡単かもしれません。 1.取り込み先のExcelのシートで型番の列を「文字列」に設定しておく。 2.Webデータをコピーして、いったんWordの新規文書にCtrl+Vでそのまま貼り付ける。 3.このワードファイルでCtrl+Aですべて選択して、Ctrl+Cでコピーし、Excelシートで右クリック「形式を選択して貼り付け」で「テキスト」で貼り付けてみてください。

naoto0216
質問者

お礼

返信してから私の方でも色々試してみましたが(ご回答頂いた手順も)、 なかなかうまくいかず。。 確かに文字列にはなるのですが、型番、製品名、仕様などの項目が ひとつのセルとなってしまいます。 いったんテキストで保存して、スペースで区切って・・・みたいなことを すればよいのかもしれませんが。。 どちらにしても(当該Webページを見て頂ければ分かると思いますが)、 コピー後、体裁を整えるのに手間はかかりそうです。 ちなみにWebページの表の部分を右クリック⇒Excelにエクスポートを やってみましたが、数値に変わってしまいました。

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.6

>例では0001としましたが、実際には001というものも あったりする為、一律桁数(文字数)を合わせるって訳には いきません。。 このケースでは、基本的に文字列として入力するしか方法はありません。 その場合、先頭に「'」を付ける方法ではなく、セルの書式設定で表示形式を「文字列」にしておいて入力することをお勧めします(0001などの文字列以外にも、12-03や10E3などの文字列も標準書式では他の数値に変換されてしまいます)。 >とりあえず、今回数値になってしまったものは十数個だったので 手動で本来の型番にし、作業を行いました。 今回のケースではこの対応しか解決策がありませんが、入力文字列に数値(右寄せで表示されている)が混ざっていないか確実にチェックするなら、たとえばデータの並べ替えで該当データを上に集めることができます。 今後は、もちろんこの列の表示形式を「文字列」にして入力するようにしましょう。

naoto0216
質問者

お礼

MackyNo1さま 度々のご回答ありがとうございます。 ご返信させて頂きましたが、当該Excelは手入力したもの ではありませんでした。 説明不足で申し訳ございません。 Excelで云々というより、WebページをExcelで開くときに 数値に変わらないように開くようにするには・・・ということが 根本的な解決策でした。

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.5

具体的にどうなってれば満足なのかイマイチあやふやなご質問ですが。 とりあえずご相談に書かれてるその通りの事で言えば、セルの書式設定の表示形式のユーザー定義で 0000 を設定してやれば、既に1や2になったセルも今後記入して1や2になるセルも、漏れなく0001の表示で記録できますね。 もうちょっとリアルに何がどーなって欲しいのか、ご相談を書き直し投稿し直してみて下さい。

naoto0216
質問者

お礼

説明不足で申し訳ございません。 やりたいことは、当該Excelの型番とSQLサーバーにある 型番テーブルと紐付けしたいと考えております。 その為、数値となってしまった型番を本来の型番に戻す? という作業を行わなければならない・・ということです。 例では0001としましたが、実際には001というものも あったりする為、一律桁数(文字数)を合わせるって訳には いきません。。 とりあえず、今回数値になってしまったものは十数個だったので 手動で本来の型番にし、作業を行いました。

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.4

>この状態で、セルの書式設定で文字列にしたとしても、現状の1が文字列になるだけです(要するに手遅れ)。 通常は手遅れになる前に気が付くと思うのですが、それらのデータは、本当にセルに「入力」した結果なのでしょうか? もし、CSVファイルなどで他のアプリケーションテータから取り込んだような場合は、テキストファイルウィザードを使用して取り込むときに対象列を「文字列」で取り込むことでご希望のデータにすることができます。 本当に手入力している場合は、セルの書式設定で「文字列」を使用すれば、すべてのデータをそのままの形で入力することができます(これが基本です)。 #Excelではバージョンによって使用できる機能や操作方法や大きく異なりますので、詳細な操作法を提示していません。質問の際には必ずバージョンを明記するようにしましょう。

naoto0216
質問者

お礼

説明不足で申し訳ございません。 確認したところ、メーカーのWebページをhtmlで保存し、 それをExcelにドラッグ&ドロップして体裁を整えたもの でした。 Excelで開いたときに数値に変わってしまったようです。 例えば、こういうページです。 https://www.allied-telesis.co.jp/products/price/switch.html 型番に00919や00919Z5がありますが、前者の方は 919となってしまいます。 また、例では型番0001としましたが、実際には001というものもあり 単純に一律同じ文字数にしたとしても、見直しが発生して しまいます。 なので、Excelで云々というよりは、Webページに表示されている 状態のものをそのまま(数値に変換させず)Excelで開ければ・・・ って感じです。 なぜExcelで開く必要があるかといいますと、SQLサーバーに 型番テーブルがあり、それと当該Excelの型番を突き合わせて、 テーブルに登録済みかどうかを確認したい為です。 Webページには余計な項目があるので、Accessにインポート する前にExcelで加工する必要があります。

  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.3

>何かよい方法はございますでしょうか。 例えばB1セルに次の数式を入力して下へ必要数コピーし、B列全体をコピーでクリップボードへ取り込み、A列へ値のみを貼り付ければ良いでしょう。 =TEXT(A1,"0000") この数式は対象セルが文字列のときそのまま代入されますのでIF関数で条件分岐の必要はありません。 但し、未入力セルのときは文字列の 0000 となりますので、それを回避するためにはIF関数が必要になるでしょう。 =IF(ISBLANK(A1),"",TEXT(A1,"0000"))

naoto0216
質問者

お礼

説明不足で申し訳ございません。 No.4様の返信に書かせて頂きましたが、今回は単純に 一律同じ文字数には出来ませんでした。 WebページをExcelで開くときに数値に変わってしまう為 そこで数値に変わらないようExcelで開きたいところです。 また、教えて頂いた方法につきましては今後使わせて頂きたいと 思います。 ありがとうございました。

  • dogs_cats
  • ベストアンサー率38% (278/717)
回答No.2

仮にA列に型番があるとして B列に数式を入れて下部フィルコピー B列のコピーしA列に値のみペーストする 数式 =IF(ISNUMBER(A1),RIGHT("000"&A1,4),A1) 上記式はA列が数値の場合は4桁表示になります。(0001、0010) 数値の先頭に000が必須の場合は下記式 =IF(ISNUMBER(A1),"000"&A1,A1) 列コピーは下記参照 http://excel.onushi.com/purpose/copy-line.htm

naoto0216
質問者

お礼

説明不足で申し訳ございません。 No.4様の返信に書かせて頂きましたが、今回は単純に 一律同じ文字数には出来ませんでした。 WebページをExcelで開くときに数値に変わってしまう為 そこで数値に変わらないようExcelで開きたいところです。 また、教えて頂いた方法につきましては今後使わせて頂きたいと 思います。 ありがとうございました

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.1

・入力前に、セルの書式を文字列にすることを心がける。 ・関数を介して、訂正する =IF(ISTEXT(A1),A1,TEXT(A1,"0000")) で結果を、コピーして値として張り付ける。

naoto0216
質問者

お礼

説明不足で申し訳ございません。 No.4様の返信に書かせて頂きましたが、今回は単純に 一律同じ文字数には出来ませんでした。 WebページをExcelで開くときに数値に変わってしまう為 そこで数値に変わらないようExcelで開きたいところです。 また、教えて頂いた方法につきましては今後使わせて頂きたいと 思います。 ありがとうございました

関連するQ&A

  • エクセルの文字列の数値を足す

        A    B     C      D   合計 1  ああ8  いい8  ああ6  ああ2   8 と、10列くらいある行(A列からJ列まで)があります。 ひとつのセルに文字と数値が入っています。 で、「ああ8」と「いい8」以外の数値を足したいんです。 上の場合、C列の「ああ6」とD列の「ああ2」を足して「8」になります。 毎回、手作業で足しているのですが、結構な手間で。。 何かいい案があればと思い、こちらへ投稿させていただきました。 オフィス2007を使用しています。ご教授ください。

  • エクセル 文字列で入力した数字を数値にする

    エクセルで、文字列の設定で入力した数字は、[セルの書式設定]で、数値として設定しても、文字列のままになります。 (セルの左上に、文字列と分かる緑の三角が付いたままになり、表を作ってもグラフの表示は出来ません。) 数値として数字を入力をした後、[セルの書式設定]で文字列にして、再び[セルの書式設定]で数値にすると、数値にはなります。 (この場合、文字列にしても、セルの左上に緑の三角が付かず、このまま表を作ると数値(小数点以下が0の場合は小数点以下が削除されます。)の扱いとなりグラフの表示が出来ます。) 文字列で入力した数字は、数値にはならないのでしょうか? よろしくお願いいたします。

  • エクセルで半角数字には数値と文字列がある?

    http://okwave.jp/qa/q6473596.html の質問を見て私も納得がいかず質問させていただきます。 たとえば、A1セルの書式を文字列に設定してから半角で数字を打ち込むと数字は数値でなく文字列としてセルに入ります。 この入力後、A1セルの書式を標準や数値に直してもそのセルの中の数字は左に寄ったままで文字列のままでいるようです。 (でもこれをセルの中でエンターキーを押したりすると数値になってしまいますが) 次にB1セルの書式を標準あるいは数値にして数字を打ち込むと、当然のことですが数字は数値としてセルに入ります。 この入力後、B1セルの書式を文字列に変えると数字は左に寄りますから一見文字列になったように見えます。 ところが上記のセルとこのセルをA1=B1で試してみるとFALSEが返ります。 逆に同じ数字を数値として打ち込んだセルと=で試すとTRUEが返ります。 これはA1とB1は同じ文字列としての数字ではないという証拠だと思います。 B1セルの書式を標準に戻すとまた数字は右よりにもどりますから、セルの中の数字は数値のままのようです。 つまり、半角の数字にはセルの書式にかかわらず文字列と数値の二つがあるということなのでしょうか? だとしたらこの二つはどうやって区別すればいいのでしょうか?

  • Excelで数値を文字列にした時

    例えば0001の前に「’」をつけると、0001って文字列になりますよね。 で、A1に「0001」って表示されて、オートフィルを使ってドラッグすると A2以降に0002~の番号がふられます。(今回はA1:A10に0001~0010まで ふっているということで) で、この0001とか0002って文字列のはずですよね。 なのにB1のセルに=A1+A2にするとちゃんと「3」て出てくるんですよ。 でも、COUNT関数でA1:A10を指定すると「0」が表示され、COUNTA関数で A1:A10を指定すると「10」が表示されてるってことはやっぱA1:A10のデータ は文字列ですよね。 他にもフィルタオプションで「>=’0005」(シングルクォーテーションは半角) とかって指定してもちゃんと抽出されたりと、 この「’」をつけるというのは数値を完全に文字列にしているのでしょか? ご存知の方教えてください。

  • 文字列から数値への変換

    セルの書式設定(表示形式タブ)で文字列を数値に変えるのと、 VALUE関数で文字列を数値に変えるのとでは何か違いがありますか? (excel2000です。)

  • Ecelで文字列を数値として認識させる方法が思い出せなくて調べたのです

    Ecelで文字列を数値として認識させる方法が思い出せなくて調べたのですが内容が少し違うので質問してみたいと思います。一応なんとか文字列の前に(')シングルコーテーションを付けるはずだったと思うのですがうまくいきません。出来れば教えていただきたいと思います。

  • Excelの文字列と文字列の連結

    A1のセルにはj50 C1のセルには01(ユーザ定義で00の書式) この二つの数値をCONCATENATE()関数を用いて文字列を 連結するとj501となってしまいます。 C1のセルを文字列の書式にするとうまくj5001と表示されますがそれ以外に方法はないでしょうか?

  • Excelで数値が文字列になっています

    Excel2010で「このセルにある数値がテキスト形式か、またはアポストロフィで始まっています」という警告が表示されたりして、計算が出来ません。 打ち直ししたり、「エラーチェックルール」で「文字列形式の数値、、またはアポストロフィで 始まる数値」のチェックを外したりして計算は出来るようになります。 「表示形式を変えてもセルの中の値は変化しません。数値データは数値のまま、文字列データは文字列のままです。」とは本当ですか? 本当ならば、数字の保存形式が文字列データかどうかを確かめる方法はありますか? なお、ISNUMBERという関数ではTRUEと出ます。

  • Excelに、ダブルクォーテーションで始まる文字列を貼り付けると、ダブルクォーテーションが消えること

    Excelで、ダブルクォーテーションで始まる文字列をセルに貼り付けたときに ダブルクォーテーションが消えるのですが、 Excelってもともと(標凖的な動作として)そういうものですか。 (F2キーを押すなりして)編集状態にして貼り付ければ、ダブルクォーテーションのついたまま貼り付くのですが、 私はセルを選択して貼り付けただけでも大丈夫だと思っていました。 「文字列を貼り付ける」というのは、例えばテキストエディタ上にあるものを手作業でコピーして貼り付ける、ということです。 「ダブルクォーテーションで始まる文字列」と言っても、 ダブルクォーテーションが3つ以上あったときに消えるのは、最初の1組(2つ)ですね。 しかし、 "AAAA"""BBBB のような場合には、なぜか AAAA"BBBB になるのです。 (ちなみに、この文字列を、質問直前の質問内容確認の画面(IE)でコピーしてExcelに貼り付けたときは、違います。) どのような規則に基づいてダブルクォーテーションが消えるのかも疑問です。 このような仕様になっている理由はなんでしょうか。 また、Excelに文字列を貼り付けるという操作を頻繁に行うため、 できれば、編集状態にしなくても、 セルを選択して貼り付けするだけで、そのままダブルクォーテーションも貼り付いてほしいのですが、 そのためにはどうすればよいのでしょうか。 「セルの書式設定」で、表示形式を文字列にすればよいと思ったのですが、だめでした。 セルには文字列を入れるだけで、数式を入れたりしません。 (数式としては扱ってほしくない、という意味です。) Excelは2000です。

  • セルの書式が標準なのに文字列にできるのはなぜ?

    会社のシステムで吐き出したデータですが セルの書式設定が標準なのに文字列となっています。 マクロを利用して、あるセルの値を別セルへ転記すると、 数字は数値に変換され、先頭の0は消え、桁数が多いと指数表示になってしまいます。 会社のシステムが吐き出したエクセルはセルの書式が標準なのに 中の数字が文字列でいられるのが疑問です。 会社のシステムの吐き出したデータは Microsoft Excel 2.1ワークシートで 全てのセルの書式設定は「標準」です。 で例えば 12345678901234 は 12345678901234 と表示されていて 「数値が文字列として保存されています」 となっています。(先頭に ' は入っていません) 0101という値のセルでも 表示は0101ですが 「数値が文字列として保存されています」 となっています。(先頭に ' は入っていません) それらのセルの値をマクロとかで別セルに転記すると 転記先では1.23457E+13 と表示されてしまいます。 (0101は101になります。) まっさらなエクセルに自分で手入力すると ・セルの書式設定が標準だと 12345678901234 ↓ 1.23457E+13になります。 ・セルの書式設定が数値だと 12345678901234 ↓ 12345678901234 ・セルの書式設定が文字列だと 12345678901234 ↓ 12345678901234 (ただし 数値が文字列と保存されています と注釈有) なのに会社のシステムの吐き出しデータは セルの書式設定が標準なのにもかかわらず 12345678901234 ↓ 12345678901234 (ただし 数値が文字列と保存されています と注釈有) となっています。 手入力で書式設定が標準の状態でセルに12345678901234 と表示させるには先頭に ' をつける方法しか知りませんが ' が無いのに表示されています。 でもこの該当セルをマクロで別セル(書式設定:標準)に転記すると 1.23457E+13 となります。 またシステムが吐き出したエクセルの同じシート内に 以下のマクロで転記すると ↓ Sub 転記() 行 = 2 Do If Cells(行, 6).Value = "" Then Exit Do If Cells(行, 6).Value >= 10 Then Cells(行, 7).Value = Range("A2") Else Cells(行, 7).Value = Range("A3") End If 行 = 行 + 1 Loop End Sub ↓ このマクロだと A列~F列が書式設定が標準なのに文字列として表示されているのですが 転記先のG列が書式設定が標準であっても 12345678901234 (数値が文字列と保存されています と注釈有) と同じ状態のまま転記できます。 新しいBOOKのシート2に 会社の吐き出しデータをシートコピーした後、 (セルの書式設定:標準だが文字列で表示されている) そのBOOKに登録されているマクロで シート2のセルからシート1のセル(書式設定:標準)に転記すると 数字は数値に変換され、先頭の0は消え、桁数が多いと指数表示 となってしまいます。 ちょっと混乱しています。 理屈等教えていただければと思います。お願いします。

専門家に質問してみよう