ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Excel(エクセル)活用コミュのIF関数を使用した場合、数字を数値として認識させる方法について

  • mixiチェック
  • このエントリーをはてなブックマークに追加
はじめましてm(_ _)m

エクセルの関数についてご質問させていただきます。

質問は表題の通りなんですがIF関数を使ったのはいいのですが数字として認識しておらず、SUM等を使った場合、計算されずエラーが起こってしまいます。
これを数字として認識させる方法はあるのでしょうか?

また、IF関数を使っていたら64レベル、入れ子といったメッセージ(うろ覚えですいません)がでてそれ以上入力できなかったのですがこれは容量が多くてそれ以上の関数は入力できないという意味なのでしょうか?

初心者な質問で申し訳ありませんがご教授いただけると嬉しいです。

よろしくお願いしますm(_ _)m

コメント(14)

具体的にエラーメッセージは何と出たのですか?
具体的にIF関数やSUM関数はどの様に使っているのですか? 具体例を出してください。
数字として認識していないらしい数字はどの様に入力したものですか?
>IF関数を使ったのはいいのですが数字として認識しておらず
どのような式を書かれていますか?
単純に数値を返すような式であれば、通常数値として認識するはずですが
文字列を(切り出すなどして)返すような式の場合は、VALUE関数などを
使用すれば数値として認識するものであれば、数値に変換できるはずです

>IF関数を使っていたら64レベル、入れ子といったメッセージ(うろ覚えですいません)がでてそれ以上入力できなかったのですが
Googleなどで検索してみると良いと思いますよ
例えば「Excel ネスト」「Excel ネスト 64」などのようなキーワード
IF関数の引数を指定する際に、なんでもかんでも「"100"」のように、ダブルクォーテーションを付けて指定していないでしょうか? ダブルクォーテーションは、エクセルに「文字列として認識せよ」と指示していることになりますので、エクセルは、その指示通りに処理しようとします。
ただし、この結果をSUM関数で合計するのなら、エラーにはならず、無視されるはずです。

ですので、ご自身の予想と違う状況が起きているのかもしれませんので、皆さんがおっしゃってるように、数式を提示していただいたほうが、もっと状況を特定しやすくなると思います。

一方、IF関数に限らず、Excelのバージョンによって、入れ子にできる数には制限があります。
ただし、この制限に引っかかるというのは、まれで、むしろ、構築しようとしている数式に問題がある場合が少なくありません。
Iたどえば、F関数ではなく、VLOOKUP関数などを利用すべきところをIF関数を利用していたり場合などです。また、無理矢理1つのセルで計算するのではなく、「真」の場合の結果をB1セル、「偽」の場合の結果をC1セルというように分けて計算し、A1セルに「=IF(条件式,B1,C1)」のように数式を入力するだけで、回避できます。

ネストが深すぎる数式は、構造はわかりにくくなるだけでなく、メンテナンスもしづらくなるので、まずは、セルを分けて計算してみるようにすることをオススメします。
みなさんありがとうございます。

””これを使用していたために数値の判断していなかったみたいです。
VALUE関数を使ったらできました。
あとエラーではなく無視されている状態でした。なので、みなさんが言っている状態で合っていました。語弊を招きましてすいません。

具体例をあげず申し訳ありません。
どう使用したかといいますとまず一つのセルに14から35ぐらいまでの数値ともう一つのセルには1と0.5の数値のこの二つのセルにそれぞれの数値を入力するとそれに伴った数値が出るというものです。

関数はIF関数を使いました。
本来であれば14〜35までではなく4〜46ぐらいまで入れたかったのですが、多くなるにつれ64レベル、入れ子といったエラーメッセージが出るようになりなくなく狭めたといった感じです。
もしかしたらIF関数を使用すべき場面ではないのかもしれないですね。

14〜35まででもなんとかなりそうなので問題はないですが

ありがとうございました。
>>[4]
>””これを使用していたために数値の判断していなかったみたいです。
>VALUE関数を使ったらできました。
状況が分からないのであれですが、「"」で括らなければ
VALUE関数を使うまでもないかと

因みに「"」はダブルクォーテーションや二重引用符と呼ばれるものです


>14から35ぐらいまでの数値ともう一つのセルには1と0.5の数値のこの二つのセルにそれぞれの数値を入力するとそれに伴った数値が出るというものです。
表引きのようなことをしたいということでしょうか?
もしそうであれば、具体例がないので分かりませんが、VLOOKUP関数が使えるかもしれませんね

>もしかしたらIF関数を使用すべき場面ではないのかもしれないですね。
IF関数を使わなくてもExcel2010の場合、ネストレベルが64より多いものはエラーになります
作業列で対応するかロジックを考え直すかが良いと思います
野次馬的な興味で、どんな凶悪な式を入力しようとしたのか気になりますね…。

ネストを浅くしつつ判定値に応じてたくさんの値に分岐させたいなら、
IF関数で全体を数個ほどに粗く分割して、分割された範囲の要素に対しては
CHOOSE関数で値を設定するような組み合わせ方も良いかも知れませんね。
たとえば1〜60くらいの範囲ならこんな感じ。
 =IF(A1>40, CHOOSE(A1-40,値41,値42,…,値60),
  IF(A1>20, CHOOSE(A1-20, 値21,値22,…,値40),CHOOSE(A1,値1,値2,…,値20)) )
なんだか、ちょっと後味の悪い感じかなぁ。
根本的な解決ができてない感じ。
もし、今回の内容が、仕事等に関するものなら、アドバイス通り、「具体的に」入力した数式を提示するとかして、アドバイスをもらったほうがいいと思いますよ。
せっかくの機会なのに、もったいないと思っちゃう。
>>[8]  同感。  だから書く気がしない。
ご迷惑かけてすいません。
私としては詳しく書いていたつもりだったんですが・・・

では具体的に書きたいと思います。
ただ、仕事上で使っているもので、今家から書き込んでるので分かっている範囲で書きたいと思います。

まず、ひとつのセルには名称などの固有名詞、仮に「えんぴつ」とします。
そしてもう一つのセルには手入力で数字、仮に「1」とします。
数字は1〜30ほどあって、「えんぴつ」と「各数字」から判定して、関数の入ったセルに「数字」が出る、といったものが一つともう一つが「シャープペン」でこれも同じように1〜30までの数字を手入力して「えんぴつ」と同じセルに「数字」を出します。
これが「ボールペン」や「万年筆」もあって「数字」を手入力して同じセルに「数字」を出すといったものです。

IF関数ではなく、お答えいただいたVLOOKUP関数を表にして使ってみたのですが、一つ目の「えんぴつ」に関しては数字も入力して数字を出す事はできました。
IF関数の倫理式にはどちらも0となった時の真の数式?に""、偽の数式?にはVLOOKUP(A1,A6:D12,2,VLOOKUP(D1,A13:D19,2,FALSE))といった形でえんぴつと1と入力すれば、0.6といった数字が出たのですが、その後の「シャープペン」や「ボールペン」の数式を「,」で区切って同じように偽の数式?に入力してみたのですが、数式が壊れてしまったりエラーが怒ったりしてしまいます。
これを同様のセルに「シャープペン」や「ボールペン」を入力したいのですがどう行えばいいでしょうか?
専門用語が正しくつかえているのかこれで伝わるのか分かりませんが再度ご教授いただけると嬉しいです。
おおっ! 反応していただけたんですね! ありがとうございます。

まず、『「具体的に」入力した数式を提示する』と書いたように、最初に入力した数式をエクセルのセルからコピペするのが話が早いです。たとえば、『現在、C1セルに、次のような数式が入力しています。』

