Excel2010でのHLOOKUP関数

このQ&Aのポイント
  • Excel2010でのHLOOKUP関数について質問させていただきます。列ごとに個人データを入力し、検索値に該当する人のデータを表示するようにしていますが、一番右列に追加したデータが表示されません。
  • Excel2010のHLOOKUP関数を使用して、個人データを列ごとに入力しています。検索値を入力すると、該当する人のデータが表示されますが、一番右列に追加したデータが表示されない問題が発生しています。
  • Excel2010のHLOOKUP関数を使用して個人データを管理していますが、一番右列に追加したデータが表示されません。検索値を入力すると、該当する人のデータが表示されるように設定しているのですが、何も表示されない状態です。
回答を見る
  • ベストアンサー

Excel2010でのHLOOKUP関数

先日、同内容の質問をさせていただきましたが、私の説明がまずかったため、エクセル画面を添付し、再度の質問とさせていただきます。 列ごとに個人データを入力し、1個人には200個(行)のデータがあります。現在140名分のデータがあります。作成した票の各欄には行番号を変えたHLOOKUP関数を入れ、A1に入力した検索値に該当する人のそれぞれのデータを表示するようにしています。個人のデータは200以上増えることはないのですが、人数は増えてくるので、列方向は200列ほど範囲指定しています。 これまで、検索値を入力すれば、うまく票の中に該当データを表示してくれていたのですが、この度一名分のデータを一番右列に追加し、割り当てた検索値をA1に入力したのですが、票には何も表示がありません。 以上よろしくお願いします。 ps これまでデータの添付をしたことがないので、画像がうまく載っているか心配です。うまくいっていなかったら再度挑戦します。

noname#246097
noname#246097

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

  • ベストアンサー
  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.8

