• 締切済み

複数の条件に一致するセルの数値を返すためには

質問が分かりづらかったら申し訳御座いません。 複数の条件に一致するセルに打ち込まれた文字列を飛ばすにはどうすればよいですか? 下記の写真を参考にさせてもらいますと、 別シートのセルに【日付が3月15日が休の場合に該当者の名前】を自動的に飛ぶようにしたいです。 飛ばすセルも該当者を全て一つのセルに表示させるのではなく、該当者毎にセルを分け、横並びに表示をしたいです。 条件一致するセルの個数等は本で調べて分かったのですが、該当者の名前を飛ばすとなると分かりません。 宜しくお願い致します。

みんなの回答

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.5

 回答No.4のimogasi氏が仰っておられるimogasi方式とは、imogasi氏自身が「自称」と仰っておられる事からも判る通り、「imogasi方式」と呼んでいるのはimogasi氏だけであり、一般的には作業列を使った方法と呼ばれています。  作業列を使った方法はimogasi氏の専売特許などではなく、広く用いられている方式ですので、WEBで検索される場合には「imogasi方式」ではなく、「作業列」をキーワードにして検索される事を御勧め致します。

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

「飛ばす」という言葉は質問者の自己流でわかりにくい。 ーー 本件は、(エクセルの関数を使っての)条件を付けての「抽出」や「抜出し」問題です。 該当(行)は、複数ある場合である。 ーー データ例 Sheet1の A1:F6 A列  B列   C列 D列 E列 F列(該当番号の列)=作業列  氏名 担当 3月15日 3月16日 3月17日 該当番号 a 販売 b 設備 休 1 c 販売 d 仕入 休 2 e 販売 空いたセルに(D7に )=MATCH(DATEVALUE("2016/3/15"),$A$1:$J$1) と入れる 3月15日はC列にあるので、3が返る。 ーー F2セルに =IF(INDEX($A$1:$J$5,ROW(),$D$7)="休",MAX(F$1:F1)+1,"")と入れて、 下方向に式を複写。 結果は、上記のようにBさんの行に1、Dさんの行に2が入る。 該当者の行に、上行から連番を振るわけです。 ーー Sheet2に行って、A1,B1に見出しとして 氏名 担当 を入れる。 A2セルに =INDEX(Sheet1!$A$1:$A$6,MATCH(ROW()-1,Sheet1!$F$1:$F$6),1) B2セルに =INDEX(Sheet1!$A$1:$BA$6,MATCH(ROW()-1,Sheet1!$F$1:$F$6),2) を入れる。 結果 A1:B3は 氏名 担当 b 設備 d 仕入 このやり方の方が、式の意味が、わかりやすいと思うが、いかがでしょう。 15年前からimogasi方式と自称してこのやり方を回答している。 (imogasi方式でWEB照会すればたくさんでると思う) 欠点はSheet1のF列で(「休」みの)該当者の連続番号という作業列を使うことです。 ーー この質問タイプはよくあり、 すでに出ているような回答が毎回出るが、毎回質問者のレベルでは、関数式が 何をしているのか判らないのではないかと思う。 エクセルの関数は値は1つしか返さないのが主流なので、(配列数式という仕組みを使わないと)複数の明細を捉えて、それを対象に何とかするのがむつかしい。 コピペして、結果さえ出ればよいという考えなら、本回答は無視してください。 複写の行を余分にしてもエラーにならないようにするには、もう少し式が長くなるが省略。 また条件が2つ3つになってもF2の式を少し変えれば対応できる。 また本件のタイプは、フィルタやVBAを使えば苦労しなくて済むのだ。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.3

 回答No.1です。  失礼しました。別シートのセルに飛ばさねばならない事を失念しておりました。  尤も、別シートというだけでは、別シートのどこに飛ばさねばならないのかが判りませんし、元データがどのシートに存在しているのかもわかりませんので、取り敢えず仮の話として、元データが存在しているシートがSheet1であり、Sheet2のA1セルに日付が入力されていて、その日付が休の該当者の名前をSheet2のB1セルから右方向に向かって、全員分表示させるものとして話を進める事に致します。  まず、Sheet2のB1セルに次の関数を入力して下さい。 =IF($A1="","",IF(COUNTIF(Sheet1!$E$6:$AI$6,$A1),IF(COLUMNS($B1:B1)>COUNTIF(INDEX(Sheet1!$E$8:$AI$12,,MATCH($A1,Sheet1!$E$6:$AI$6,0)),"休"),"",INDEX(Sheet1!$D$8:$D$12,MATCH("休",INDEX(Sheet1!$E$8:$AI$12,IF(COLUMNS($B1:B1)=1,0,MATCH(A1,Sheet1!$D$8:$D$12,0))+1,MATCH($A1,Sheet1!$E$6:$AI$6,0)):INDEX(Sheet1!$E$12:$AI$12,MATCH($A1,Sheet1!$E$6:$AI$6,0)),0)+IF(COLUMNS($B1:B1)=1,0,MATCH(A1,Sheet1!$D$8:$D$12,0)))),"(該当日無し)"))  次に、Sheet2のB1セルをコピーして、Sheet2のC1~F1のセル範囲に貼り付けて下さい。  以上です。

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

