* VLOOKUP関数が正常な値を返さない。 [#pbe3fd89]
 |RIGHT:|LEFT:|c
 |~ページ|[[OpenOffice.org FAQの登録ページ]]|
 |~投稿者|new_OOo3|
 |~分類|#listbox3(Q&A,faq03,class)|
 |~優先順位|#listbox3(普通,faq03,priority)|
 |~状態|#listbox3(完了,faq03,state)|
 |~カテゴリー|#listbox3(Calc 表計算,faq03,category)|
 |~投稿日|2009-08-10 19:49:28 (月)|
 |~OS|WindowsXP|
 |~依存するページ||
 |~バージョン|#listbox3(3.1.0,faq03,version)|
 
 ** メッセージ [#t67f0c34]
 |LEFT:|c
 |回答ページでは行末に「~」を付加する必要はありません|
 お世話になっております。
 
 Calcの表計算にてVLOOKUP関数を用いると#N/Aが返ってきます。(添付file参照願います)
 文法的には何度も見直したので間違いは無いと思います。
 
 不具合点・気付き点がありましたら宜しくご意見を頂けます様お願いします。
 
 宜しくご回答頂けます様お願いします。
 
 ----
 ***検索列は先頭列 [#de782b28]
 >gorodoku (2009-08-10 22:45:13 (月))~
 ~
 添付ファイル拝見しました。~
 ~
 ~
 vlookupの検索列は指定範囲の先頭列です。この添付ファイルの場合、[A],[B],[C]と入っているA列です。~
 ~
 第1パラメータの検索値はこの列から値を探すので、これに[1]という値が指定されていると、そのような値が検索列に存在しないので関数はエラー[#N/A]を返してしまうのです。~
 ~
 ~
 第3パラメータは結果を返したい列を指定します。添付ファイルの場合[1]を指定していますので検索列と同じ列を指定したことになります。~
 ~
 これだと検索値が存在した場合、検索値そのものを返すことになります。よって第3パラメータには検索範囲の2列目以降を指定するのが一般的な使い方かと思います。~
 ~
 ~
 添付ファイルの通りセルの値が次のように入力されているとします。~
 ~
        A        B        C        D   
  1
  2     A        1     3000        3
  3     B      100       10       40
  4     C      400        5       50
  5
  6
  7(関数入力)
 
 A7セルに「=VLOOKUP("A";A2:D4;3;0)」と関数が入力されている場合、指定範囲の先頭列はA2,A3,A4セルです。~
 ~
 A2セルに文字列"A"がありこれが一致するので、VLOOKUP関数はこの行A2,B2,C2,D2から結果を返します。~
 ~
 第3パラメータで第3列を指定しているのでこのなかからC2の値を返します。~
 ~
 よって結果的にA7セルには数値「3000」が返されます。~
 
 //
 ***分かりました。 [#k8693349]
 >new_OOo3 (2009-08-11 01:32:45 (火))~
 ~
 gorodoku 様~
 ~
 ご回答ありがとうございます。~
 マクロの感覚でSheet関数を見ていて、Excel時代に多用したVlook関数の使い方を忘れて(勘違い)していました。~
 
 //
 ***補足 [#f91bc8ff]
 >gorodoku (2009-08-11 08:29:52 (火))~
 ~
 すみません、書き忘れていたので一応補足です。ご存知かとは思いますが念のため。~
 ~
 上記の回答はVLOOKUP関数の第4パラメータに0またはfalseを指定した場合の挙動です。~
 ~
 1またはtrueを指定した場合は、検索列内で検索値以下(「未満」では無く「以下」。よって完全一致する場合はその行)の最大値となる行の値を返します。~
 このとき検索範囲のデータは検索列で昇順となるように並べ替えておく必要があります。~
 
 //
 ***ページ番号を変更しました [#j11a4b36]
 >M.Kamataki (2009-08-27 16:43:06 (木))~
 ~
 faq/5/21にページ番号を変えました。[[faq/5/3]]をご覧ください。~
 
 //
 #article