=IF(A1="えんぴつ",IF(B1=1,"0.1",IF(B1=2,"0.2",IF(B1=3,"0.3",……)

『その上で、A1セルには、「えんぴつ」や「シャーペン」など複数の種類を入力し、B1セルには1〜30程度の範囲の数値を入力し、A1セルとB1セルの組み合わせに応じた数値をC1セルに表示したいのでがすが、うまく行きません。どのようにすればいいのが、ご教示いただけると幸いです。」

って、こんな感じですかね。

これならすぐ、「『IF(B1=1,"0.1"』のようにした部分を「"0.1"」のようにダブルクォーテーションで囲むと、『文字列』の数字として値を返しているので、そのままでは、数値として合計などの計算することはできませんので、『IF(B1=1,0.1』のようにしましょう」ってアドバイスができます。
このような具体例がないので、「想像した」状況でマリ男さんが考えてくれたので、「VALUE」関数を使うというようなアドバイスがあったという話になるんです。

で、今回のケースの場合、さらにメンテナンスしやすいように適切な数式を構築しほうがいいのでは? という話になって、この場合、たとえば「えんぴつ」等の種類と「1〜30」の組み合わせによって表示したい数値に、規則性があるのか、ということがまず、重要になります。

たとえば求めたい値が、「『えんぴつ』等の商品の価格×「1〜30」程度の「本数」というように、「価格×本数」を求めたいなんていう話だったら、別シートのA列に商品名の一覧、B列に価格の一覧を用意した上で、

=VLOOKUP(A1,価格シート!A2:B10,2,0)*B1

のような数式を最初に入力していた式の代わりに入力すれば目的は達成できるようになります。

一方で、「『えんぴつ』などの製品種類」と「『1〜30』程度の数値で示される型番」によって、価格を返すというような場合は、別シートのA列の縦方向に商品名、1行目の横方向に型番の数値を廃し、それぞれの項目が交差するセルに該当する価格を入力した一覧表を作成し、この一覧表から、INDEX関数とMATCH関数を入力して「製品種類」と「型番」に該当する「価格」を取り出すことができるようになります。
って、書いてますが、ここまで詳しく書いても、なかなか伝わりにくいことと思います。この場合は、作例のワークシートの「キャプチャ」を撮って(「キャプチャ」ってキーワードで、トピックを検索してみると、キャプチャの撮り方もわかりますよ)、ここに貼り付けると、すぐにわかるようになります。後者のようなルールに従った数値を表示したい場合なら、作例の図を貼って、この場合の具体的な式の例も提示することができますが、ここも「想像上」のことですので、無駄になってしまうことがありますので、今の時点では避けますね。

より適切な数式に変更したいということであれば、質問を補足してもらえれば幸いです。
>>[11]  ご回答ありがとうございますm(_ _)m

私としてはこれだけ説明すれば読んでくれる方に伝わると勘違いしてました。
関数を説明するのは難しく深いと改めて思いました。

まじんさんの回答を参考に明日挑戦したいと思います

こんなにも長文でお答えていただきありがとうございますm(_ _)m
>>[010]
「VLOOKUP(A1,A6:D12,2,VLOOKUP(D1,A13:D19,2,FALSE))」という式を
本当に使っているとすれば、正確な結果は出ないかと思いますよ

とりあえず、まじんさんの仰るようにスクリーンショット(キャプチャ)を載せていただくのが早いかと


表引きであるなら、どんな表なのか、入出力はどうしたいのか
といったところが分からないとどの関数が使えるのか分かりません

今回は何となくですが、VLOOKUP関数やINDEX関数、MATCH関数が使えそうですが
「使えそう」というだけで実際は使えなかったり、もっと適する関数があるかもしれません


また今回はないとは思いますがもっと言うと、VBAを使わないと出来ない
というようなこともありますのでコミュのトップにもあるように
・本文には具体的状況や経過、Excelのバージョンも書きましょう
ということになります
(ネストが64レベルまでということで2010をお使いなのは推察出来ますが)
>>[13] お返事ありがとうございます。
なんとか載せられればと思います。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

Excel(エクセル)活用 更新情報

Excel(エクセル)活用のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。