>別シートのセルに【日付が3月15日が休の場合に該当者の名前】を自動的に飛ぶようにしたいです。 意味不明です。 添付されている画像は処理結果の表でしょうか? 「別シート」の見本が無いので処理方法が思いつきません。 また、「自動的に飛ぶように」と言う表現がExcelでは使わない用語なのでどのような動作なのかが理解できません。(関数での処理は設定したセルに数式の処理結果が代入されます) >条件一致するセルの個数等は本で調べて分かったのですが、 COUNTIF関数やCOUNTIFS関数で条件に合致するデータ(セルの値)の個数のことでしょうか? >該当者の名前を飛ばすとなると分かりません。 その「飛ばす」と言う動作の説明が必要です。 代入したいセルへ数式を設定して、目的の「名前」があるセルの番地から値を取り出せば良いと言うことになりますので、データ(名前)を飛ばす訳ではありません。 VBA等でプログラミングする場合でも目的のデータの位置を探し出して、代入すべきセルへ値を渡しますので、これもデータを飛ばしている訳ではありません。 質問の文言を見直して理解できる表現で説明してください。 また、元になるデータの表と処理後の表の見本を提示してください。 下記のようなテキストを貼り付けて頂けるとExcelの表に再現できます。 列,A,B,C,D,E,F,G,H,I,J,K 6行目,,人数,所属,名前,3/15,3/16,3/17,3/18,3/19,3/20,3/21 7行目,番号,,,,火,水,木,金,土,日,月 8行目,201,1,,Aさん,,休,,,,, 9行目,202,2,,Bさん,,,休,,,,

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.1

 前提条件として、D列に入力されている名前の中には同じ名前が重複して入力されている様な事がない事が保障されている場合には次の様な方法を使う事が出来ます。  今仮に、A1セルに3/15と入力されていて、B1セルから右方向に向かって全ての該当者の名前を並べて表示させるものとします。  まず、B1セルに次の関数を入力して下さい。 =IF($A1="","",IF(COUNTIF($E$6:$AI$6,$A1),IF(COLUMNS($B1:B1)>COUNTIF(INDEX($E$8:$AI$12,,MATCH($A1,$E$6:$AI$6,0)),"休"),"",INDEX($D$8:$D$12,MATCH("休",INDEX($E$8:$AI$12,IF(COLUMNS($B1:B1)=1,0,MATCH(A1,$D$8:$D$12,0))+1,MATCH($A1,$E$6:$AI$6,0)):INDEX($E$12:$AI$12,MATCH($A1,$E$6:$AI$6,0)),0)+IF(COLUMNS($B1:B1)=1,0,MATCH(A1,$D$8:$D$12,0)))),"(該当日無し)"))  そして、B1セルをコピーして、C1~F1のセル範囲に貼り付けて下さい。  以上です。

