• ベストアンサー

エクセルVlookup~&””の結果が数値にならず

=IF(ISERROR(VLOOKUP(検索値,sheet1!$A$2:$C $100,1,FALSE)),"",VLOOKUP(検索値,sheet1!$A$2:$C $100,1,FALSE)&"") このような式です。 返された数字はなぜか左寄せになっています。 書式設定を見ると通貨になっており、カンマ入り数値にしても 右寄せになるだけでカンマが入りません。 どうしたらカンマ入り数値になるでしょうか。

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

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.1

 それは VLOOKUP関数の後に &"" が付いている事によって、VLOOKUP関数の検索結果を、文字列にしてしまっているからです。 VLOOKUP(検索値,sheet1!$A$2:$C $100,1,FALSE) の検索結果が仮に 1000 という数値であった場合、 1000&"" の結果は、「1」という文字(数値ではなく文字)の後に「0」という文字が3個続いている文字列になっている訳です。  文字列は数値ではありませんから、カンマや円マークが付かないのは当然です。  ですから、その関数を次の様にされると良いと思います。 =IF(ISERROR(1/(VLOOKUP(検索値,sheet1!$A$2:$C $100,1,FALSE)<>"")),"",VLOOKUP(検索値,sheet1!$A$2:$C $100,1,FALSE))  Excelでは判定結果が正しい事を表しているTRUEは数値の1と同じものとして扱われる一方、判定結果が誤りである事を表しているFALSEは数値の0として扱われます。  つまり、 VLOOKUP(検索値,sheet1!$A$2:$C $100,1,FALSE) の検索により空欄のセルを参照した場合(御質問文の関数の例の場合、検索範囲の1列目のセルを参照する事になりますから、検索結果は必ず「検索値」そのものとなりますから、参照先が空欄となる事などあり得ませんが)、 VLOOKUP(検索値,sheet1!$A$2:$C $100,1,FALSE)<>"" の判定結果はFALSEとなり、FALSEは0と同義なのですから、 1/(VLOOKUP(検索値,sheet1!$A$2:$C $100,1,FALSE)<>"") という関数は 1/0 という事になりますので、検索結果が空欄の時には、 1/(VLOOKUP(検索値,sheet1!$A$2:$C $100,1,FALSE)<>"") はエラーとなるため、ISERROR関数の結果がTRUEとなり、表示される値はIF関数における、「判定結果が正しい場合の戻り値」である "" となる訳です。

mmmtter
質問者

お礼

わかりやすい説明有り難うございました! 意図していたとおりになりました!!

その他の回答 (2)

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.3

 回答No.2様が仰っておられるIFERROR関数はExcelのバージョンがExcel2007以降(Excel2007も含む)のものでしか使う事の出来ない関数です。  それに対し、VLOOKUP関数はどのバージョンから使えるようになったのか私は知りませんが、少なくともExcel97の頃には既に使用可能となっていた関数です。  ですから、「vlookup関数使えるならiferrorも使えるバージョン」であるとは限りませんので、もしIFERROR関数を使うのでしたら、Excelのバージョンを確認される事を御勧め致します。

回答No.2

一番最後に「&""」があるので、文字列扱いにしている為でしょう。 上記を削除すれば良い。 「&""」を加えている意図がわかりませんけど、どうしても付けるならば =value(IF(ISERROR以下同じ) とすれば、数値扱いになり右寄せになります。 あとは数式のセルの書式設定してください。 ついでに、=iferror(VLOOKUP(検索値,sheet1!$A$2:$C $100,1,FALSE),"") ・・・の方がさっぱりすると思いますけど。 vlookup関数使えるならiferrorも使えるバージョンだと思います。

関連するQ&A