• ベストアンサー

文字列が数値に変換されない

文字列の数字をVALUE関数で数値に変換したくても数値になりません。 ♯N/Aと表示されるだけです。 関数を入れたあとに表示形式を数値にしても変わりません。 元の文字列はVLOOKUP関数で検索した数字です。 これができないと仕事が進みません。急いでます。お願いします。

noname#22166
noname#22166

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

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

"1枚"とか"5円"とか数字以外の文字があるとエラーしますが この場合は#VALUE!(数値以外で四則演算を行った)ですね。 #N/A!だと、VLOOKUPの検索値が対象範囲の左列から見つからなかったエラーです。 考えられのは、 1.検索値が数字で、対象範囲が文字列の数字 2.検索値が文字列の数字で、対象範囲が数字 3.対象範囲に検索値以外の文字(スペースを含む)が存在する。 4.VLOOKUPの最後の引数がTRUEで、対象範囲が昇順で並べ替えていない。 の4つです確認してみてください。

noname#22166
質問者

お礼

ありがとうございました。 検索値も対象範囲も文字列でした(><) 関数でかえった答えを数値にすればいいと思ってたのが間違いでした。 単純ミスだったようで恥ずかしいです。

その他の回答 (3)

  • yuubou
  • ベストアンサー率41% (35/85)
回答No.4

まず、最初に確認させてください。 VLOOLUP関数の戻り値は、<全て>数字に見える形になっていますでしょうか?  (1)数字に見えない物もある→VLOOKUP関数のテーブルか関数の指定方法に問題があります  (2)全部数字に見える→ここから、チョッと難問に VLOOKUP関数では、最終パラメータ(FALSE/TRUE)の与え方で挙動が変わります。 FALSEを指定すると、テーブルに100%合致しない場合は#N/Aが返ってきます。 TRUEの場合は、近い値を返してきます。 私の検証では、(2)の場合は、VALUE関数で正しく数値に変換されました。 どうしても、VLOOKUP関数から戻る値に#N/Aが含まれるのであれば「ISNA:Is Not Available」関数と IF関数を使って、処理を分ける必要があると思います。

noname#22166
質問者

お礼

ありがとうございました。 ISNA関数を使用してもTRUEという文字がかえるだけでした。 皆様、ほんとうにありがとうございます。助かりました。関数が使えなかったらひとつひとつ検索して手入力になるところでした。 No.3様のところにお礼に書いたように検索値も対象範囲も文字列なのが原因でした。凡ミスで大騒ぎしてたようでお恥ずかしいです。 ほんとうに助かりました。

回答No.2

関係のないセルに 1 を入力します。 そのセルをコピー VLOOKUPを参照するセルに 形式を選択して貼り付けの乗算をクリックして、OKを押す。 念のため、形式を選択して貼り付けの除算をクリックして、OKを押す。 これで結構直ったりします。

noname#22166
質問者

お礼

ありがとうございました。 >「関係のないセルに 1 を入力します。そのセルをコピー」 のやり方がよくわかりませんでした。 解決いたしましたので詳細は最後の方のお礼欄に記入します。

  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.1

その文字列(VLOOKUPで参照している表)は、他のシステムから何らかの形でインポートしたものか、あるいはコピー&ペーストで貼り付けたものでしょうか。 もしかしたら、目に見えない制御文字が入っているかもしれません。 A1に数字(の文字列)が入っているとすると、別のセルに=LEN(A1)と入れて文字数を調べてください。4桁なのに5などと表示されると、制御文字が1桁入っているので、 =VALUE(LEFT(A1,LEN(A1)-1)) という感じで取り出せないでしょうか。

noname#22166
質問者

お礼

ありがとうございました。 はい、他のシステムからインポートしたものです。 数式=LEN(A1)を入れても数値がかえらず見かけが数式のままでした。 解決しましたので詳細は最後の方のお礼欄をご覧ください。

