プロが教える店舗&オフィスのセキュリティ対策術

お世話になります。
わかりにくいタイトルの上、過去に質問があるかもしれませんが・・・
○セルA1に別シートよりVLOOKUPでひっぱってきた数値を表示(空白の場合も有り)
○セルB1にセルA1の値、数値表示・もしくは何か入力があれば”入力有”空白ならば空白表示をするのはどうしたらいいのでしょうか?
IF(A1="","","入力有")としましたが、もともとA1にはVLOOKUPの数式が入っていますし、
IF(0<A1,"入力有","")としたら、A1にはマイナス数値表示もありました。
「何らかの入力が有った場合そのまま表示」という指示はあるんでしょうか?(例えば、検索の時に使う[*]のような・・・)
よろしくお願い致します。

A 回答 (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種類あるので、関数の値もそれに左右されます。ややこしい世界です。

以上、補足(というより蛇足?)でした。
    • good
    • 0

#3でもおっしゃっていますが、


関数における()内の各々の引数は、セルの「値」を問題にするもので、式や書式コメントその他は一切問題(処理対象、演算等の材料)にできません。ここのところを抑えてない質問が相当あり、不必要な質問をしたり、考えが横道にそれます。
A1を空白
B1に =IF(A1="","",1)
C1に =IF(B1="","",1)
をやってみるとC1は空白になります。
質問の場合はA1が空白でなく、0が入っていたためでしょう。
ですから、=IF(ISERROR(VLOOKUP(・・),"","",VLOOKUP(・・))
のようにエラー(むつからない場合)は強制的に空白をセットします。
ーーー
>関数では「何らかの数値」?何か入力があればといったような指示はないんでしょうか。
本件では、式が入っているかどうかではなく、エラーかどうかを
判別すべきものでしょう。
式の有無の場合、関数式は最初に言った値を判別したり、利用して処理するので、式の有無を判別する関数はありません。
CELL関数にもない。
VBAでユーザー関数をつくりHasFormulaプロパティを使えば判別できますが、本質問では関係のないことです。
それをやったら、A列全部にVLOOUPが入っていれば、識別に
使えない。
    • good
    • 0

#1です。


やはり空白が0になってましたか?それも対応なら
A1のVLOOKUPを
=IF(ISNUMBER(VLOOKUP(検索値,範囲,列番号,FALSE)),VLOOKUP(検索値,範囲,列番号,FALSE),"")
としてB1に#1を設定するか、A1はそのままで
=IF(ISNUMBER(VLOOKUP(検索値,範囲,列番号,FALSE)),"入力有","")
    • good
    • 0
この回答へのお礼

皆様、多くのアドバイスありがとうございました。
問題は解決しました。
色んな方法があることもとても勉強になりましたし、感謝です。
ここにまとめてお礼させて頂きます。

お礼日時:2007/03/11 20:31

考え方を変えて回答してみます。



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→編集→貼り付け
    • good
    • 0

>A1は空白かとおもっていましたが


>"0"が入力されており、空白ではなく条件付で「"0"なら白」になっていました。

と言う補足がありましたので、

=IF(A1=0,"","入力有")

ではどうでしょうか。

質問にある
「何らかの入力が有った場合そのまま表示」という部分は、A1に引っ張ってきた値を
そのまま表示ということでしょうか?
でしたら、
=IF(A1=0,"",A1) でいかがでしょう。
    • good
    • 0

これならエラー関係ナシでした。



A1=IF(ISNUMBER(VLOOKUP(xxx)),VLOOKUP(xxx),"")
B1=IF(A1="","空白表示","入力有り")
    • good
    • 0

○セルA1に別シートよりVLOOKUPでひっぱってきた数値を表示(空白の場合も有り)



空白場合、#N/A が出ると思うのですがこれはどのように処理したいのでしょうか?
(こちらの設定間違いだったらごめんなさい)
    • good
    • 0

No.2です。

ちょっと補足。

> IF(A1="","","入力有")としましたが、もともとA1にはVLOOKUPの数式が入っていますし、

数式が入っているかどうかは関係ありません。あくまでも上の A1="" というのは、A1に入っている「値」が空文字列かどうかで判定されます。数式の結果の値が""であれば、""として判定されます。

VLOOKUPでは空のセルを参照したときに数値の0に置きかえてしまい、""にならないので、先手を打ってVLOOKUPの値が""のときは""、そうでないときはVLOOKUPの式を、というIF文にしたのが先の回答です。

なので、A1のセルを先の回答のようにしておけば、B1セルは、
IF(A1="","","入力有")
でOKかと思います。

もっとスマートな方法があるかもしれませんが…。

この回答への補足

なるほど!!A1にひっぱってくるときに、数値表示にするか空白表示にするかを指示するんですね!
後、
>数式が入っているかどうかは関係ありません。あくまでも・・・

というのは、式が入ってからではなく"0"が入っていたからというのが正しい理由なんですね。
ありがとうございます。

参考までに、関数では「何らかの数値」?何か入力があればといったような指示はないんでしょうか?

補足日時:2007/03/09 23:27
    • good
    • 0

あまりスマートではありませんが、A1の式を


=IF(VLOOKUP(xxxxx)="","",VLOOKUP(xxxxx))
とすると、VLOOKUPの参照先が空白のときは、空白になります。
    • good
    • 1

A1の結果が数値なら"入力有"を表示すればいいなら


=IF(ISNUMBER(A1),"入力有","")

この回答への補足

早速のお返事ありがとうございます。
今、貼り付けてみましたらA1は空白かとおもっていましたが
"0"が入力されており、空白ではなく条件付で「"0"なら白」になっていました。
VLOOKの元シートは空白なのですがセルA1にひっぱってきたときに"0"となっているようです。
元シートから変更すればよいのでしょうか?

補足日時:2007/03/09 22:15
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!