• 締切済み

Excel の関数

添付エクセルファイルの、 (1)の各名前で、(2)の表内に名前があるか検索し、名前が存在した場合は、年齢と住所も合わせて表(3)を作成する関数を教えてください。 (1)の各名前を(2)から探して、あった場合はその名前の年齢と出身と一緒に表作成。

みんなの回答

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.6

前回答で「センシティブな処理にはお勧めできません。仕事ではほとんど使いませんでした。」と書きましたが、もう少し詳しく書かせてもらいます。 書籍やネットにもあまり触れられていないかと思います。実務で遭遇したVlookUp関数の気をつける点です。 ●関数(VlookUp関数)の欠点  1.当然ですが、関数を登録しないと計算してくれない。  2.処理単位で、関数の設定するセルを追加したり削除(消去)する必要が出てくる  3.VlookUp関数の場合、検索の型によっては、検索範囲にデータを追加すると並べ替えが必要  4.VlookUp関数の場合、検索範囲にデータを追加・削除すると算式の変更が必要     ※データの追加・削除に対応するには、範囲名を使い、可変の範囲を設定したりします ●オブジェクトブラウザでVlookUp関数を調べます  1.検索値:Arg1の定義には、「検索する値を指定します」とあります。「値」です  2.範囲:Arg3の定義には、「英字の大文字と小文字は区別されません」とあります    もう少し詳しく書くと「半角英字のみで作られた文字は区別されません。全角英字混在も区別されません」  3.範囲の左側列は「Clean関数」や「Trim関数」を使って、仕様に合った内容にするように書かれています  4.日付型の検索については注意するように書かれています  5.「検索値と一致する値が範囲の左端に複数ある場合は、最初に検索された値が使用されます」とあります    これがVlookUp関数の使用を注意している一番の理由です。添付図で説明します ●検索値の内容(添付図で説明)  1.「データ1~3」は見た目「田中 幸子」ですが、フリガナ情報は3つとも違います    VlookUp関数の結果は、いずれも最初のデータを検出しています  2.「データ4、5」も上と同じ意味です。苗字が違いますが最初のデータを抽出しています  2.「データ6、7」半角英数字のみですが。最初のデータを抽出しています  4.「データ8~11」は全角英のみ、全角半角混合の場合です。これも最初のデータを検出しています  5.「12」は「3」と同じです。VlookUp関数は最初のデータ抽出しています。二重検出です 〇フィルターオプションの結果(添付図右)  1.添付図では、フリガナ情報や英字の大文字小文字の違いも考慮されています  2.二重データも表示されていません 作った後、何か問題が発生した時、「VlookUp関数の仕様だ」と反論できればいいんですが、「知っててなぜ対応していないんだ」と、傷口が大きくなります。知らなかったことがバレてしまいます この質問の場合、ここまで神経質になる必要はないかもしれませんが、「VlookUp関数を使っておしまい」とするよりも、このような知識を持って使っていくべきだと思います。「ここまで考えてるんだ」、「ユーザーに優しい作りだね」などと評価が上がることもあります オブジェクトブラウザは情報の宝庫です。書籍やネットの情報の元だと思っています。最初に買ったVBAの本はオブジェクトブラウザの印刷でした。是非有効活用してください

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.5

この質問の場合、まず、関数を使うべきか、使えるかを検討すべきでしょう。  1.関数を使う場合、データ数によって登録するセル行数が変わってきます。  2.(1)表の名前は(2)表に必ず含まれているか。  3.(1)表に重複がないか。あったらどうするか。  4.(1)表に(2)表に含まれない名前が有ったらどうするか  5.3、4の処理で空白行(エラー等の処理結果)ができたらどうするか 質問のような要件で関数を使った場合、後から色々な変更が発生し、見るも無残な関数ができ上ることが良くありました。 この質問の場合、「データタブ」→「並べ替えとフィルター」グループ→「詳細設定」を使うべきでしょう。 Excel2010での説明です。 【対応1】  「データタブ」→「並べ替えとフィルター」→「詳細設定」の「フィルターオプションの設定」ダイアログで、    「指定した範囲」を選択    「リスト範囲」に「$F$2:$H$17」を指定((2)表)    「検索条件範囲」に「$C$2:$C$10」を指定((1)表)    「抽出条件」に「$K$2:$M$2」を指定して「OK」を押します。((3)表の行見出し)  この出力では、(1)表のデータが(2)表の順で表示されます。次の指定なら表(1)の順で出力できます。 【対応2】  (1)表の名前を(3)表の名前にコピーしておきます。  「データタブ」→「並べ替えとフィルター」→「詳細設定」の「フィルターオプションの設定」ダイアログで、    「指定した範囲」を選択    「リスト範囲」に「$F$2:$H$17」を指定((2)表)    「検索条件範囲」に「$K$2:$K$10」を指定((3)表の名前列)    「抽出条件」に「$L$2:$M$2」を指定して「OK」を押します。((3)表の年齢、住所列の見出し)  この出力では、(1)表のデータの順で抽出されます。  (1)表のデータ数によって算式を変える必要がなく、二重データは空白行になります。 上記1~5を無視すれば、関数で書くと、   名前:K3=VLOOKUP($C3,$F$3:$H$17,1,0)   年齢:L3=VLOOKUP($C3,$F$3:$H$17,2,0)   住所:M3=VLOOKUP($C3,$F$3:$H$17,3,0) でしょうか。下方向にコピーします。 個人的には、色々問題があり、センシティブな処理にはお勧めできません。仕事ではほとんど使いませんでした。 よろしく検討下さい。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.4

