質問: エクセルvlookup~&””の結果が数値にならず =if(iserror(vlookup(検索値,sheet1!$a$2:$c $100,1,false)),"",vlookup(検索値,sheet1!$a$2:$c $100,1,false)&"") このような式です。 返された数字はなぜか左寄せになっています。 書式設定を見ると通貨になっており、カンマ入り数値にしても 右寄せになるだけでカンマが入りません。 どうしたらカンマ入り数値になるでしょうか。
回答: それは 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関数における、「判定結果が正しい場合の戻り値」である "" となる訳です。