• ベストアンサー

IF関数のTRUEとFALSEが逆になってしまいます

升目の大変多い申請書を作っています。 シートAのA1にある2桁の数字を、各桁毎にシートBの別々のセルに返したくて次のような式を作りました。 シートBのA1 =IF('シートA'!BN30<10,"0",LEFT('シートA'!BN30)) シートBのB1 =IF('シートA'!BN30<10,'シートA'!BN30,MID('シートA'!BN30,2,1)) 最初、いくつかのセルで結果が出ましたが、途中からのセルで論理式がTRUEでなくFALSEになってしまい結果を得ることができません。FALSEをTRUEに戻す方法があれば教えてください。 宜しくお願いします。

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

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.4

実際のシートを見ないと原因の特定は?ですが・・・ 枠が印刷された書類に印刷する時に質問のようなことをすることがあります。 最大桁数だけを定義して算式を作っています。IFでの判定も不要にできます。 例えば、Sheet1のA1に『1桁~4桁の数値』が入力される可能性があり、この数値を Sheet2のC3、D3、E3、F3に場所を固定して出力します。  C3:=MID(RIGHT(REPT(" ",4)&Sheet1!$A$1,4),1,1)  D3:=MID(RIGHT(REPT(" ",4)&Sheet1!$A$1,4),2,1)  E3:=MID(RIGHT(REPT(" ",4)&Sheet1!$A$1,4),3,1)  F3:=MID(RIGHT(REPT(" ",4)&Sheet1!$A$1,4),4,1) 非常にきれいな式になります。  RIGHT(REPT(" ",4)&Sheet1!$A$1,4) の4がそのセルの最大桁数で、  切り取る前に全て4文字文字列に換えています。  上記は数値の前に半角スペースを埋めていますが、前ゼロにするには、  C3:=MID(RIGHT(REPT("0",4)&Sheet1!$A$1,4),1,1) のようにします。 処理する前に、同じ桁数にしてしまうので、余分な判定が不要になります。 ご参考に。

kanjukukaki
質問者

お礼

お粗末な質問に丁寧なご回答ありがとうございます。 実は、質問とは別に1桁~10桁の数値が入力される可能性があるセルをどうしたものかと悩んでました。この式なら引用できそうです。 感謝、感謝。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

#2です。だいぶん問題が変りましたね。 シートBの A1に=VALUE(IF(シートA!A1<10,0,MID(シートA!A1,1,1))) B1に=VALUE(IF(シートA!A1<10,シートA!A1,MID(シートA!A1,2,1))) C1に=VALUE(IF(シートA!B1<10,0,MID(シートA!B1,1,1))) D1に=VALUE(IF(シートA!B1<10,シートA!B1,MID(シートA!B1,2,1))) E1に=VALUE(IF(シートA!C1<10,0,MID(シートA!C1,1,1))) F1に=VALUE(IF(シートA!C1<10,シートA!C1,MID(シートA!C1,2,1))) といれ、各列下方向に式を複写してください。 結果はシートBでは数字で入ります。 シートAのA,B、C列は数字が入っていて、つきの12以下 日の月末日以内は満たされているものとします。 上記で内容がおかしい行か列が出ますでしょうか。

kanjukukaki
質問者

お礼

再回答ありがとうございます。 問題の要点も表現できないお粗末な質問に丁寧なお答え、感謝、感謝です。 お蔭様で今日中に申請書が作成できそうです。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