Cの名前でFGHの表の名前F列を検索して、見つけて、そのG,HのデータをD列、E列に持ってくれば仕舞いで、それにはVLOOKUP関数が使える。VLOOKUP関数はエクセル関数では最有名な関数で(1冊の本も出ている)、この関数は、知っているだろう。質問に出るということは、エクセル関数の勉強を一通りやってないのでは。 WEBではVLOOKUP関数の記事がたくさんある。 Googleででも「VLOOKUP関数」照会すべきだ。

  • Chiquilin
  • ベストアンサー率30% (94/306)
回答No.3

関数を計算以外の目的で使いたがる人が多いですが 用意され ている機能を有効に使った方がいいと思います。 下記の接続を作って 外部データの取り込み機能を使えば SELECT (1).名前, (2).年齢, (2).住所 FROM (SELECT 名前 FROM [Sheet1$C2:C]) As (1) LEFT JOIN (SELECT 名前, 年齢, 住所 FROM [Sheet1$F2:H]) As (2) ON (1).名前 = (2).名前 WHERE (1).名前 Is Not Null で済みます。

  • kkkkkm
  • ベストアンサー率65% (1618/2457)
回答No.2

D列を作業列にします D3に =IFERROR(MATCH(C3,F:F,0)-1,"") として下へコピーします。 K3に =IFERROR(OFFSET($C$1,SMALL(D:D,ROW(1:1)),0),"") として下にコピーします。 L3に =IFERROR(VLOOKUP($K3,$F:$H,COLUMN(B:B),FALSE),"") として右と下にコピーします。

  • SI299792
  • ベストアンサー率48% (715/1477)
回答No.1

C列を無くし、直接K列に名前を入れてもいいと思うのですが。 K3 =C3&"" L3 =VLOOKUP(K3,F:H,2,FALSE) M3 =VLOOKUP(K3,F:H,3,FALSE) 名前がない場合、エラーになります。 =IFERROR(数式,"") の形にすれば、エラーは空白になります。