関連するQ&A

  • エクセル 複数の条件に一致

    複数の条件に一致したセルの内容によって、別のセルに別の文字を自動で表示したいのですが可能でしょうか? 詳細はこのような形で、 【シート1】       A     B       C 1      0001     3/1    有 2      0002     3/1    無 3      0001     3/2    不明 【シート2】       A     B       C 1             3/1      3/2 2      0001       ○      △ 3      0002       ×     "空欄" ・シート2のB2からC3を自動で表示できるようにしたい。 ・シート1のA列とシート2のA列が一致、更にシート1のB列とシート2の1行が一致。 ・シート1のC列が「有」の場合「○」、「無」の場合「×」、「不明」の場合、「△」、「空欄」の場合、「"空欄"」と表示。 知りうる限りの関数を合わせてみましたが、できませんでした。 どなたかいい方法を教えて頂ければと思います。 環境はXPpro、エクセル2000です。 宜しくお願いします。

  • 【Excel】日付を条件のひとつに指定してデータ集計

    Excel2003を使用しています。 Sheet1   A    B         C 1 4/1  (株)Excel    \100 2 4/1  ACCESS    \300 3 4/1  Excel(株)    \200 4 4/2  Word       \150 5 4/2  Excel       \100 6 4/3  ACCESS(有)  \200 7 4/3  Excel       \100 7 4/3  (有)ACCESS  \100 が入力されている表があります。 Sheet2に   A    B    C 1 4/2  合計値 個数 2 4/3  合計値 個数 Sheet2のA1セルに日付(仮に4/2とします)を入力したら、Sheet1にある条件に一致する日付を検索し、尚且つ、部分一致する文字列(仮にExcelとします)を検索し、両条件に一致したC列の合計を Sheet2のB1セルに表示させる様にしたいのですが、どのようにすればいいでしょうか? 又、上記同様で Sheet2のA1セルに日付(仮に4/3とします)を入力したら、Sheet1にある条件に一致する日付を検索し、尚且つ、部分一致する文字列(仮にACCESSとします)を検索し、両条件に一致した個数を Sheet2のC2セルに表示させる様にしたいのですが、どのようにすればいいでしょうか? 関数で試してみたのですが、うまくいかなかったので、質問させていただきました。 よろしくお願いします。

  • 複数の条件に一致するセルの個数を複数の列から数える

    Excelにて複数の条件に一致するセルの数を複数数える方法を模索しています。 画像における右の表には左の表にてA1とB1、A2とB2、A3とB3、A4とB4のそれぞれで一致した個数の合計を入れたいのです。 DSUMでは検索条件の表がうまく作れませんでした。 どなたか知恵をお貸しください。

  • エクセル マクロ 複数条件と部分一致

    1対多数の検索 と 複数条件(部分一致と全部一致)のためコードがよくわかりません。 例えば、xlpart、Match、Index、Offset を使い下記の処理ができる方法はありますでしょうか。 下記A~C列のリストがあります。(10000行程度) (Sheet1)   A       B      C    1 0075926  VU    SerialA  2 0623450  VU     SerialA ・ 3 0002356  WM    SerialA  4 0157592  WM    SerialB ・ 5 0023456  WM    SerialB (・・・以下10000行程度続く) (1) Sheet2の検索値A1に部分一致するものを、Sheet1のA列から選ぶ。 (2) 複数の検索結果値がでてしまうので、さらにSheet2のB1と「全部一致」する ものをSheet1のB列から選ぶ。 (3) 上記(1)、(2)の条件を満たすものをSheet1のA列から1つ選ぶ。さらにその行の C列を転記する。(複数該当する場合は上位記載のものでかまいません。) ※数値はエクセルの書式設定で文字列にしてあります。 (検索前のSheet2)   A       B        C 1 7592    WM 2 2345    VU (以下10000行程度続く) (検索後のSheet2)   A      B         C     D 1 7592    WM    0157592  SerialB      ※7592は、Sheet1のA4に該当する。 2 2345    VU    0623450   SerialA     ※2345は、Sheet1のA2に該当する。 (以下10000行程度続く) 部分一致の後の全部一致の複合的なコードの組み方がわかりません。 繰り返し処理(ForやLoop)をよく理解していないからだと思います。どなたかご教示くださいますでしょうか。大変困っておりよろしくお願いいたします。(WindowsXp、Office2003)

  • 複数の条件に一致するセルを転記したい

    二つの条件に一致するセルの値を別のシートに転記したいです。 具体的には 表1 日付 名前 場所 1/1  A   横浜 1/1  B   渋谷 1/2  A   新宿 のデータを 表2    A  B 1/1 ☆ ★ 1/2 ★ ★ 表1にデータをもとに 表2の☆部分に横浜と返されるようにしたいです。 また★のところにも返されるようにするにはどうしたらよいでしょうか?

  • 複数の条件を満たすセルの個数

    同時に複数の条件を満たすセル(行)の個数を知りたいです。  ABC 1●●○ 2○○○ 3●○● 4○○● 5●○○ たとえばB列が「○」でC列が「○」の 両方の条件を満たしている件数を調べるのは どういう関数を使えばよいのでしょうか。 「COUNTIF」とオートフィルタをあわせたような 感じなのですが、COUNTIFは複数の条件をいれられないのでしょうか。 どなたか教えてください。

  • 複数条件抽出をVBAで

    excelの複数条件抽出をVBAでやりたいので教えてください。 エクセル2003で複数条件抽出をしたいと思っています。 dateのシートに、A列:日付、B列:名前、C列:金額があります。 それを1というシートに、日付と名前の2つの条件が合致している金額を抜き出したいと思っています。 抜き出すのは0601&AさんをA5セル~A20       0601&BさんのはB5~B20へ ということは可能でしょうか? もしよろしければ教えていただければ助かります。 'date'シート 日付   名前  金額 0601 Aさん  100円 0601  Aさん  120円 0601  Bさん  150円 シート'1' 0601&Aさん   0601&Bさん 100円           150円 120円 どの人がやってもボタン1つで実行できるようにしたいために、 VBA出できればと思っております。

  • エクセル複数条件一致の数式

    質問失礼します。 下記のエクセルデータから、E列のセルに、条件にあわせて5か6、もしくは空白を表示させる数式を作りたいと考えています。 条件として セルE2に5を表示さる場合 D2がa4の時、A列から、同じa4を検索し、この場合は、行10と行11が該当します。 その該当する行から、 セルD2の文字列a4がある行のA列のセル、この場合は、セルA2のa1 と文字列が一致するセルB11の11行目が選択され、その行にあるC列の数字を、E2セルに表示させたいです。 E列に入れる数式は作ることが可能でしょうか? 色々試してみましたが、どうしてもうまくできませんでした。 よろしくお願いします。   A  B  C   D    E 1        2 a1  a2   5    a4   5 3 a1  a3       a3   6 4 a1  a1       5 a2  a3   5    a1   5 6 a2  a1       7 a3  a1   6    a2   5 8 a3  a1       a4   6 9 a3  a4   5    a2   5 10 a4  a3   6    a3   5 11 a4  a1   5    a2

  • excel2000 で条件に一致するセル検索

    二つの条件に一致するセルを検索する方法について、ご指導お願いします。 C列 NO D列 作業日 E列 作業NO とあります。 D2セル と E2セルに検索したい、作業日と、作業NOを入力して、G2セルに 該当するNOを、写真のように表示させたいです。 検索条件といたしまして、作業NOは完全一致ですが、作業日は検索条件日から6日以内にあるかどうかです。また、作業日と作業NOの並び昇順、降順ではなくランダムです。 G2セルにどういった関数を入れればいいか、アドバイスを頂ければ幸いです。 よろしくお願いいたします。

  • 完全一致したら複数のセル代入するマクロは?

    エクセルのSheet1のa列にある文字列と、Sheet2にあるa列にある文字列と完全一致したら、前者のセルの右隣から3番目までのセルに、後者のセルの右隣から3番目までの文字列を順に代入するマクロをお教えください。単純にvlookup関数を使えばいいのですが、VBAで行いたいのです。複数のセルに順に代入するのに苦慮しています。よろしくお願い申し上げます。

専門家に質問してみよう