アプリ版:「スタンプのみでお礼する」機能のリリースについて

=IF(ISERROR(VLOOKUP(検索値,sheet1!$A$2:$C $100,1,FALSE)),"",VLOOKUP(検索値,sheet1!$A$2:$C $100,1,FALSE)&"")

このような式です。
返された数字はなぜか左寄せになっています。
書式設定を見ると通貨になっており、カンマ入り数値にしても
右寄せになるだけでカンマが入りません。
どうしたらカンマ入り数値になるでしょうか。

A 回答 (3件)

 それは



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関数における、「判定結果が正しい場合の戻り値」である

""

となる訳です。
    • good
    • 2
この回答へのお礼

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

お礼日時:2013/11/11 04:50

 回答No.2様が仰っておられるIFERROR関数はExcelのバージョンがExcel2007以降(Excel2007も含む)のものでしか使う事の出来ない関数です。


 それに対し、VLOOKUP関数はどのバージョンから使えるようになったのか私は知りませんが、少なくともExcel97の頃には既に使用可能となっていた関数です。
 ですから、「vlookup関数使えるならiferrorも使えるバージョン」であるとは限りませんので、もしIFERROR関数を使うのでしたら、Excelのバージョンを確認される事を御勧め致します。
    • good
    • 1

一番最後に「&""」があるので、文字列扱いにしている為でしょう。


上記を削除すれば良い。

「&""」を加えている意図がわかりませんけど、どうしても付けるならば
=value(IF(ISERROR以下同じ)
とすれば、数値扱いになり右寄せになります。

あとは数式のセルの書式設定してください。

ついでに、=iferror(VLOOKUP(検索値,sheet1!$A$2:$C $100,1,FALSE),"")
・・・の方がさっぱりすると思いますけど。
vlookup関数使えるならiferrorも使えるバージョンだと思います。
    • good
    • 2

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています