マンガでよめる痔のこと・薬のこと

いつもお世話になってます。
以下の関数式について、お時間がありましたらどうぞご教示ください。

=IF(ISNA(VLOOKUP($A1,sheet2!$A$1:$B$12,2,FALSE)),"",VLOOKUP($A1,sheet2!$A$1:$B $12,2,FALSE))

「シート2の範囲指定した表にA1セルの値と同じ値の右隣になる値を返せ。ただし該当なき場合は空白とせよ。」

純粋になんでこのような構文になるのかが解りません。

1.ISNAってそもそもなんでしょう?
2.同じ式を繰り返すのはなぜ?
(模範式で、このように同じ式を繰り返す構文があまり無いように思えたのです。)

・参考となる他所のページがあれば教えて下さい。
・素人です。お手柔らかにお願いします。

(エクセル2003)

このQ&Aに関連する最新のQ&A

A 回答 (5件)

1.ISNAってそもそもなんでしょう?


ISで始まる情報関数の一つで、#N/A!エラーのみを判定する関数
結果はTRUE(真),FALSE(偽)のいずれかになります。
エラー判定のIS関数には他に
ISERR:#N/A!を除くすべてのエラーを判定する関数
ISERROR:すべてのエラーを判定する関数
があります。

2.同じ式を繰り返すのはなぜ?
ISNAの判定する値がセルでなく数式の結果だからです。
A2=VLOOKUP($A1,sheet2!$A$1:$B$12,2,FALSE)
なら
A3=IF(ISNA(A2),"",A2)
ということになります。A2のように計算の為のセルを省略する為に
=IF(ISNA(数式),"",数式)のように同じ数式を2回繰り返しになってます。
    • good
    • 1
この回答へのお礼

ありがとうございました。

お礼日時:2006/11/08 21:29

こんばんは~♪



失礼しま~す。

>「シート2の範囲指定した表にA1セルの値と同じ値の右隣になる値を
>返せ。ただし該当なき場合は空白とせよ。」

ISNA(VLOOKUP($A1,sheet2!$A$1:$B$12,2,FALSE))
の部分を
COUNTIF関数を使って

=IF(COUNTIF(Sheet2!$A$1:$B$12,$A1),VLOOKUP($A1,Sheet2!$A$1:$B$12,2,FALSE),"")

こんな式も、良く見かけますね。
ご参考にどうぞ~。。。

。。。Ms.Rinでした~♪♪
    • good
    • 1
この回答へのお礼

Ms.Rin様ありがとうございました。

お礼日時:2006/11/08 21:28

ISNA(テスト対象)


テストの対象がエラー値 #N/A (使用する値がない) のとき TRUE を返します。

=IF(ISNA(VLOOKUP($A1,sheet2!$A$1:$B$12,2,FALSE)),"",VLOOKUP($A1,sheet2!$A$1:$B $12,2,FALSE))

これはVLOOKUP($A1,sheet2!$A$1:$B$12,2,FALSE))の値が#N/Aだったら
セルに""を入れ、#N/Aでなかったときにはその値を入れろという意味で、
無意味に繰り返しているわけではありませんよ。

わからない関数がでてきたときには、ヘルプで調べてみましょうね。
    • good
    • 1
この回答へのお礼

無意味に繰り返してるワケではないと?(笑)
(=^ー^=)ありがとうございました。

お礼日時:2006/11/08 21:27

1.ISNA関数は#NA!エラーを検出したときにTRUEになります。


 VLOOKUP($A1,sheet2!$A$1:$B$12,2,FALSE) 
がエラー(=シート2のA列に合致する値がない)なら空白(””)を返し、そうでない(=合致する値がある)時は
 VLOOKUP($A1,sheet2!$A$1:$B$12,2,FALSE)
の値そのもの(A列の値が合致する値のB列の値)を返すのです。

2.同じ式を繰り返しているのは最初のVLOOKUP関数は条件、後のVLOOKUP関数は値(戻り値)として使用しているためです。

ISNAはEXCELのヘルプではIS関数の中で説明されています。
    • good
    • 1
この回答へのお礼

大変わかりやすかったです。ありがとうございました。
「TRUE」「FALSE」自体もよく解ってないので、また別の機会に質問させていただきます。

お礼日時:2006/11/08 21:26

 


式を訳して考えます。
=IF(ISNA(VLOOKUP($A1,sheet2!$A$1:$B$12,2,FALSE)),"",VLOOKUP($A1,sheet2!$A$1:$B $12,2,FALSE))
この式のVLOOKUP($A1,sheet2!$A$1:$B$12,2,FALSE)をシート2の範囲にA1セルの値と同じ値が有るかを調べる意味で「調査結果」と名付ける、すると元の式は

=IF(ISNA(調査結果),"",調査結果)
となります。

こうなれば理解は簡単になります。
ISNA(調査)・・・調査結果が#N/Aのエラーか?