>シートAのA1にある2桁の数字を、各桁毎にシートBの別々のセルに返したくて A1とBN30との関係は?? A1はBN30の書き間違い?? --- むしろシートAのBN列の各行にある2桁の数字の上1桁と下1桁に分けて、シートBの(例えば)A列とB列に分けたい、が問題ではないですか。 それなら シートBのA1セルには =IF('シートA'!BN30<10,"0",LEFT('シートA'!BN30,1)) シートBのB1セルには =RIGHT(シートA!BN30,1) で旨く行きそうです。0でも0を返す。 もし3桁の数字がシートAのBN30に入っていると狂います。 =IF('シートA'!BN30<10,"0",LEFT(RIGHT(シートA!BN30,2),1) または=IF('シートA'!BN30<10,"0",LEFT(RIGHT(シートA!BN30,2))でもよい。

kanjukukaki
質問者

お礼

早々のご回答ありがとうございます。 説明が下手で恐縮ですが今やっていることは次のことです。 申請書は個別のマスに区切られていて入力できる文字は1文字のため別シートで一気に入力した文字を1文字ずつ該当する個別のセルに返していく作業です。 こんな感じです。 シートAのA1に 16 シートAのB1に 6 シートAのC1に 20 と入力したら(これは年月日をいれるセルです) シートBのA1に 1 シートBのB1に 6 シートBのC1に 0 シートBのD1に 6 シートBのE1に 2 シートBのF1に 0 となってくれれば良いのです。 用紙はA4、セルはA1からGL94を使い31行目までは質問した式で問題はなかったのですが32行目から変になり、IF関数の入力小窓(?)の論理式欄に=IF('シートA'!BN30<10,"0",LEFT('シートA'!BN30))を入れると「=TRUE」ではなく「=FALSE」と表示がでてしまうのです。 貴重な時間を使っていただきありがとうございました。

  • alarm_set
  • ベストアンサー率19% (6/31)
回答No.1

ご質問の主旨とは、ずれるかもしれませんが・・ 2桁の数字を分けたいのであれば、 シートBのA1 =INT(Sheet1!A1/10) シートBのB1 =MOD(Sheet1!A1,10) としてみてはどうでしょうか?

kanjukukaki
質問者

お礼

早々のご回答ありがとうございます。 説明が下手で恐縮ですが今やっていることは次のことです。 申請書は個別のマスに区切られていて入力できる文字は1文字のため別シートで一気に入力した文字を1文字ずつ該当する個別のセルに返していく作業です。 こんな感じです。 シートAのA1に 16 シートAのB1に 6 シートAのC1に 20 と入力したら(これは年月日をいれるセルです) シートBのA1に 1 シートBのB1に 6 シートBのC1に 0 シートBのD1に 6 シートBのE1に 2 シートBのF1に 0 となってくれれば良いのです。 用紙はA4、セルはA1からGL94を使い31行目までは質問した式で問題はなかったのですが32行目から変になり、IF関数の入力小窓(?)の論理式欄に=IF('シートA'!BN30<10,"0",LEFT('シートA'!BN30))を入れると「=TRUE」ではなく「=FALSE」と表示がでてしまうのです。 貴重な時間を使っていただきありがとうございました。

関連するQ&A

  • if関数のtrue、false省略について

    エクセル2010で関数貼り付けボタンをクリックして if関数を選びボックスの論理式に(例えばA1=1とかを)入力をします。 真の場合の所にカーソルを移動させると 下のコメントに「省略された場合、TRUEが返されます」とあります。 同じように偽の場合に行くと「省略された場合、FALSEが返されます」となっています。 ここで「真の場合はTRUE」で「偽の場合はFALSE」を返して欲しいので 両方とも省略してOKボタンを押すとエラーになってしまいます。 別に真の場合の所に「TRUE」、 偽の場合の所に「FALSE」と入力すれば結果は出て済む話なのですが、 ヘルプコメントに「省略した場合~」と書いている以上は 省略できて然るべきではないでしょうか? なぜ省略できないにも関わらず「省略できます」みたいな書き方をするのでしょうか? ご存知の方教えてください。

  • excelのtrue/falseの表示とかについて

    エクセルで論理式の返り値としてtrue falseが返ってきますが、 true を 0 false  を 1 とする表示形式ってあるのでしょうか? if文を使えば出来るのは充分承知した上での質問です。 ついでの質問ですが、FALSEの入っているセルを + 計算すると普通の1として扱ってくれますが、 SUM で計算するとエラーになるのは、どういう理由かご存知の方教えてください。

  • IF関数で困ってます。

    すみません。 IF関数でお教えください。 IF関数を使用したのですが、ある数式を論理式に入れ、 TRUEの時、(ある数式)=14 FALSEの時、(ある数式)=21 と表示され、実際そのセルはTRUEだったのですが、 セルに現れた数字は「35」でした。 なぜ、このような事が起こるのでしょうか? 素人ゆえ、ご迷惑をお掛けしております。 どなたかお教えください。 よろしくお願い致します。

  • IF関数の入れ子について教えてください

    A1セルが「空」か「A」なら「空」 そうでなければ「ああああ」という結果を期待してB1セルに =IF(A1="","",IF(A1="A"="","ああああ")) という式で入れました。 ところが結果は「FALSE」となります。 なぜでしょうか? ちなみに期待した結果はIFとORの組み合わせで得られましたが、なぜIFのネストがFALSEになったのが気になって寝られません。助けてください。

  • エクセル IF関数について

    C1セルに結果を求めたく、例えば下記のように A1セルがTRUEだったときにC1セルに0(数字)と結果が出る。 A1セルがFALSEで、B1セルが0(数字)だったときにC1セルに1(数字)と結果が出る。 A1セルがFALSEで、B1セルが0(数字)よりも大きい数字だったときにC1セルに2(数字)と結果が出る。 のような場合、C1セルに入れる式を教えてください。

  • falseとtrue 0,1,-1 の意味が知りたいです

    こんにちは。 大分前からなんとなくしっくり行かないことがあります。 excel でのワークシートの関数vlookupなどの引数に true/false がありますよね。 絶対値の絶対のイメージがtrue・・の気分なのですが結果は逆でした。 IF関数では 真→true  偽→false だったと思います。 私はIF関数でのtrue/false のイメージはしっくりいきます。 vlookupはどーしても納得いくイメージが持てません。 どなたか教えていただけませんか?どんな風にとらえればいいのか。 しかも確かACCESSやVBAの中では true→-1 false→0 vlookupでは true→1 false→0 じゃなかったでしたっけ? こちらの考えも?? こっちの方は以前知り合いに説明を受けて一度は納得したのですが、 今はよくわからなくなってしまいました。 教えてください。

  • IF関数で違う値もTRUEになる

    0502501G1、502500の二つの値を、=exact(A1,B1)で比べた結果がなぜかTrueになります。 関数が入ったセルをF2で開き、変更をせずにEnterを押すとFalseになります。 この現象について、3つ質問があります。 1.マクロでの比較でも方法によっては同じ現象がおきるでしょうか? 例えば if cells(1,1).value= cells(1,2).value thenや、 A1 = cells(1,1).value B1 = cells(1,2).value IF A1= B1 then など、比較方法は色々有ると思います。 2.このバグを直す方法ありますか? 3.このバグの原因はなんでしょうか? 非常に困っていますし、もし同一の原因でマクロなどでも似たような現象、あるいは全く異なるバグがおきるかもしれないと考えたら、ひじょうに不安です。

  • VLOOKUP関数 「ある」ならTrue、「ない」ならFalseを返したい

    現在、図のように、 「B列の値がA列にあるならその値をC列に返す」と言うようにしています。 しかし、返す値を検索値ではなく True、もしくはFalseで返すにはどうすればいいでしょうか? IF関数を使うのですか? ご教授よろしくお願い致します。

  • IFとVLOOKUP

    DのコラムにIDaa001アルファベット2文字と数字3桁 Fのコラムに商品名の入ったシートaa DのコラムにID bb001アルファベット2文字と数字3桁 Fのコラムに商品名の入ったシートbb 上記二つのシートからデータを参照したいシートccが有ります。 シートccに入っているIDによって、参照するシートを変えたいので、IF関数を使ってみましたがうまくいきませんどの様にしたら良いのでしょうか? ちなみに私の書いた式は下記です =IF(A3=aa,VLOOKUP(D3,aa!A2:B99,2,FALSE),VLOOKUP(D3,bb!A2:B213,2,FALSE)) どうしたら良いのか分からなく、IDの頭2個のアルファベットをLEFT関数で抜き出して、Aのコラムに貼り付けて上記の式をつくってみましたがダメでした。 よろしくおねがいします。

  • エクセル関数について(IF関数)

    エクセルの関数について教えて下さい。 セルに1と入力した場合Aと出てきて、2と入力した場合B、3と入力した場合Cとなるような計算式を入れたいのですが、どのような式を入れればよろしいのでしょうか? 別のシートから呼び出す(?)というような方法でもいいのですが、どんな式を入れればよいのか、全く分かりません。 自分で調べてみた結果、IF関数を用いるということは解りました。 『IF(A1="1","A",IF(A1="2","B",IF(A1="3","C")))』 上記のような式を入れてみて、実際に実践してみたところ、結果としては入力した数字が表示されるだけで、計算式は消えてしまいました。 どうしたらいいのか解りません。 素人故に恥ずかしい質問ですが、お知恵を貸して下さい。 よろしくお願いします。

専門家に質問してみよう