- ベストアンサー
関数での標準報酬月額の求め方
はじめまして。 検索し、同じような質問が過去にあったのですが、その回答の通りに式を入れても、どうしてもうまくいきません。 教えてください。 A列に下限額(以上)、B列に上限額(未満)、C列に標準報酬月額が入っています。 Sheet1 A B C 370,000 395,000 380,000 395,000 425,000 410,000 425,000 455,000 440,000 というような一覧表です。(上限・下限の差は均一ではなく、C列も中間値ではありません。39段まで続きます。) その一覧表から、式を作成し、 Sheet2 A B 396,000 410,000 202,300 220,000 150,100 150,000 で以下のようにA列に金額を入力した際に B列に標準報酬月額が表示されるよう、式をいれたいのです。 過去同じような質問(QNo.728270)より、 下限と、標準報酬月額のみの一覧表にし Sheet1 A B 370,000 380,000 395,000 410,000 425,000 440,000 B列として、 Sheet2 A B 396,000 =VLOOKUP(A1,Sheet1!$A$1:$B$4,2) 202,300 =VLOOKUP(A2,Sheet1!$A$1:$B$4,2) というように式を入れるというお答えをいただいているのを参考にさせていただいたのですが、 どうしても、その式を入れると「396,000」の標準報酬月額が「380,000」と表示されてしまいます。 正解は「410,000」なのです。 この解決策をわかる方がいらっしゃいましたら教えて下さい。m(__)m
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
#No.4です。 見当違いの回答をしてしまいました。申し訳ありません。 TRUE を指定するか省略すると、検索値が見つからない場合に、検索値未満で最も大きい値が使用されます。FALSE を指定すると、検索値と完全に一致する値だけが検索され、見つからない場合はエラー値 #N/A が返されます。 つまり、ご質問の数式は検索の型が省略されており、TRUEになるので、数式は間違いないことになります。そうすると、TRUEの場合の注意点として、検索の範囲(ここでいうとA列)が昇順に並べ替えられているかどうかだと思います。並べ替えられていないと正常にvlookupは機能しません。これでもないとなると、その表を再現してみないと、正確な返答はできないと思います。
その他の回答 (6)
- wtnb_h
- ベストアンサー率35% (14/40)
こんにちは。 横から失礼します。 >文字を返す列を1行目に指定した場合正しく読み取れないという事はあるのですか? >この式が本当に合っているのか自信がなく、使うのが怖いです・・(^^;) まと外れな事を言ってましたら、申し訳ありませんが、正しく読みとれない事の現象として、表と比較する値の型が合っていないのではないでしょうか? 比較する値が数値でも、表の中に文字列があったりすると、そこの値は出なくなります。 例えば、質問にあった、395,000が文字列だったとすると、380,000になると思います。
お礼
いろいろ参考になる意見ありがとうございました。今後の参考にさせていただきます。m(__)m
- imogasi
- ベストアンサー率27% (4737/17069)
VLOOKUP関数の第4引数は (1)1:1の値を取ってくる--FALSE (2)範囲に該当すると、値を取ってくる--TRUE 個人的には逆の方が覚えやすいが、(2)の機能から 始まったからか、(2)がTRUEです。 >文字を返す列を1行目に指定した場合正しく読み取れないという事はあるのですか? (2)のTRUE型は表のENTRY値(表で該当範囲を探す値) は昇順か降順に並んでないとだめです。値を正しく返しません。 表のENTRY値を数値にして、関数の第一引数で指定している列のセルの値が、コンマ入り(=文字列。表示形式だけでコンマ入りになっているなら差し支えない。)などにして、両者を比較させて、どの該当範囲に当たるか等を判断させると、思い通りの結果が出ない場合があります。しかし、でたらめにそうなるのでなく、ルール通りの処理をしておかしくなりますが、結果として使えません。しかし法則性は在ります。 怖がったり不安がることは在りません。 数値と文字列もソートさせることが出来ると言うことです。しかし使い道は在りません。普通は使う人側で、ソート列内で、数値と文字列の混合は避けます。
お礼
いろいろ参考になる意見ありがとうございました。今後の参考にさせていただきます。m(__)m
- zebrabody
- ベストアンサー率37% (17/45)
vlookup関数の引数は以下の通りです。 =VLOOKUP(検索値,範囲,列番号,検索の型) ご質問の数式を見ると「検索の型」が省略されていますね。 「検索の型」の種類は「"FALSE"または"0"」または「"TRUE"または"1"」の2種類があり、省略すると「"FALSE"または"0"」扱いにされてしまいます。この場合はぴったり一致するものを検索し、後者の場合には検索値を超えない範囲の近似値が検索されます。 したがって、 =VLOOKUP(A1,Sheet1!$A$1:$B$4,2,1) と数式を訂正すれば、A列に395000以上425000未満の数字を指定した場合には「410000」が返されることになります。
- hinebot
- ベストアンサー率37% (1123/2963)
同じように入れてみましたが、当方ではちゃんと 「410,000」となりました。 =VLOOKUP(A1,Sheet1!$A$1:$B$4,2) の式の A1, Sheet1!$A$1:$B$4 の部分に間違いがないか今一度確認してみてください。
補足
早々のお返事ありがとうございました。 結局は、元の表にカンマが入っていたのでそれを削除して、返す列を一列目(A)から2列目(B)に入れ替え、式も入れ替えることによりできました。 カンマを削除するだけでは、やはり正しく反映されていませんでしたが、列を入れ替えることで正しく反映されたようです。(もちろん式も「1」から「2」に変更しました。 こういう事ってあるのですか? 文字を返す列を1行目に指定した場合正しく読み取れないという事はあるのですか? この式が本当に合っているのか自信がなく、使うのが怖いです・・(^^;)
ちょっと違っていたようですね。 =VLOOKUP(A1,Sheet1!$A$1:$C$39,3) とすれば、上手くいくと思います。
補足
早々のお返事ありがとうございました。 結局は、元の表にカンマが入っていたのでそれを削除して、返す列を一列目(A)から2列目(B)に入れ替え、式も入れ替えることによりできました。 カンマを削除するだけでは、やはり正しく反映されていませんでしたが、列を入れ替えることで正しく反映されたようです。(もちろん式も「1」から「2」に変更しました。 こういう事ってあるのですか? 文字を返す列を1行目に指定した場合正しく読み取れないという事はあるのですか? この式が本当に合っているのか自信がなく、使うのが怖いです・・(^^;)
- esprei
- ベストアンサー率56% (718/1271)
式の記述が足りません。 =VLOOKUP(A1,Sheet1!$A$1:$B$4,2) これを =VLOOKUP(A1,Sheet1!$A$1:$B$4,2,1) と、最後に,1(またはTRUE)を足してして下さい。 で良いと思うのですが。
補足
早々のお返事ありがとうございました。 結局は、元の表にカンマが入っていたのでそれを削除して、返す列を一列目(A)から2列目(B)に入れ替え、式も入れ替えることによりできました。 カンマを削除するだけでは、やはり正しく反映されていませんでしたが、列を入れ替えることで正しく反映されたようです。(もちろん式も「1」から「2」に変更しました。 こういう事ってあるのですか? 文字を返す列を1行目に指定した場合正しく読み取れないという事はあるのですか? この式が本当に合っているのか自信がなく、使うのが怖いです・・(^^;)
補足
早々のお返事ありがとうございました。 結局は、元の表にカンマが入っていたのでそれを削除して、返す列を一列目(A)から2列目(B)に入れ替え、式も入れ替えることによりできました。 カンマを削除するだけでは、やはり正しく反映されていませんでしたが、列を入れ替えることで正しく反映されたようです。(もちろん式も「1」から「2」に変更しました。 こういう事ってあるのですか? 文字を返す列を1行目に指定した場合正しく読み取れないという事はあるのですか? この式が本当に合っているのか自信がなく、使うのが怖いです・・(^^;)