これで理解できますネ
=もし(調査結果が#N/Aのエラーなら,空白,エラーで無いなら調査結果とする)

 
    • good
    • 1
この回答へのお礼

目線に合わせていただいた説明に大変嬉しいです。
ありがとうございました。

お礼日時:2006/11/08 21:24

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q2つのシート間での重複データのチェック

Excelについて教えてください。
以下の2つのシートがあります。

Sheet1
すずき 03-0000-0000
やまだ 03-1111-1111
たなか 03-2222-2222

Sheet2
03-1111-1111
03-4444-4444
03-0000-0000
03-2222-2222

Sheet1には名称と電話番号、Sheet2には別所から抽出した電話番号のみのデータがあります。
Sheet1のデータの中からSheet2に電話番号があるものだけを知りたいのですが、たとえばSheet1の 各行のC列 に Sheet2に一致する番号があった場合は●等付けるにはどうすればよいでしょうか。

よろしくお願いします

Aベストアンサー

シート1のC列に式を入れます。
=IF(ISNA(VLOOKUP(B1,Sheet2!A:A,1,FALSE))=TRUE,"-","●")

【式の説明】
シート1のセルB1の値が、シート2のA列に、存在する場合は●を、存在しない場合は-をセット。

QVLOOKUPとIFの組み合わせで困ってます

シートが2枚あり、sheet1は工事記録一覧、sheet2は納品書です。

sheet2のセルA1に、工事記録の管理番号を入力し、
セルA2以降に、管理番号に該当する住所や建物名、
工事種類などを表示させたいと思ってます。

参考にするセルが空欄の場合には、空欄のままにしたいので、
IF関数とVLOOKUP関数を組み合わせて
下のように自分で式を組んでみましたが、#N/Aになってしまいます。

=IF(A1="","",VLOOKUP(A1,sheet1!A1:J20,3,FALSE)

同一シート内で同様の式を入れた時は、希望通りの答えが返ってきましたが、
別のシートだと上手くいきません。

どなたか正しい式をご教授いただけますでしょうか。

エクセル初心者で、ネットや本で調べながら作成しているので、
分かりやすく教えていただければ助かります。

どうぞよろしくお願いいたします!

Aベストアンサー

こんばんは!

>セルA2以降に、管理番号に該当する住所や建物名、
>工事種類などを表示させたい・・・

というコトは2行目に数式を入れないといけませんよね?

方法としては
(1)手っ取り早く
=IF(A2="","",VLOOKUP(A2,Sheet1!$A$1:$J$20,3,FALSE)&"")
としてみる。
この場合、表示されるデータは文字列となります。

(2)コツコツと
=IF(OR(A2="",VLOOKUP(A2,Sheet1!$A$1:$J$20,3,0)=""),"",VLOOKUP(A2,Sheet1!$A$1:$J$20,3,0))
とする。

※ 余計なお世話かもしれませんが、A列に間違ったデータを入力した場合は
エラーになりますので、

=IF(COUNTIF(Sheet1!A:A,A2),VLOOKUP(A2,Sheet1!$A$1:$J$20,3,0)&"","")
のようにする方法もあります。m(_ _)m

QEXCELで別のシートのデータを参照して返す方法

ちょっとしたことなのですが、うまく式が書けなくて悩んでいます。

作業用のシート1と参照用のシート2があり、
シート1のA列には
 あおき
 あべ
 いぐち
 いはら
などと文字列(名前)が入力されています。
こちらは今度の野球のスタメンだと思ってください。

シート2にはA列とB列があって、
わたなべ 55
いぐち  43
あおやま 67
いはら  41
などと、名前:背番号が羅列されています。こちらが参照用の全選手の背番号リストだと思ってください。

ここで、 シート1のB列に、A列の名前に対応した背番号を返したいのです。
なので、シート1のB列に
IF(シート1のA列の値=シート2のA列のいずれかの値)だったとき、
適合したシート2の行のB列の値を表示する
という式を入れたいのですが、どのように式を書けばよいでしょうか。

すみませんがどなたか教えてください。

Aベストアンサー

私もその場合はVLOOKUP関数を使用しています。

「B1」=VLOOKUP(A1,Sheet2!$A:$B,2,0)

QISNAとISERRORの使い方の違い

こんばんは。
超初心者です。教えてください。
VLOOKUP関数で、検索結果がみつかったらその値を表示する式で
=IF(ISERROR(VLOOKUP(A1,表,列,処理方法)),"",VLOOKUP(A1,表,列,処理方法))
という書き方と
=IF(ISNA(VLOOKUP(A1,表,列,処理方法)),"",VLOOKUP(A1,表,列,処理方法))
という書き方をみつけました。

1.どちらがよいのでしょうか?
2.どちらも同じ答えがでるのでしょうか?
3.またISERRORとISNAでは何が違うのでしょうか?

よろしくお願いいたします。

Aベストアンサー

こんばんは。

>=IF(ISERROR(VLOOKUP(A1,表,列,処理方法)),"",VLOOKUP(A1,表,列,処理方法))

こちらがオーソドックスだと思います。

理由は、VLOOKUPの吐き出すエラーの種類は、VLOOKUPは、#VALUE!, #REF!, #N/A!, #NAME! があります。(他にも出るかもしれません)

#N/A! というのは、
VLOOKUP(検索値,範囲,列番号,検索の型)

この中の「検索値」が見つからなかったことに対して、エラーを出さないようにするためのものです。ISERRORでも基本的には同じことです。ワークシートの数式入力というは、心理的に短いほうを選ぶという習慣がありますが、こういうときは、ISERRORという何でもエラー対応のほうが安心できます。しかし、ISNA でも間違いではありません。

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

QexcelのVLOOKUPで検索値を2つにできますか?

excelのVLOOKUPで検索値を2つにしたいです
私の知っているVLOOKだと下記のことは対応できます
例えば、A列に会社名、B列に住所、C列に電話番号 とあった場合
「住所が検索値と同一なら電話番号を表示しなさい」という指示は出せます

そこで質問です
「会社名と住所が検索値と同一なら電話番号を表示しなさい」
というような、複数の検索値を持つ事はできないのでしょうか?

参考になるURLなどでも結構ですので、ご存知の方よろしくお願いいたします

Aベストアンサー

元の表をA列に会社名、B列に住所、C列に「=A2&B2」、D列に電話番号のようにして
=VLOOKUP(会社名&住所,$D$2:$C$100,2,FALSE)
のようにすれば可能です。

QExcelで[表1]にあって、[表2]にないものを抽出する関数

Excelで[表1]にあって、[表2]にないものを抽出する関数

例)[表1]   [表2]
   A社     A社
   D社     D社
   R社     P社
   P社     R社
   D社
   F社
   F社

上記は簡単に書きましたが、表1に重複するものも含め、300社程度あるなかで
表2にリストアップされていない会社を見つける関数やその他方法論があれば
ぜひ教えてください!
(例でいえば、F社を見つける方法です。)

抽出するのは別シートでも、同じシートでも構いません。

Excel2003でも対応できるものであれば、なお嬉しいです。

よろしくお願いします。

Aベストアンサー

Countif関数で同じものがいくつあるか数えさせます。
   A   B        C
  [表1]表2にある数   [表2]
   A社          A社
   D社          D社
   R社          P社
   P社          R社
   D社
   F社
   F社
だとして
B列に =Countif(C:C,A2)
と入れて下までコピィすれば 表2に同じものがいくつあるか出ますので
0 がないものです。

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい

Qエクセルで重複しているデータの抽出のしかたを教えてください。

エクセルで重複しているデータを抽出したいのですが・・。なにぶん初心者なもので簡単な方法があればよいのですが・・。
A列に日付 B列に企業名このデータが300件ほどあります。

 Å列      B列
1月 1日    AAAA社
1月 4日   BBBB社
1月 8日   CCCC社
2月 1日   BBBB社
2月20日    DDDD社
3月 2日   AAAA社

と、あるとしてB列の企業名が重複しているものを抽出したいのですが・・・。この場合 AAAA社とBBBB社ですが。
これを簡単に抽出する方法はないでしょうか?
教えてください お願いいたします。

Aベストアンサー

企業名がセルB2からセルB300まで入力されていると仮定します。
セルC2に IF(COUNTIF($B$2:B2,B2)>1,"*","") を入力し、セルC300までコピーして下さい。すると重複したデータの二番目以降に "*" のマークが付きます。
(注) 数式を下のセルまでコピーするため、COUNTIF($B$2 は絶対参照にして下さい。

QVLOOKUP関数の範囲に、複数の範囲を指定したい

VLOOKUP関数の範囲に、複数の範囲を指定したいのですが方法がわかりません。
例えば同じシート内のC3:L8の範囲とM3:V8の範囲とW13:AF18の範囲を同時に
検索範囲として指定したいと考えております。

選択範囲に名前をつけて定義し、それを範囲として指定してみても、
なかなか上手くいきません。

効果的な方法があれば、御教鞭頂きたく思います。

Aベストアンサー

ごめんなさい。手抜きですね。
以下が条件です。

検索値がA1にある
検索範囲の中で検索値に合致する値が複数ない

=IF(ISERROR(VLOOKUP(A1,C3:L8,2,0)),IF(ISERROR(VLOOKUP(A1,M3:V8,2,0)),IF(ISERROR(VLOOKUP(A1,W13:AF18,2,0)),"",VLOOKUP(A1,W13:AF18,2,0)),VLOOKUP(A1,M3:V8,2,0)),VLOOKUP(A1,C3:L8,2,0))

最初の範囲で検索値に一致する物がなければ、次の範囲を探します。
その繰り返しです。
最終的にどこにもなければ空白です。

返す値の列番号は範囲の中で左から2番目です。
たとえば最初の範囲なら、D列の値が帰ります。


このカテゴリの人気Q&Aランキング