関連するQ&A

  • エクセル関数の使い方について

    エクセルで在庫管理表を作成していますが、在庫数が0場合は印刷しないように隣りに印刷用の表を作成しています。 関数としてINDEX関数など使用しデータを検索、印刷用表に表示するようにしていますがうまくいきません。  サンプルファィルを添付しますのでどこに問題があるのか教えてください。

  • Excelの関数について質問です。

    Excelの関数について質問です。 添付した画像の仕入れ表のように ①の表外の日付から表内の日付を検索(表では4/2) ②日付が一致した列の仕入総数(4/2の仕入総数は43個)を表外の青枠に反映 ということを関数で行いたいのですが、 どう関数を組めば良いか分かりません。 VLOOKUP関数と他の関数を組み合わせたら出来るでしょうか。 ご回答よろしくお願い致します。

  • エクセル関数について

    エクセル関数について・・・ 名前と年齢(生年月日)が掲載されているエクセルの表から ○○歳以上の数を数えたい場合の関数があればお教え下さい。 Ex: 十勝花子 1946/04/2502 63歳 と言った感じの表です。

  • ExcelのSUMIF関数について教えてください。

    29年度の医療費申告制度の変化に対応するため予備で表を作成したいと思います。 昨年までは一緒に生活していれば一括して領収書を添付して合計を表示させればOKでしたが29年度からは一緒に生活している家族の名前と合計が必要なようです。 添付の表のように各名前、医院名、支出の3つの条件をSUMIF関数で表示させるにはどうしたらよいのか教えてください。 尚、項目の医院名、支出だけなら現在もSUMIF関数で使用しています。

  • エクセルの関数について教えてください!

    どなたかエクセルの関数について教えてください。 職場で使う在庫管理表、納入表、使用表などの書式をエクセルで作りました。 納入表のファイルから、在庫管理票ファイルへデータを反映させたいのですが・・ ファイルからファイルへの反映は可能なのでしょうか?? 可能であればその関数と入力方法を教えて頂きたいです。 あと、在庫管理表に使用者、使用日欄があるのですが、そこに入力された場合、 担当者ごとに何をいつ使ったのか使用表に反映させたいのですが・・ その関数も教えて頂きたいです。 パソコンの用語などがわからず・・うまく伝わっているかわかりませんが よろしくお願いします。

  • エクセルの関数について

    エクセルの関数について教えて頂きたいです。 業務でエクセル(2000)で作成してある集計表があります。 その集計表の数値を別BOOKに反映させたいのです。 セルA1を検索値として、セルB1とセルB2の値を返す関数はありますでしょうか? 集計表の行数は約500行、並びはランダムでセルC1を検索値としてセルC2の値を返す 箇所もあります。一つの値を検索値として二つの値を返すことが出来ずに困っています・・・ 宜しくお願いします。

  • Excelの関数についてです。

    Excelの関数についてです。 色々と説明しなければならない事があるとは思うのですが、急ぎなので簡潔に質問させて頂くことをお許し下さい。 関数を入力した後で、添付した写真のような表示が出ました。 表?みたいな表示が出たのは始めてで、何を示しているのかわかりません。 ヘルプも、何なのかがわからない為に検索出来ずにいます。 この表みたいな表示は何を指し示しているのでしょうか?どういう時に出る表示なのでしょうか? 画像が悪くて見ずらいかもしれませんが、わかられる方がいらっしゃいましたら、回答よろしくお願いします。

  • エクセルの関数を使って出来ますか?

    エクセルのVLookup関数を使って、一つのデータ一覧表のようなものから色々な帳票を作ることはやっと出来るようになったのですが、下記の作業は関数(あるいはその他のエクセルの機能)を使って出来るでしょうか。(Accessは使える環境ではありません) A. 一つのフォルダにエクセルで作った工事の見積書が沢山入っています。(ランを使って各作成者が作った見積書をそのファイルに入れるようにしています。ファイル名の付け方が各作成者バラバラでしたので、これから統一しようと思っています)。 B. 上記を検索するために、別のbookに見積書の一覧表(見積台帳のようなもの)を作って、事務員が手作業で追加しています。項目は、日付、作成者名、顧客名、工事名、金額などがあり、それぞれから検索したいと思っています。 そこで質問なのですが、 1.Bで一つの工事を検索した後、Aの中からその見積書を探し出すために、例えばBの該当の列の特定のセルをクリックすると見積書にジャンプ出来るような方法はあるでしょうか。 あるいは何か他に良い方法があるでしょうか。 2.見積書を作った後、必要な項目がBの一覧表に自動的に転記され追加されるような方法はあるでしょうか。 よろしくお願いいたします。

  • Excelの関数で、このようなことができたら教えてください。

    ExcelのVLOOKUP関数を知っているので、使っていたのですが、今回はうまく答えを導くことができません。 VLOOKUPで説明すると、「範囲」にあたる表の一番右に「検索値」があるのです。 この場合、VLOOKUP関数だと答えを出せませんが、ほかにどのような関数がありますか? 質問の内容がわからなかったら聞いてください。 よろしくお願いします。 <念のため補足しておきます> 顧客名/住所/TEL/顧客コード の順に並んでいる表(データベース)を元に、 別の場所に「顧客コード」をキーに、顧客名・住所・TELを参照したいということです。 もとのデータベースのフィールドの並びを変更することはできません。 以上

  • エクセルの関数を教えて下さい。

    エクセルの関数を教えて下さい。 例えば、A1からC10までの表があり、A列は人の名前、B列は住所、C列は年齢であるとき、「〇〇に住む△才」と指定したら、該当するA列の名前が表示されるようにしたいのですが、方法が分かりません。 (実際にはB列を選んだあとC列を選べば、該当するA列は必ず1つになります。無いという事もありません。) エクセルのヘルプを見て、INDEXとMATCHを組み合わせた関数の使い方が出ていたので、それにANDを加えて何とかならないかと頑張ってみたり、VLOOKUPとかCHOOSEとか、あれこれ探すのですが1時間たっても分からず、自分のアホさ加減にあきれるやら眠くなるやらで、とうとうまた質問させて頂くことにしました。 どなたかご存知の方が見て頂けましたら、ご教授のほどよろしくお願いします。

専門家に質問してみよう