関連するQ&A

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

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

  • C#で文字列を数値に変換する方法

    Visual Stdio .NET 2003を使っています。 C#で文字列(数字)を数値に変換したいのですが、 VBでいうVal関数のような物はありますか?例えば、 double a; a = Val("3.14"); とすると、aに3.14が入るような関数を使いたいです。 検索したのですが、見つかりませんでした。宜しくお願いします。

  • 数値を文字列に変換

    文字列を数値変換する関数はありますが、逆に数値を文字列に変換するにはどうやればよいのでしょうか?

  • UNIXで数字の文字列を、数値に変換するには?

    UNIXで、数字のみの文字列を、その文字列で表される数値に変換して変数に代入したいのですが、どうすればいいでしょうか? つまり、 VALUE=`echo 22j4444j33 | awk -F'j' '{print $1}'` <VALUEに入った"22"を22の数値に変換> exit $VALUE というようなことがしたいです。 よろしくお願いします。

  • VBAで文字列を数値に変換したい

    A列とE列の文字列になってしまった数値を 数値に変換したく、以下のようなものを作ったのですが、 文字の無いセルまで、数値に変換しようとするので 時間がかなりかかります。 何かよい方法は無いでしょうか? よろしくお願いいたします。 Sub 数値に変換() Range("A:A,E:E").Select For Each xCell In Selection xCell.Value = xCell.Value Next xCell End Sub 使用ソフトEXCEL2000orEXCEL2003

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

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

  • 数値→文字列変換関数

    ・数値を文字列化する関数StoAを作成する。 書式:char *StoA(short nVal); 引数:short nVal; 文字列化する数値 戻り値:数字文字列のポインタ 処理:nValで与えられたshort型の数値を文字列に変換し、そのポインタを返す。 呼び出し側の書式は以下の通り。 void main(void) { char *pc; pc = StoA(123); printf("%s\n", pc); pc = StoA(-1234); printf("%s\n", pc); } です。明日までの専門学校の課題なのでどうか、どなたか助けて下さい。

  • カンマの含まれる文字列の数値変換方法について

    VB.NETでプログラミングしています。 String型の文字列を Double型の数値に変換するときに 一般的にはVal関数を使いますが、 カンマが含まれる文字列"111,111"を 数値変換したい場合には単純にVal関数を 使用しただけではうまくいかないようです。 上の例で数値変換すると"111"になってしまうようです。 そこで質問なのですが、 何か簡単にできるうまい方法はないでしょうか? 関数があればご教示ください。 以下、Val関数の説明の抜粋です。 解説 文字列中に数字以外の文字が見つかると、Val 関数は読み込みを中止します。円記号 (\) やカンマ (,) など、通常は数値の一部と見なされる記号や文字も、Val 関数は数値として解釈しません。

  • EXCEL関数 文字列の一部の数字文字を数値化して計算につかいたい

    EXCEL関数について質問です。 あるセルの文字列に記載されている一部の数字文字を 数値化して計算につかいたいと思っています。 <例>  あるセルの文字列(A1)⇒あいうえお12345番目の方  出力したい数字文字⇒12345 知る限りの関数を使って以下の関数式を作ってみました。 (1) MID関数を使う  最初の文字「あいうえお」は10バイトなので開始は「11」としました。 (2)後に登録されている「番目の方」を除きたいので  SEARCHB関数を使って、「番目」の開始バイトを見つけ  そこから最初の文字バイト「11」を引き、抽出するバイトを求める。 (3)抽出した文字列を数値に変換するVALUE関数を使う。 次の関数式を作ってみました。   =VALUE(MIDB(A1,11,SEARCHB("番目",A1,1)-11)) でも結果は「」となります。 何がいけないのかわかりません。エラーの原因がわかれば教えて下さい。 ほかによい方法があれば教えてください。 よろしくお願いします。  

  • 検索値に数値や文字列で検索してもエラーになる

    WIN7 EXCEL2007でマクロ作成中の初心者です。  A列(セルA3からA20)に  組、 Z3、 B4(1)、45、8 などの文字列や数値が表示されています。  (セルA列には、VLOOKUPで他の表から検索したものです。)   そして、C列に(セルC3からC20) セルA3が 組のときは   セルC3に 5:00 を入れなさい セルA4が Z3のときは   セルC4に 6:00 を入れなさい セルA5が B4(1)組のときは セルC5に 9:00 を入れなさい    セルA6が 45  のときは セルC6に 11:00を入れなさい という式をいれたいのです。 ちなみに自分で以下の式をいれて確認したところ =VLOOKUP(A3,データ範囲名,2,FALSE) =VLOOKUP(A4,データ範囲名,2,FALSE) =VLOOKUP(A5,データ範囲名,2,FALSE) 以下つづく するとセルA3の表示が W3 のときは #N/Aになり W3のとき正常に表示されます。 45という数字も出来ました。 検索値は文字列でも数値でもOKと聞いてますが、なぜ出来ないのでしょうか? 他のfindとか別の方法でも出来る方法教えていただきたいです。