• 締切済み

EXCEL関数 条件一致の値の反映について

下記のようなデータがあります。 データは1セル毎に「氏名」「所属」「役職」が入力されています。 織田信長 調達部 1課長 豊臣秀吉 販売部 2課長 徳川家康 企画部 係長 宮本武蔵 企画部 2課長 源頼朝 販売部 主任 平清盛 販売部 主任 このデータを基に別シートで、「所属」「役職」を入力すると「氏名」を出力したいと思っております。 例えば、A1セルに「販売部」B1セルに「2課長」と入力するとC1セルに「豊臣秀吉」を出力する という具合です。 OFFSET と MATCH 関数である程度までは上手くいくのですが、同じ「所属」に同じ「役職」があると最初のデータしか反映できません。 作業セルになんらかの数式をいれれば、なんとかなりそうな気がしますが、良い考えが思いつきません。 ご指示の程よろしくお願いします。

みんなの回答

  • shiotan99
  • ベストアンサー率68% (140/203)
回答No.7

No.4です。 > 別シートで、「所属」「役職」を入力すると「氏名」を出力したい 「別シートで」を見落としていました。 一応、訂正しておきますね。 【仮定】 元データが Sheet1のA列からC列にあり、1行目が見出し、データは2行目から。 Sheet2の A1に「所属」、B1に「役職」を入力すると、C1以下に該当する「氏名」をすべて抽出。 作業列は、Sheet1の F列を使用。 Sheet1のF2に =IF(AND(B2=Sheet2!$A$1,C2=Sheet2!$B$1),ROW(),"") を入れ、元データの最終行までフィルコピー 今後もデータが増えることを考えて、多めにコピーしておいた方がいいかもしれません。 作業列が邪魔なら非表示にしてください。 Sheet2のC1に =IF(COUNT(Sheet1!F:F)<ROW(A1),"",INDEX(Sheet1!A:A,SMALL(Sheet1!F:F,ROW(A1)))) を入れ、適当に下にフィルコピー ROW(A1)の A1は、先頭がどのセルであってもそのままにしておいてください。 以上で、質問の要件は満たしていると思います。 「配列」の知識などは特に必要ありません。 以下、蛇足です。 No.4で余計なことを書かなければよかったのでしょうが、No.5さんはどうもわたしのコメントを曲解されているようです。 わたしは配列数式を使うべきではないと言っているのではありません。 配列数式が便利なことは承知しておりますし、実際に多用もしています。 ただ、配列数式が使える場面であっても、作業列を1列使うだけで数式がシンプルになれば、数式のメンテひとつとってもよりベターな場合があります。 状況に応じて使い分けたほうがいいのではないかという個人的な感想を述べたまでです。 会社などでいろいろな人が使うケースなどは特にそのように感じます。 もちろん上記の方法を押しつけるつもりはありませんし、どんな方法をとられるのかは質問者さんが決めればいいことです。 選択肢のひとつとして、こんな方法もあるのかと参考にしていただければ幸いです。

全文を見る
すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.6

>作業セルになんらかの数式をいれれば・・ そのとおりと思います。 私は同じ型のことを何度も回答してますが。(imogasi方式?) 例でやって見ます。 A1:C8に下記データがあるとします。 A2:B8がデータです。 A1とB1は探す条件の文字列を入れるとします。 C列は下記に説明する関数式の結果です a x a x 1 s y a x 2 a x 3 d u f v g x C2に=IF(AND(A2=$A$1,B2=$B$1),MAX($C$1:C1)+1,"")と入れて C8まで式を複写します。 後は、C列の1,2、3・・の連続数字を、ROW()関数で発生させる連続数と関連付けて MATCH関数を使って行を割り出し、OFFSETやINDEXで値を 拾います。列数だけ、列を示すオフセット値を増やして拾います。 私の過去の回答例をご覧ください。

全文を見る
すると、全ての回答が全文表示されます。
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.5

#4 さんの >ご質問のケースで「配列数式」を使うメリットはあまり感じられません。 一応、配列数式を書いた私としては、コメントをいれておきます。 配列数式は、PCの性能やメモリ、またVersionにも依存するようです。以前、調べた結果ですと、内部的な配列の制限が、Excel 2000 ですと、5500個程度です。それ以上のVersion では、この制限はなくなりました。全列・全行を指定しなければ可能なはずです。 また、ワークシートの配列数式の場合は、セルが5500程度ということではなく、累計で参照セルが、5500 どまりですから、縦横のマトリックスで検索する場合は、それは500行や、ひどいときは、100行で一杯になることもあります。 それ以外の場合は、私はひじょうに便利だと思いますね。 ただ、ある程度の大きさの場合は、簡単なイベント型のマクロを使ったフィルタ・オプションを用いれば、良いのかと思います。

