- ベストアンサー
エクセル2003 VALUE関数とは?
- エクセル2003では、VALUE関数が利用されています。この関数は、文字として表された数字を数値に変換することができます。
- VALUE関数を使用する場合、指定したセルや文字列が数値として解釈されます。このため、エクセルの処理や計算において正確な結果を得ることができます。
- VALUE関数の使い方を理解するためには、具体的な例を見ながら学ぶことが効果的です。VALUE関数は、セルの値を数値に変換する場合や、他の関数と組み合わせて使われることがあります。
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
あなたが全く勘違いしている(らしい)事を,何度か耳タコで書きます。 VALUE関数は,「数字だけで書かれた文字列」を「数値に直す」関数です。 数字とは原則として0123456789の文字10種の文字の事です。(実際は小数点とプラスマイナス及び稀に特殊な文字も含みます) その数字だけで書かれたものだけを,VALUE関数で数値に変えます。 アルファベットや日本語文字には,VALUE関数を使いません。 >『P』はアルファベットなので、MID関数の前に >VALUEがなぜこないのでしょうか。 先に回答したとおり最初の式でVALUE関数は,「VALUE(LEFT(B7,4))」で「3005C40」から取り出した「3005」を3005という数値に変えるために使います。 最初のVLOOKUPの式で参照している一覧表の左端列には,3005などの数値が列記されている事をもう一度よく見て確認しましょう。 先に回答した通り数値を検索するには数値にしなきゃいけませんから,VALUE関数は必要です。 2番目の「MID(B6,FIND("#",B6,1)-1,1)」で抜いてきた『P』は,ご自分でも書かれているように「アルファベット」です。 PはABCのアルファベットですから,VALUE関数を使って数値に直す必要もありませんし出来ません。 そちらの式で参照している一覧表の左端列には,PやHが列記されていて数値で検索するのではない事を,よく見て確認しましょう。 HLOOKUPの式で取り出しているのは「T2」という文字列です。 『T2』は確かに数字の2も入っていますがアルファベットの「T」も一緒に混ざっているので,数値じゃありません。 数値じゃありませんから,VALUE関数を使って数値に直す必要もありませんし出来ません。 そちらの式で参照している一覧表の上端行には,T1やT2やT3が列記されていてこれも数値で検索しているのでは無いことを,よく見て確認しましょう。数値じゃないのですから,数値に直すVALUE関数も使う必要はありません。
その他の回答 (7)
- Saturn5
- ベストアンサー率45% (2270/4952)
mike_gさん、ご指摘ありがとうございます。 Excelは文字列同士でも数字ならば計算するようですね。 でも、これはExcelのサービスです。 mike_gさんのがフォローで書いて下さっていると思いますが、 本来は文字列は計算できない物です。Lotus123の仕様 の方が正しいのです。この辺りがユーザーに文字列と数値の 違いを混同させる原因ではないでしょうか? ならば、LOOKUP関数にも文字列と数値を自動的に判断して 型を合わせてくれる機能があってもいいと思いますが、その 機能は無いようです。ということは、LOOKUPを使う中級以上 のユーザーはどこかの時点で文字列と数値についての区別が 明確にできるようになっていないといけません。 重要なことは型を揃えることです。lookupのキーが文字列型 ですので、参照テーブルを文字列で入力して文字列で統一する か、参照キーにVALUEをかませて数値で統一するかのどちらかです。
お礼
やっと理解することができました。 どうもありがとうございました。
[No.6]へのコメント、 》 B1にA1*2と入力すると[エラー]が表示されるはずです。 》 なぜなら、文字列は計算できないからです。 「A1*2と入力すると」が「=A1*2 と入力すると」の意味で書かれたのなら、少なくとも Excel 2002 までは、上は間違っています。気になったので、敢えてコメントを付けました。「はず」と仰らずに、ぜひ試してください。 セル A1 の内容が文字列の数字であっても、それに演算子(+、-、*、/)による加減乗除を施した式はチャンと(?)計算してくれます。 大昔のことですが、Lotus 1-2-3 から Excel に乗り換えたときに、この奇異な現象に驚いたことを鮮明に覚えています。今ではこの Excel の特性を便利に利用しています。 =2011*2 も ="2011"*"2" も数値の 4022 を返します。
お礼
どうもありがとうございます!
- Saturn5
- ベストアンサー率45% (2270/4952)
補足を見てわかりました。 「数値」と「文字列」について理解されておられないのだと思います。 A1セルに[2011]と入力してください。 半角・右詰めで表示されます。これが数値です。 B1にA1*2と入力すると[4022]と表示されるはずです。 A1セルに「’2011」と入力してください。 「’」はアポストロフィと読み、文字列入力の接頭記号です。 左詰めで表示されるはずです。B1にA1*2と入力すると [エラー]が表示されるはずです。なぜなら、文字列は計算できないからです。 [2011]などは数値か文字列かは仲をみないと判断できませんが、 [3005C40]はCが入っているので明らかに文字列だとわかります。 VALUE関数は「文字列で入力された数字を数値に変換する関数」です。 これはLOOKUPで参照するテーブルが数値で入力されているから、形を合わせる ために使用されているだけです。 レンタルテーブルの商品ID[3005]は数値で入力されいるはずです。 LEFT(B7,4)関数は[3005C40]の左側の4文字を切り取る関数です。 従って、関数の値は4文字の文字列となります。文字列と数値を比較することは できませんので、VALUE関数をかませて数値同士で比較しているのです。 別の方法としては、テーブルの商品IDを[’3005]と入力してもいいです。 この場合は文字列で入力されますのでVALUE関数をかませる必要はありません。 このような文字列入力のコードから参照する場合は、テーブルの値も文字列に しておくのが通例です。 このほかの例で、VALUE関数をかませていないのは最初から文字列同士です。 普通はテーブルと参照値は最初から型を合わせておく物で、VALUE関数や TEXT関数を使うことは少ないです。 コンピューターにおけるデータは突き詰めれば数値と文字列しかありません。 (もっと突き詰めると0と1のビットになりますが)この違いを意識していると いろんな関数の意味が見えてきます。
お礼
ご丁寧にどうもありがとうございます。
- mshr1962
- ベストアンサー率39% (7417/18945)
>何をみて、VALUE関数を使うかどうか決めるのでしょうか。 =VLOOKUP(VALUE(LEFT(B7,4)),レンタル,2,FALSE) レンタルのセル範囲の左端列の内容です。 ここが数値ならVALUE関数を使わなければ駄目で ここが文字列なら使う必要はありません。
お礼
ありがとうございます。
》 訳の分からない質問だと思いますが… よく分かりますよ。 訳が分からなくなっているのは貴方自身です。 》 3005C40は、文字として表されたものではないと思う… それが間違っています。 新規シートを開いて、セル A1 に式 =CELL("TYPE",B1) を入力してください。 「b」が返ってきますね。これ、空白(blank)の意味です。 セル B1 に 3005240 と入力 → 「v」は値(value)のことです。 セル B1 に 3005C40 と入力 → 「l」は文字列(letters)のことです。← ホラね。 セル B1 に '3005C40 と入力 → これも「l」が返ります。 セル B1 に“文字列”の書式設定をして 3005240 を入力 → これも「l」が返ります。 ついでながら、セル B1 に式 =LEFT(3005240,4) を入力したら、セル B1 は 3005 と表示されますが、これは文字列です。なぜなら、LEFT は文字列として切り出す関数だからです。従って、この場合の セル A1 は「l」と表示されます。 ますます訳が分からない?
お礼
やっと理解できました。 とてつもなく時間がかかりましたが。。。 どうもありがとうございました♪
補足
納得しました。確かに v l になりました。 うーーん。。でもやっぱり訳分からないです。 LEFT関数使っててもVALUEを使ってない問題もあるし、アルファベットが 入ってるRIGHT関数なのに、VALUEがつかわれないものもあるし。。 自分の理解力のなさに情けなくてつらいですが、、、 でも書いてくださってる解答を何度も読んで理解できるよう頑張ります。
- keithin
- ベストアンサー率66% (5278/7941)
>3005C40は、文字として表されたものでは >ないと思うのですがなぜVALUEを使わなくていけないのでしょうか。 ○1つ目のポイント 実際には,VALUE関数の中にはLEFT(B7,4)が入っていて,つまり「3005C40」から左側4文字切り出した"3005"に対してVALUE関数が作用しています。 ○2つ目のポイント LEFT関数が切り取った"3005"は,3やゼロや5という数字の文字が連なった「文字列」です。LEFT関数は計算結果が文字列になるからです。数字だけで出来ていても,3005という数値じゃありません。 文字列として並んでいる「3と0と0と5」という文字列を3005という数値に変換するのが,VALUE関数の働きです。 ○3つ目のポイント これはこちらのような質問相談掲示板で非常にしばしば寄せられる"うまくいかない"ケースですが,VLOOKUP関数は先の"3005"という「数字で出来た文字列」と,3005という「数値」を『同じ値』と認めてくれません。 対照表の左端列(商品ID)が「数値」で3005と一覧されていたら,VLOOKUPする検索値も「数値」の3005で合わせてやらないと#VALUE!になってしまう訳です。 同様にもしも別の対照表の左端列(商品ID)が今度は「文字列」の1266として記入されていたならば,VLOOKUP関数の中に入れる検索値も「文字列」で与えてやらないといけません。 つまりVALUE関数を使うか使わないかは,検索する範囲の左端列の書式設定や実際に入っている値が数値なのか文字列なのかで決めないとならない訳です。
お礼
やっと理解することができました。 どうもありがとうございました!!!
補足
とてもご丁寧で分かりやすいお答えをどうもありがとうございます。 異常に理解力がないため、こんなに分かりやすく説明してくださってても まだ分からないです。。。 書いてくださったお答えについて理解できたようにも思えたのですが、 同じような問題をやってみたら、理解できていませんでした。 同じような練習問題で解答が下記です。 下記には、なぜvalue が不用なのでしょうか。 =VLOOKUP(MID(B6,FIND("#",B6,1)-1,1),速度プラン,2,FALSE) B6には、『1266P#2』が入っています。 速度プランの表は、下記です。 A B 1 P プレミアム40 2 H ハイパー24 3 S スーパー12 4 D スタンダード8 5 T スタート1L 6 F ファミリーL 『P』はアルファベットなので、MID関数の前に VALUEがなぜこないのでしょうか。 また別の問題では回答が下記です。 =HLOOKUP(RIGHT(B9,2),デザイン,2,FALSE) B9セルには『1012@T1』が入っています。 デザイン表は下記です T1 T2 T3 T4 通常 立体 メロディー 桐箱 たびたびすみません。。。 ご教授お願い致します。
- Saturn5
- ベストアンサー率45% (2270/4952)
>3005C40は、文字として表されたものではない 「C」が入っていますので明らかに文字です。 ですから、3005の文字を取って、数値変換するときには value関数が必要となります。 ただ、データテーブル(レンタル)の左端のデータは数値か文字列の どちらでしょうか? 見分け方は左詰めで入力されていれば文字列、右詰めで入力されていれば 数値のことが多いです。このデータ型に合わせてvlookupを作る 必要があります。数値は数値に、文字列は文字列にそろえるのです。
お礼
やっと理解できた気がします。 ありがとうございます。
補足
お答えありがとうございます。 異常に理解力がないため、こんなに分かりやすく説明してくださってても まだ分からないです。。。 レンタルの左端の列は、右詰数値4桁です。 同じような練習問題で解答が下記です。 下記には、なぜvalue が不用なのでしょうか。 =VLOOKUP(MID(B6,FIND("#",B6,1)-1,1),速度プラン,2,FALSE) B6には、『1266P#2』が入っています。 速度プランの表は、下記です。 A B 1 P プレミアム40 2 H ハイパー24 3 S スーパー12 4 D スタンダード8 5 T スタート1L 6 F ファミリーL 『P』はアルファベットなので、MID関数の前に VALUEがなぜこないのでしょうか。 たびたびすみません。。。 ご教授お願い致します。
お礼
日数がかかかりましたが、やっと理解することができました。 分かりやすいご回答をどうもありがとうございました!!!