- ベストアンサー
excel セル未入力→空白 任意の入力値→表示するには
お世話になります。 わかりにくいタイトルの上、過去に質問があるかもしれませんが・・・ ○セルA1に別シートよりVLOOKUPでひっぱってきた数値を表示(空白の場合も有り) ○セルB1にセルA1の値、数値表示・もしくは何か入力があれば”入力有”空白ならば空白表示をするのはどうしたらいいのでしょうか? IF(A1="","","入力有")としましたが、もともとA1にはVLOOKUPの数式が入っていますし、 IF(0<A1,"入力有","")としたら、A1にはマイナス数値表示もありました。 「何らかの入力が有った場合そのまま表示」という指示はあるんでしょうか?(例えば、検索の時に使う[*]のような・・・) よろしくお願い致します。
- みんなの回答 (10)
- 専門家の回答
質問者が選んだベストアンサー
No.2&3です。 VLOOKUPの値が#N/Aになるのは、VLOOKUPの第1引数で指定された数値(あるいは文字列)が参照する表に存在しない場合です。 VLOOKUPで参照したセルが空の場合も「0」という数字の場合も、A1に持ってきたときには「0」になってしまいます。これはVLOOKUPに限ったことでなく、他のセルを参照するときにはそうなるのです。たとえばA1に何も入力せず空白としておいて、B1に=A1という式を入れるだけで、B1には0と表示されてしまいます。 したがって、VLOOKUPの結果、参照先のセルが空白の場合は空白を、0という数字が入ってきたときは0を表示させたい(要は参照先と同じように表示させたい)のであれば、A1に表示する時点で細工する必要があると思うのです。そうでないと、B1で=IF(A1=0,…)とやっても、その0は本当に0だったのか空白セルだったのかわからないので、本当に0が入っていた場合に表示されません。 0という数値が元の表に入っていることがあり得ないのであれば、それでもいいと思います。条件付き書式で「"0"なら白」、という設定されているということは、0の場合はあり得ない、ということかもしれませんが、果たして本当に0の値があった場合を想定して設定しているのかどうか、ちょっと疑問です。 それから、「何らかの数値」というのを判定する関数として、 ISNUMBER(A1) というのがあり、これはA1に数値が入っているときにTRUEになります。 他にも、 ISTEXT(A1)はA1に数値でなく文字列が入っているとき、 ISNONTEXT(A1)はA1に文字列でない値が入っているときにTRUEになります。文字列でない値ということは数値だからISNUMBER(A1)と同じではないか、と思われますが、A1に#N/Aなどのエラーが表示されている場合、ISNUMBER(A1)の場合はFALSEになりますが、ISNONTEXT(A1)の場合はTRUEになります。 また、ISBLANK(A1)はセルが空だったらTRUEになります。 この関数で注意する点は、本当に空のセルだったらTRUEになるのですが、数式の結果""となっているときはFALSEになります。""が入っている場合は、あくまでも「空のセル」でなく「""という文字列が入っている」、と認識されるのです。したがって、上のISTEXT(A1)も、A1が本当に空ならFALSEに、""が入っていたらTRUEになります。 見た目上の空白は、数式も入ってない本当に空のセルか、""という文字列の2種類あるので、関数の値もそれに左右されます。ややこしい世界です。 以上、補足(というより蛇足?)でした。
その他の回答 (9)
- imogasi
- ベストアンサー率27% (4737/17069)
#3でもおっしゃっていますが、 関数における()内の各々の引数は、セルの「値」を問題にするもので、式や書式コメントその他は一切問題(処理対象、演算等の材料)にできません。ここのところを抑えてない質問が相当あり、不必要な質問をしたり、考えが横道にそれます。 A1を空白 B1に =IF(A1="","",1) C1に =IF(B1="","",1) をやってみるとC1は空白になります。 質問の場合はA1が空白でなく、0が入っていたためでしょう。 ですから、=IF(ISERROR(VLOOKUP(・・),"","",VLOOKUP(・・)) のようにエラー(むつからない場合)は強制的に空白をセットします。 ーーー >関数では「何らかの数値」?何か入力があればといったような指示はないんでしょうか。 本件では、式が入っているかどうかではなく、エラーかどうかを 判別すべきものでしょう。 式の有無の場合、関数式は最初に言った値を判別したり、利用して処理するので、式の有無を判別する関数はありません。 CELL関数にもない。 VBAでユーザー関数をつくりHasFormulaプロパティを使えば判別できますが、本質問では関係のないことです。 それをやったら、A列全部にVLOOUPが入っていれば、識別に 使えない。
- mshr1962
- ベストアンサー率39% (7417/18945)
#1です。 やはり空白が0になってましたか?それも対応なら A1のVLOOKUPを =IF(ISNUMBER(VLOOKUP(検索値,範囲,列番号,FALSE)),VLOOKUP(検索値,範囲,列番号,FALSE),"") としてB1に#1を設定するか、A1はそのままで =IF(ISNUMBER(VLOOKUP(検索値,範囲,列番号,FALSE)),"入力有","")
- Cupper
- ベストアンサー率32% (2123/6444)
考え方を変えて回答してみます。 VLOOKUP関数で参照する範囲に空白がある場合 "0" が返ってきます。 もともと "0" が入力されているセルとは区別できません。 であれば、空白でない空白を示すマークがあれば良い訳ですので、参照先の空白に #N/A または =NA() を入力しましょう。 #N/A はデータが無いことを示すエラーです。セルに直接入力する事でその参照する関数はエラー(#N/A)を返します。 =NA() は #N/Aを返す関数です。 あとは ISNA関数で #N/A を判定するだけです。 A1 =IF(ISNA(VLOOKUP(検索値,参照,列番号)),"",VLOOKUP(検索値,参照,列番号)) B1 =IF(ISNA(A1),"","入力有") こんな感じでしょうか。 ※以下、複数ある参照範囲の空白セルに #N/A を一括して入力する方法です。 ・空白セルの1つに #N/A を入力 ・参照範囲を選択 ・編集→ジャンプ→セル選択→空白セル(を選択)→OK→編集→貼り付け
- p-applepie
- ベストアンサー率53% (156/290)
>A1は空白かとおもっていましたが >"0"が入力されており、空白ではなく条件付で「"0"なら白」になっていました。 と言う補足がありましたので、 =IF(A1=0,"","入力有") ではどうでしょうか。 質問にある 「何らかの入力が有った場合そのまま表示」という部分は、A1に引っ張ってきた値を そのまま表示ということでしょうか? でしたら、 =IF(A1=0,"",A1) でいかがでしょう。
- xaxyaxe
- ベストアンサー率14% (1/7)
これならエラー関係ナシでした。 A1=IF(ISNUMBER(VLOOKUP(xxx)),VLOOKUP(xxx),"") B1=IF(A1="","空白表示","入力有り")
- xaxyaxe
- ベストアンサー率14% (1/7)
○セルA1に別シートよりVLOOKUPでひっぱってきた数値を表示(空白の場合も有り) 空白場合、#N/A が出ると思うのですがこれはどのように処理したいのでしょうか? (こちらの設定間違いだったらごめんなさい)
- ham_kamo
- ベストアンサー率55% (659/1197)
No.2です。ちょっと補足。 > IF(A1="","","入力有")としましたが、もともとA1にはVLOOKUPの数式が入っていますし、 数式が入っているかどうかは関係ありません。あくまでも上の A1="" というのは、A1に入っている「値」が空文字列かどうかで判定されます。数式の結果の値が""であれば、""として判定されます。 VLOOKUPでは空のセルを参照したときに数値の0に置きかえてしまい、""にならないので、先手を打ってVLOOKUPの値が""のときは""、そうでないときはVLOOKUPの式を、というIF文にしたのが先の回答です。 なので、A1のセルを先の回答のようにしておけば、B1セルは、 IF(A1="","","入力有") でOKかと思います。 もっとスマートな方法があるかもしれませんが…。
補足
なるほど!!A1にひっぱってくるときに、数値表示にするか空白表示にするかを指示するんですね! 後、 >数式が入っているかどうかは関係ありません。あくまでも・・・ というのは、式が入ってからではなく"0"が入っていたからというのが正しい理由なんですね。 ありがとうございます。 参考までに、関数では「何らかの数値」?何か入力があればといったような指示はないんでしょうか?
- ham_kamo
- ベストアンサー率55% (659/1197)
あまりスマートではありませんが、A1の式を =IF(VLOOKUP(xxxxx)="","",VLOOKUP(xxxxx)) とすると、VLOOKUPの参照先が空白のときは、空白になります。
- mshr1962
- ベストアンサー率39% (7417/18945)
A1の結果が数値なら"入力有"を表示すればいいなら =IF(ISNUMBER(A1),"入力有","")
補足
早速のお返事ありがとうございます。 今、貼り付けてみましたらA1は空白かとおもっていましたが "0"が入力されており、空白ではなく条件付で「"0"なら白」になっていました。 VLOOKの元シートは空白なのですがセルA1にひっぱってきたときに"0"となっているようです。 元シートから変更すればよいのでしょうか?
お礼
皆様、多くのアドバイスありがとうございました。 問題は解決しました。 色んな方法があることもとても勉強になりましたし、感謝です。 ここにまとめてお礼させて頂きます。