全文を見る
すると、全ての回答が全文表示されます。
  • shiotan99
  • ベストアンサー率68% (140/203)
回答No.4

こんにちは~ 1つの数式でまとめようとすれば 「配列数式」になると思いますが、「配列数式」にすると、 ・数式が複雑になる ・データ量が多いと重たくなる というデメリットがあります。 個人的には、ご質問のケースで「配列数式」を使うメリットはあまり感じられません。 作業列を使った方がシンプルです。 A1に「所属」、B1に「役職」の検索値 「氏名」「所属」「役職」の一覧が、それぞれ F列・G列・H列 にあるとして。 作業列を仮にJ列とします。 一覧の1行目が見出しだとすれば、J2に =IF(AND(G2=$A$1,H2=$B$1),ROW(),"") と入れ、一覧表の最終行までフィルコピー C1に =IF(COUNT(J:J)<ROW(A1),"",INDEX(F:F,SMALL(J:J,ROW(A1)))) と入れ、適当に下にフィルコピー ご参考まで。

全文を見る
すると、全ての回答が全文表示されます。
  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.3

通常は従業員コード等の固有のキーを検索値にします。 上記の例だと"販売部","主任"が二人ということでこれをキーにしたい場合は "1主任","2主任"の様に固有になるような設定が必要です。 例 上記の表がSheet1!A2:C7にあるとして D2=B2&C2&TEXT(SUMPRODUCT((B$2:B2=B2)*(C$2:C2=C2)),"000") これをD7までコピー C1=IF(COUNTIF(Sheet1!$D$2:$D$7,$A$1&$B$1&"*")>=ROW(),LOOKUP($A$1&$B$1&TEXT(ROW(),"000"),Sheet1!$D$2:$D$7,Sheet1!$A$2:$A$7),"") これを表示したい人数分下方にコピー

全文を見る
すると、全ての回答が全文表示されます。
  • fly_moon
  • ベストアンサー率20% (213/1046)
回答No.2

キーというのを聞いたことがありますか? 例えば、 1 りんご 100円 2 みかん 80円 3 バナナ 30円 とあったとすると、1といえば[りんご 100円]、3といえば[バナナ 30円]とわかりますよね。 それが、 1 りんご 100円 1 みかん 80円 1 バナナ 30円 だとして、わたしがあなたに、「1を一つ下さい」と言ったらあなたは何を渡してくれますか?困りますよね?コンピューターも同じで、この場合とりあえず、[りんご 100円]を適用しているだけです。 この1とか2とかがキーと言います。キーはその一つのレコード(りんご 100円などの情報)に一つづつオリジナルなものでないといけません。それを使った検索にしなければならないのもおわかり頂けますよね? この場合なんですが、コードというものをキーにされれば、うまく検索されると思います。 例えば >源頼朝 販売部 主任 なら HS01 >平清盛 販売部 主任 ならHS02 >織田信長 調達部 1課長 ならCK11 というようにコードをオリジナルなものにして(単なる数字でもよろしいかと思いますが、入力時に覚えていられないので、意味のあるアルファベットを利用されるほうが良いかと思います)、そのコードを入力すると、所属、役職、氏名が表示されるというような形が一番よろしいかと思います。