>ご指示の=CELL( 関数を使い確認しましたところ、すべて『v』が表示されました。念のため1行目をオートフィルで入れなおしました。 >結果は同じでした。 あり得ないことなのでExcel 2010のプログラムが部分的に壊れているかも知れません。 回答No.5の補足にある(1)の数式で範囲が$D$1:$EP$222となっていますが 列数に誤りはありませんか? DBシートのD1が1、E1が2、F1が3・・・でEP1が143になりますよね? 中間は連番の数値と言うことであれば検索値が何番以降が検出できないのかを提示すべきではないでしょうか? また、DBシートの2行目以下が全て未入力の列が中間に存在するのでしょうか? 何れにしても正常なExcelブックでExcelのプログラムに損傷が無ければ有り得ない現象です。 Excelのプログラムの一部に損傷が起こっている場合はOfficeの修復またはOfficeの入れ直しをすれば直ります。 Excelブック(対象のExcelファイル)の一部が壊れているときはExcelブックの作り直しが必要でしょう。

noname#246097
質問者

補足

>DBシートのD1が1、E1が2、F1が3・・・でEP1が143になりますよね? 中間は連番の数値と言うことであれば検索値が何番以降が検出できないのかを提示すべきではないでしょうか? はい、現在140列までの使用で、その右隣り(141列)からが右がダメなのです。142列も同じでした。 >Excelのプログラムの一部に損傷が起こっている場合はOfficeの修復またはOfficeの入れ直しをすれば直ります。 仰せのとおり、この部分も考えています。とりあえずはマイクロソフト サポートに連絡、そして同ファイルの別シートや新規ファイルにSheet”DB"の内容をコピーしたり、また、サーバー経由で同僚のPCで開いてもらい確認してみます。

その他の回答 (7)

  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.7

>>私が確認したいのはDBシートのD1~EP1の値が文字列か数値かを明確にして頂きたいのです。 >これについては、通し番号(数値です。) >A1に入力は『数値です。』 HLOOKUP関数の検索値が数値で範囲の1行目が数値の場合は検索方法を省略したとき検索値以下の値の最大値が抽出対象の列になります。 従って、エラーは起こりませんが検索値と同じ値が見付からないとき予想外の結果になります。 >とにかく同じ関数で処理しているのに、ある列を境に表示が無くなったことが理解できないのです。 データベース側の1行目の連番に問題が隠れているかも知れません。 「ある列を境に」と言うことはその列の前後についてセルの値のタイプを確認されると原因が見えるかもしれません。 =CELL("type",[検査対象]) → 数値のとき"v"(ブイ)、文字列のとき"l"(エル)が戻ります。未入力のときは"b"(ビー)です。 尚、DBシートの1行目に連番の数値では無く数字の文字列が混じっていると目的通りの値が戻りませんのでデータベースの値を精査してください。

noname#246097
質問者

補足

色々ありがとうございます。 この状態でとどまっているわけにもいきませんので、別シートもしくは、新規ファイルにコピー等移植作業も考えていますが、どうも合点がいかないので、よろしくです。 >>私が確認したいのはDBシートのD1~EP1の値が文字列か数値かを明確にして頂きたいのです。 ご指示の=CELL( 関数を使い確認しましたところ、すべて『v』が表示されました。念のため1行目をオートフィルで入れなおしました。 結果は同じでした。

  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.6

>また、添付の一番上の行の数値が左寄せになっていることで、文字列と思われたかもしれませんが、セル内の関数を表示するために、『数式の表示』を指定すると、このように左寄せの表示になってしまいました。 意味不明です。 私が確認したいのはDBシートのD1~EP1の値が文字列か数値かを明確にして頂きたいのです。 >ちなみに上記(1)の関数は、別シートで票を作成している中での、あるセル内の関数です。 ここで言っている『票』とは印刷された結果が『票』であってデータを処理しているシートは『表』と表現して頂きたいと思います。 問題のHLOOKUP関数が設定されているシートのA1セルの値についてもDBシートのD1~EP1セルと同じで文字列か数値かを明確にして頂かないと不具合の原因を究明できないでしょう。 (1)の数式 =HLOOKUP(DB!$A$1,DB!$D$1:$EP$222,2) は氏名を抽出するセルに設定されたものでしょうか? また(2)の数式 =IF(HLOOKUP(DB!$A$1,DB!$D$1:$EP$222,21)="","",HLOOKUP(DB!$A$1,DB!$D$1:$EP$222,21)) は不自然な数式であり無意味なように見受けられます。 憶測ですがDBシートから抽出する値が19種(2行目~20行目)であり21行目以下はブランクと言うことでしょうか? 一般的には =IFERROR(HLOOKUP($A$1,DB!$D$1:$EP$222,ROW(),0),"") のような数式を使い21行目以降は数式を設定しないようにします。 または =IFERROR(HLOOKUP($A$1,DB!$D$1:$EP$222,ROW(),0),"")&”” のようにして抽出されたセルがブランクのときは文字数0の文字列("")を代入するようにします。

noname#246097
質問者

補足

何度もすいません。 >意味不明です。 私もこの度初めて経験したのですが、セルに数値(セル内右寄せ)を入れていても、セル内の関数を表示するため、数式タブ内の数式の表示をクリックすると、入力した数値が左寄せになり、数値が文字列のようになるのです。 >私が確認したいのはDBシートのD1~EP1の値が文字列か数値かを明確にして頂きたいのです。 これについては、通し番号(数値です。) A1に入力は『数値です。』 (1)については、そんな感じです。A1で指定の列の2行目のデータを指定しています。 (2)については、データの入力されていないセルを指定したとき、空白表示をさせるようにしたのですが、上手な方法がわからなかったので、昔のBasic言語でのプログラミングの方法でやってしまいました。 >憶測ですがDBシートから抽出する値が19種(2行目~20行目)であり21行目以下はブランクと言うことでしょうか? 1列には200程度のデータがありますが、20行目までは必ずデータはあるのですが、それ以下はデータの有る無しの行があるので、無い場合は空白表示をするようにしました。 とにかく同じ関数で処理しているのに、ある列を境に表示が無くなったことが理解できないのです。 以上よろしくお願いします。

  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.5

>まずは、データを基に『票』を作成しています。 言葉を正しく理解できないと折角の回答が無意味になります。 『票』と『表』の違いから学習し直す必要がありそうです。 Excelは『表計算ソフト』です。従って、『票』を作らずに『表』を作って計算やデータ処理を行います。 >本物のファイルには、指定の列の指定の行にデータがなければ、空白表示するように設定しています。 質問に添付の画像の数式と異なる数式でしょうか? 例えば下記のような数式ではエラーが発生して空白に見えます。 =IFERROR(HLOOKUP($A$1,$D$1:$GU$200,ROW()),"") A1セルの検査値が数字の文字列で範囲の1行目が数値の場合はエラーが発生してIFERROR関数で指定された ""(文字数0の文字列) が返り何も無いように見えます。 質問の内容に不備があると正しい回答になりません。 >本物ファイルは、個人情報満載ですので、表示できなくてすいません。 本物ファイルの中身を提示せよとは1度も言っていません。 しかし、本物のデータと同じ形式の模擬データを提示して頂ければ確実な回答を提示できると思います。 数式は本物をそのまま提示して頂けないとあなたの疑問を解くことは困難になります。 肝心なことは検索範囲の1行目についてデータの仕様を提示して頂くことです。 添付画像の1行目は説明が無ければ数字の文字列(数値では無い)と解釈します。(数値の場合は右寄せで表示されている)

noname#246097
質問者

補足

(1) =HLOOKUP(DB!$A$1,DB!$D$1:$EP$222,2) (2) =IF(HLOOKUP(DB!$A$1,DB!$D$1:$EP$222,21)="","",HLOOKUP(DB!$A$1,DB!$D$1:$EP$222,21)) 色々な方に指導いただきまして感謝しています。 代表してbunjii様に報告させていただきます。 皆さんから指摘いただきました件について、本日確認してみました。 ・FALSEの設定 ・該当データがない時に空白を表示する設定を解除 ・文字列、数値の確認 等々について確認しまた。問題や変わったことはありませんでした。ある列までは正常に表示してくれるのですが、今回入力した最後の列だけ表示がありませんでした。さらに右の列も試したのですが同じ結果でした。 また、添付の一番上の行の数値が左寄せになっていることで、文字列と思われたかもしれませんが、セル内の関数を表示するために、『数式の表示』を指定すると、このように左寄せの表示になってしまいました。すいません。 ちなみに上記(1)の関数は、別シートで票を作成している中での、あるセル内の関数です。『DB』はデータベースを作成しているSheet名が『DB』で、指定した範囲はSheet『DB』のD1からEP222です。この関数の部分は必ずデータが存在するので、空白表示指定はしていません。 上記(2)の関数は、データがないことがありますので、票の中でエラー表示されると後の使用上、うれしくないので、データが入力されていない時は空白表示をするようにしました。(もっと上手なやり方があるかもしれませんが・・・) これらを踏まえて、考えられることをご教示いただきたいと思います。 ps Excelについては、表・計算が得意なことは重々存じています。これまでも計算・分析・表、グラフ作成に活用させていただきました。ただ、VlookupやHlookup関数を利用した票(例えば住民票のようなもの)作成は非常に重宝します。実際、私の知っている自治会でも、高齢者の方の緊急連絡用登録票を作成し、重宝しているようです。WORDの代わりに、Excelで文書作成している人も知っています。封筒の表書きにも利用しています。私には到底できませんが、エクセルですばらしい絵を描いている人がテレビで紹介されていました。 このようにExcelは色々なことに使えるソフトだと思っています。

  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.4

>検索値を入力すれば、うまく票の中に該当データを表示してくれていたのですが、この度一名分のデータを一番右列に追加し、割り当てた検索値をA1に入力したのですが、票には何も表示がありません。 些細なことですが「票」は「表」の誤りではないでしょうか? 検索範囲の中に些細な誤りがあると目的の値を検出できなかったり目的以外の値が帰ってきます。 例えば、検索値が添付図のように数字の文字列で検索範囲が従来の値が数字の文字列で追加された値が数値の場合は正しい検索結果を得られません。 また、「何も表示がありません」と言う結果にはならず「エラーが表示される」か「0が表示される」や「目的外の値が表示される」と言う結果になるはずです。 尚、HLOOKUP関数の[検査方法]を省略していますが省略せずに FALSE または 0 とすることをお薦めします。(省略すると TRUE を指定し近似値として検索されます) データの入力や数式の入力で些細な誤りが起こり易いことなので見直しを念入りにする習慣を身に着けてください。

noname#246097
質問者

補足

ありがとうございます。 まずは、データを基に『票』を作成しています。 数値文字列については確認してみます。 本物のファイルには、指定の列の指定の行にデータがなければ、空白表示するように設定しています。 左隣のデータと同じ形式で入力しているのに、1列違っただけでエラー表示等も何も表示されないのです。(データは入っているのに・・・) FALSE等については、明日本物ファイルで確認してみます。 本物ファイルは、個人情報満載ですので、表示できなくてすいません。

  • msMike
  • ベストアンサー率20% (363/1772)
回答No.3

》 票には何も表示がありません ホント?! 入力した式が添付図に示されたものと同じなら、 #N/A とか 0 が表示されるはずなンですがぁ。チェックしてみてください。 それから、200人用の「個人データ」と「作成した票」は別シートなンでしょ? もし同一シートにあるのなら、「作成した票」は範囲 $D$1:$GU$201 の外側、つまり、GU列より右側、かつ、200行目より下側になければならないことぐらいは合点承知之助ですよね?

noname#246097
質問者

補足

ありがとうございます。 本物ファイルについては、指定の行にデータがなければ、空白表示するよう設定しています。 また、本物は別シートに票を作成しています。ですので、HLOOKUP関数のそれぞれの番地にはデータベースを作成しているsheet1がついています。

  • mt2015
  • ベストアンサー率49% (258/524)
回答No.2

正常な場合の例しかないので良く解りませんが、第4パラメータにFALSEを設定してみてください。 例: =HLOOKUP($A$1,$D$1:$GU$200,2) ↓ =HLOOKUP($A$1,$D$1:$GU$200,2,FALSE) これで解決しない場合、以下の内容を補足願います。 ・列は常に後ろに追加であっていますか。 ・既存の列の削除は行わない?必ず検索値は連番になっている? ・「何も表示がありません」と言うのはHLOOKUPの結果、何も表示しないと言うこと?  それはあり得ないので、条件付き書式で0やN/Aの時に文字色を白にしたりしていませんか? ・正常なデータだけでなく、異常なデータのサンプルも提示してください。

noname#246097
質問者

補足

FALSEについては、明日本物ファイルで確認してみます。 列追加は挿入ではなく、常に一番右に追加しています。 列の削除はなく連番も確認しました。 指定した行にデータがない時は、票のセルに空白表示を設定しています。 今回の添付資料は、形式を確認してもらうために、新たに作ったもので、本物はたくさんの個人情報なので・・・。 以上です。本当に不思議な状態なのです。

  • 9don
  • ベストアンサー率21% (14/65)
回答No.1

追加入力した「検査値」が「数値」だったとか。

noname#246097
質問者

補足

追加したデータは、それまでのものと全く同じ形式です。

関連するQ&A

  • Excel2010でのHLOOKUP関数

    Excel2010で列(縦方向)に1組のデータ(200個程度)を入れ、現在140組のデータが入っています。別シートに票を作成し、票内の各セルにHLOOKUP関数を入れ、この140列×200行のデータベースから、指定した列(検索値)のそれぞれの行からデータを抽出し表示するようにしています。 これまでは、検索値を入力すると、該当する列内の値を票内に反映していてくれていたのですが、この度新たな列を増やしたところ、その列の値を表示してくれません。関数内のデータの範囲はその列以上に広く指定しています。わかりにくい説明で申し訳ないのですが、考えられる原因はありますか。よろしくお願いします。

  • VLookUp,HLookUp関数について

    検索値より、前(若い)列または行のデータを引っ張ってくることはできないのでしょうか?また、他に方法があれば教えて下さい。よろしくお願いします。

  • HLOOKUP関数ではうまくいいきません

    下記のような表があります 1日後│2日後│3日後│4日後│5日後│6日後│7日後│8日後│  +25│ -48│ -44│ +30│ -88│ -82│ -44│ -32│  -73│ -69│ -82│ +50│ -17│ -69│ -28│ -64│  -59│ -72│ -13│ -97│ -59│ -18│ -54│ -97│ 左に新たに列を挿入してそこに以下の条件の関数を入れようとしています。 ・20以上のセルのラベル(○日後)を表示する ・複数ある場合もああるので一番左側のセルのラベルを表示する 列方向への検索なのでHLOOKUPを使おうとしたのですが 最初の検索値には不等号が使えないようでした。 どうかご教授お願いしますm(__)m

  • hlookupについて

    はじめまして、yuitanと申します。hlookupについてご教授お願いいたします。 sheet1に、基データとしてA列セル2から縦に店舗番号、B列セル1から横に月日が並べてあり、各店舗の、各日の商品の値段が各セル(B2からK30まで入っております。 sheet2で検索したいのですが、A列には店舗番号がすでに入力されておりますが、B列セル1に、検索したい月日を入力すると、sheet1の基データから入力した月日の店舗番号の、値段を検索したいのですが、どのように組み合わせればよいのでしょうか?

  • エクセルでHLOOKUP関数の選択範囲について

    エクセルでHLOOKUP関数を使って、検索したいのですが、 シートは、一覧表のシートと データが入っているA101、B203、C305、...シートは300シートくらいあります。 一覧表のシートには、下のような表になっていて、      A列  B列  C列  D列 ...          1003、1004、1005、1006、... 2行目 A101  3行目 B203 4行目 C305       .       .       . データのはいっているシート、A101は下の表になっています。      B列 C列 D列、・・・、Z列 2行目 1004、1005、1006、... 3行目 100、 200、 150、... 一覧表のB列の2行目には HLOOKUP(B2、シートA2のB2:Z3、2行目、FALSE) という感じで、シート名をセルA2のものを参照にして 探して表示させ、B列、C列、D列の2行目から下の行も 表示させたいのですが、うめくできませんでした。 INDIRECT関数を使ってみましたが、セル範囲が無効という エラーがでてしまいます。↓こんな感じで入力してみたのですが... SUMPRODUCT((INDIRECT($A2&"!$B$2:$Z$3"))=$B$1,(INDIRECT($A2&"!$B$2:$Z$3"))) 1つづつデータを見て手打ちはデータが多く、 どんどんデータが増えていくので できれば関数を使って表示させたいと思っています。 詳しい方いらっしゃいましたら、どうか教えてください よろしくお願いします。

  • HLOOKUPでもVLOOKUPでもなくて、それに似た関数はありますか

    HLOOKUPでもVLOOKUPでもなくて、それに似た関数はありますか? やりたいことは、 同じファイルにシート1とシート2があり、 シート1には a列 b列 c列 d列 1 ミッキー サッカー チョコレート 2 ミニー  野球   クッキー 3 ドナルド テニス  ビスケット 4 デイジー 水泳   ポテトチップス ・ ・ ・ という、10,000行ほどのエクセル表があり、 シート2には、 野球 水泳 ・ ・ などという風に、シート1のc列の文字列が全部ではなく、複数ある1列のみのエクセル表があります。 そして、このシート2のセルをそれぞれシート1で検索して、それを含む一行全部を表示した エクセル表を新たにシート3に作成したいのですが、関数かVBAかで可能でしょうか? 例えば、この場合、シート3には a列 b列 c列 d列 2 ミニー  野球   クッキー 4 デイジー 水泳   ポテトチップス ・ ・ ・ というように表示したいのです。 HLOOKUPやVLOOKUPは検索される文字列は端っこしかダメなんですよね? 教えて下さい!!

  • Excel関数教えてください。

    データベースとなるシート2のA列に、該当する文字列を入力しています。このデータは定期的に変更し、更新する際いくつになるか一定ではありません。(なので列としています。) シート1のA列(A1とする)に、入力した文字列が、シート2のA列に入力した文字と完全一致した場合、シート1のE列(E1とする)に「◯」が表示され、 入力したものがデータベースに該当しない場合は空白にしたいのですが、どんな関数にしたらよいですか?

  • 【Excel】VLOOKUP関数について

    Excel2003を使用しています。 B列にコードNo.、D列に会社名が入力されている表(1)があります。 表(1)とは別のシートで、B列にコードNo.を入力すると、D列に会社名が表示されるように、VLOOKUP関数で検索範囲を表(1)としてD列に数式を入力しています。 これを逆に、D列に会社名を入力したら、B列にコードNo.が表示されるようにしたいのですが、B列に数式を入力する際、表(1)はこのまま利用できるのでしょうか?

  • セルの結合がされた表をHLOOKUPで検索する場合について

    Excel初心者です。質問があります。 下記のような表があります       A列   B列   C列   D列 行番号1    12/1       1/1 行番号2  件数   金額  件数   金額    行番号3   2    100   3    200 行番号5   1/1 ここでHlookupを使って下記のように検索します A5に1/1と入力して 件数を検索するには   =HLOOKUP(A5,A1:D3,3) → 3 ここまではいいのですが 金額の「200」を検索するにはどのような関数を使えばよいのでしょうか? ※行番号1の「12/1」と「1/1」はセルの結合をしており 「12/1」のセルはA1、「1/1」のセルはC1になっています。 HLOOKUP関数とVLOOKUP関数又はCOLUMN関数を組み合わせれば出来るのでしょうか よろしくお願いします。

  • 関数~!

    行と列の数値を検索して交差したところに入力されている数値を返したい。 vlookupとhlookupを同時に使っているイメージなんですが…(-_-;) 教えてください_(._.)_

専門家に質問してみよう