全文を見る
すると、全ての回答が全文表示されます。
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんにちは。 関数で処理にするには、データベース関数か、配列の知識がないと出来ません。    F    G 1 販売部  主任 と置いたら、 A1:C7 までの中で、項目行が、1行目にあるとして、実際の氏名、所属、役職の内容は、2行目から始っているとしています。 =IF(SUMPRODUCT(($B$2:$B$7=$F$1)*($C$2:$C$7=$G$1))<ROW(A1),"",INDEX($A$1:$A$7,SMALL(IF(($B$2:$B$7=$F$1)*($C$2:$C$7=$G$1),ROW($A$2:$A$7),""),ROW(A1)),)) 配列数式ですから、式を、一旦入力したら、F2を押して、『ShiftとCtrlを押しながらEnterキー』を押して、配列数式として再確定させます。 後は、必要なだけフィルダウン・コピーします。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Excel関数のデータ参照について教えて下さい。

    Excel関数のデータ参照について教えて下さい。 営業店の資料を作成していますが、次のような関数はどうするのでしょうか。 A1セルにID,B1に営業店と課を反映する場合で、別シートにあるIDをA1に入力するとB1に対応した 営業店と課が表示されるようには。 (例)  sheet1     A     B 1 100200 東京支店販売課 2 100201 新宿支店営業課   sheet2    A     B 1 ID 営業所担当課 2 100200 東京支店販売課 3 100201 新宿支店営業課 通常はVLOOKUP関数等使用すると思いますが、参照セルを表示せずに、ダイレクトに入力したいのですが。 sheet2のA2のIDをsheet1のA1に入力するとsheet2のB1の表示がsheet1のB1に反映させる方法です。    よろしくお願いします。

  • Excel2007 マクロで並び替えをしたい

    エクセルシートに、A列から順に 部-課-担当-氏名コード-氏名-年齢 というデータが入っています。 部・担当にはデータが入っていますが、課は空白の方も居ます。 このデータを、こちらが決めた規則によって並び替えるマクロを作りたいと思っています。 (1)まず、A部⇒B部⇒C部⇒D部の順で並べる (2)次に、E課⇒F課⇒G課⇒H課の順で並べる (3)さらに、I担当⇒J担当⇒K担当⇒L担当⇒M担当の順で並べる (4)最後に、特定の人物の氏名コード(数字)を指定して並び替える。O⇒P⇒Q⇒R(管理者を各担当の一番上に持ってきたい為) 要するに、(1)⇒(2)⇒(3)⇒(4)の優先度で、ユーザー設定リストによる並び替えを行いたいです。 初めは「マクロの記録」を利用しようと思ったのですが、 ・並び替えを行うシートの列の並びが毎回同じではない ・見出し行の名称も微妙に違う場合がある ・データの数(行数)が毎回違う よって、できれば毎回並び替えを行う列を、部分一致による検索で指定できればと思います。 (例:見出しは必ず1行目にあるものとし、部分一致検索で「部」が該当したセルの列を優先度(1)として並び替える。以降同じように課⇒担当⇒氏名コード順で検索を行い、並び替える) その際考えられる問題点として、「課」が空白になっている場合、並び替えが思い通りにならないという事です。(確か空白行は一番最後になりますよね。) よって、まずは「課」の列にある空白セルに何らかの文字・・例えば-等を入力する必要があると思います。 以上の事をマクロで行えるでしょうか? マクロ初心者なのですが、職場にマクロを使える方がいない為どこから手をつけていいか悩んでいます。 こういう方法使ったらいいんじゃない?とか大体でもいいので教えていただければ幸いですm(_ _)m

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

    関数勉強しはじめたばかりの初心者です。教えていただきたい事があります。 sheet1に基礎データを入力しておきます。例えば・・・ 番号  部活名 1    野球部 2    サッカー部 3    ソフトボール部 4    水球部 5    バスケット部 sheet2に名簿を作ります。  氏名   番号 部活名 ○○○○  1 △△△△  5 ××××   2 □□□□  3 ※※※※  4 以上のように準備して、sheet2の番号を打ち込めば、部活名が自動的に入力されるようにしたいのです。 こういう作業はExcel関数でできるのでしょうか? よろしくお願いします。

  • Excel VBA で条件を満たしたセルの値を別のシートに貼り付けるには?

    VBA初心者です。700行くらいあるリストの中から所属別の名簿を作りたいのですが、マクロを使えば簡単に出来ますか? データは、 A列にNO.、B列に氏名、C列に所属 となっていて、C列の所属ごとにSheet2,Sheet3・・・にB列の氏名だけの名簿を作りたいのです。 例えば、C列が”総務課”の人の氏名(B列)をSheet2のCell("A2")から行方向に、C列が”会計課”の人の氏名はSheet3のCell("A2")から行方向に という感じです。 Do~Loop を使ってみたり、If~Then を使ってみたりするのですがうまく貼り付けられません。 データの最終行が変化するので範囲の指定もよく分かりません。 どなたか教えて下さい。

  • 英語での役職、部署名

    英語で名刺を作らなければならないのですが、以下の役職、部署名は英語に訳すとどのようになるのでしょうか。わかるのだけでも構いません。教えていただけますでしょうか。 (部署名)  販売部  企画制作部 (役職名)  販売スタッフ  システム管理主任

  • Word内の表の文字をExcelへ自動でコピー

    Word内全ページの表の記載文字をExcelへ自動でコピーするのは可能でしょうか? Word内に表があり、その列ごとを指定し、Excelの指定した列へ自動でコピーする方法はあるでしょうか? Wordは数百ページあり、これを手作業で行うのは時間が掛かりとても面倒です。 【例】 Word 氏名  社員番号  所属   役職 鈴木    100   営業部  主任 伊藤    200   総務部  係長 高橋    300   製造部  一般 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ Excel 社員番号  氏名  役職  所属   100    鈴木  主任  営業部   200    伊藤  係長  総務部   300    高橋  一般  製造部

  • Excel関数について

    Excelのバージョン:[2010] みなさん、お世話になります。 リストデータを作成したのですが、入力セルに文字を入力した時に、リストデータの中から該当するコード番号を出力する方法が判りません。 例:A1に"重機"などと入力した時に、B1のセルが、文字列"A00123"に変わる。また、重機と名前が入っているコード番号が全て表示されるようにしたいのですが・・・。 自分のスキルの無さ、理解力の乏しさに情けなくなります。しかし、差し迫ってくる時間があり質問をさせていただきました。みなさんのお知恵をお借りしたく思います。 コード番号|品目 A00123 |重機 A00132 |重機や・・・ お忙しいとは思いますが、何卒よろしくお願いいたします。 補足 先ほど、VLOOKUPという関数を使い行いましたが、やはりダメでした。 =VLOOKUP(G3,B2:C192,1,1) 文字を入力すると違うコード番号が表示され、かつコード番号が下一桁表示されませんでした。 A0012・・・という具合でした。

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

    画像のような縦列BCに氏名、数字が入力されているデータがあります。 そのデータを一つの氏名にまとめ、数字はその人の平均値にして出力する関数はありますでしょうか。 以上、宜しくお願い致します。

  • Excel関数で、長さ0の文字列(

    Excelで、両軸対数の散布図(X列,Y列)を作成していますが、X列,Y列ともに、データがない部分があります。 X,Yともに他のデータの関数になっており、 データが不適格の場合、空白セルを入力しています。 しかし、空白セルとして、("")を入力すると、 X,Yの散布図が、散布図にならず、困っています。 具体的には、 IF(Y>0, Log(Y),"") といった感じです。 恐らく、空白セルが長さ0の文字列("")と解釈されているからだと思います。 このセルをDeleteで削除すると、グラフはうまく表示されるようですが、それでは、関数が機能しません。 そこで、関数の出力で、完全な空白セルをセルの値にする方法を教えてください。

  • エクセルで複数の条件を抽出し自動的に別シートに反映する方法を教えてください。

    こんばんは。教えてください。 元データ(sheet1)を更新するたび 2つの条件にあったデータを 別シートに自動的に抽出したいので 適した関数がありましたら教えてください。 ◇シート1◇ ※元データ  A      B     C     D     F 1 氏名 役職 部署 年齢 移動時期      2 山田 社員 開発 45  未調整 3 田中 社員 人事 42  4/1~ 4 鈴木 派遣 企画 30   5 高橋 役員 人事 50  未調整 6 坂野 社員 企画 33  未調整   7 井上 派遣 企画 29  未調整 ◇シート2◇ ※部署が人事で移動時期が未調整の人のみ抽出  A      B     C     D    F 1 氏名 役職 部署 年齢 移動時期  2 高橋 役員 人事 50  未調整 補足 ・元データ(シート1)はこれからもデータを追加するので  その度、シート2、シート3もそれぞれ自動で反映されるようにした いです。 ・マクロ、VBAは知識がないので  関数で作成したいです。 ・できるだけエラー(#N/Aなど)表示されないようにしたいです。 説明が不十分で伝わりにくいかと思いますが よろしくお願いします。

このQ&Aのポイント
  • MFC-490CNのクリーニングがうまくできない場合、お困りですね。解決方法をお伝えします。
  • MFC-490CNのクリーニングに関するトラブルやエラーが発生していますか?対処法をご紹介します。
  • MFC-490CNのクリーニングについてご相談ですか?こちらではお悩みを解決する方法をご案内します。
回答を見る

専門家に質問してみよう