• ベストアンサー

エクセル VBAで、条件に当てはまるものをすべて表示させる方法を教えてください。

こんばんは。大変お世話になっています。 エクセルでシフト表を作っています。 職員は100名ほど、勤務時間の種類は8種類ほどあります。 A列に名前が並び、B列の2行目から日付が並んでいます。       1日  2日  3日  4日  ・・・ 佐々木   A   休   C    A 佐藤    休   D   D    B 鈴木    B   B   A    休 田中    休   D   D    D 別のシートに、その日の勤務職員をシフト別にそれぞれ表示させた一覧表を作りたいのです。 =LOOKUP(F3,B2:B5,A2:A5)  (F3=シフトコードが入っている) とLOOKUP関数で入れてみたのですが、一番最初の反応する名前が表示されるだけで、すべての対応者の名前は出ませんでした。 どうすればできるでしょうか? 関数ではダメだとするとVBAでしょうか? 教えてください。 よろしくお願いします。

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

  • ベストアンサー
  • pc_knight
  • ベストアンサー率66% (52/78)
回答No.4

VBAなら大枠はこんな感じでしょうか。 Sub Test() Dim s, clm, rw As Integer Sheets("シフト表").Range("b2:af5").Clear shift = Array("", "A", "B", "C", "D", "休") For s = 1 To 5 For clm = 2 To 32 For rw = 2 To Range("A65536").End(xlUp).Row If Cells(rw, clm) = shift(s) Then Sheets("シフト表").Cells(s + 1, clm).Value = Sheets("シフト表").Cells(s + 1, clm) & Cells(rw, 1) & Chr(10) Next rw Next clm Next s End Sub 予め「シフト表」というシートを作って、その1行目に「1日,2日,3日,4日,  ・・・」を、A列に「A,B,C,D,休」をインプットを手作業で行ってね。(VBAでも可能ですが・・)

その他の回答 (3)

  • 11369
  • ベストアンサー率29% (20/67)
回答No.3

ピポットテーブルはいかがでしょうか?(A列には”名前”というフィールド名を追加して下さい) (1)[データ]-[ピポットテーブルとピポットグラフレポート]を選択し、表示されたダイアログで、 分析するデータのある場所を、Excelのリスト/データベース、作成するレポートの種類をピポットテーブルを選択。次へ。 (2)使用するデータの範囲を、氏名とシフトがある範囲を指定。次へ。 (3)作成先を新規。完了 ピポットテーブルのフィールドリストについては、表示したいものをダブルクリックすれば追加されます。 1日の勤務シフトAの人を表示したければ、1日のフィールドオプションをAとすればOK。

orennji1111
質問者

お礼

ご回答ありがとうございます。 早速試してみたのですが名前を表示させたい場所に、数字ばかりが出ます。 名前を表示させたいのですが・・・。 初心者で申し訳ありません。

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.2

マルチポストはルール違反です。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=2168510 >その日の勤務職員をシフト別にそれぞれ表示させた一覧表を作りたいのです。 希望する表示例を提示してください。

orennji1111
質問者

お礼

マルチポストの件、申し訳ありませんでした。 VBAで質問した方が良いとアドバイスいただいたもので・・・。あちらを先に締め切り登録すべきでした。以後気をつけます。教えて下さってありがとうございました。    A列 B列     C列 1行      1日     2日 2行   A  田中     鈴木         鈴木     佐藤         佐藤 3行   B  葉山     平野         小林     小林         夏樹     田中 4行   C  高橋     佐々木         小村     近藤 5行   D  藤村     三谷         平野     影山 こんな感じが希望なのですが・・・。 よろしくお願いします。

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

シフトコードとは、質問の表で使われているA~Dのことですか? それならば、表を選択し、メニューの「データ」、「並び替え」で、調べたい日付の列を最優先キーにして並び替えをしたらいいのではないでしょうか?

関連するQ&A

  • エクセルで、ある条件で検索し、対応するデーターをすべて表示させる方法を教えてください。

    こんばんは。大変お世話になっています。 エクセルでシフト表を作っています。 職員は100名ほど、勤務時間の種類は8種類ほどあります。 A列に名前が並び、B列の2行目から日付が並んでいます。       1日  2日  3日  4日  ・・・ 佐々木   A   休   C    A 佐藤    休   D   D    B 鈴木    B   B   A    休 田中    休   D   D    D 別のシートに、その日の勤務職員をシフト別にそれぞれ表示させた一覧表を作りたいのです。 =LOOKUP(F3,B2:B5,A2:A5)  (F3=シフトコードが入っている) とLOOKUP関数で入れてみたのですが、一番最初の反応する名前が表示されるだけで、すべての対応者の名前は出ませんでした。 どうすればできるでしょうか? 教えてください。 よろしくお願いします。

  • <EXEL>時間帯別勤務人数のカウント

    バイトさんのシフト管理の際、時間帯別に勤務人数をカウントしたいのですがうまくいきません。 A列 B列 C列 D列 1     11/1  11/2  11/3 2 ○さん 8~17 11~20 8~13 3 ○さん 11~20 8~13 13~20 という表ならば、SUMPRODUCT関数を使い、8時台は2人、9時台は2人、10時台は3人・・・とカウントできたのですが、 上司から上記表が見にくいとして「8時~17時シフトはA」「11時~20時シフトはB」と置き換えて表記をしてくれと言われました(以下のような表になります) A列 B列 C列 D列 1    11/1  11/2  11/3 2 ○さん  A B B 3 ○さん C D E AからFまで置き換えた勤務区分があります。どのような関数を使えば時間帯別勤務人数のカウントができますでしょうか? エクセルは2013、日付別個人シフト表と勤務区分表、時間帯別勤務人数の表すべてシートは一つにまとめたいです。 要領を得ていない質問でしたら申し訳ありません。足りない情報があれば追記いたします。 どなたかご教示ください。

  • エクセルの関数で2つの条件に合うものを探す。

    エクセルの関数で下記のことをしたいのです。 表(1) T>=0.6  0.6>T>=0.3  0.3>T>=0.15 U<2   A     B       C 2<=U<3  B     B-C     D 3<=U<4  C      C      D 4<=U<6  D     C-D     D 6<=U    E      D      D 別の表(2)に U   T         1.5  0.3         0.9  0.8             5.9  0.13         ・   ・         ・   ・ とあります。 そのためUの値とTの値で表(1)のAからE値を抽出し別の表にAからEを表示したいのです。エクセルの関数(IF,AND,LOOKUP等)を試してみたのですがうまくいきません。できるだけエクセルの関数のみで、よい方法があれば教えてください。よろしくおねがいします。     

  • EXCELでLOOKUPがうまくいきません。

    EXCEL2000です。解説書を見ながら、検索関数のVLOOKUPと LOOKUP関数を比較していたのですが、VLOOKUPだとうまくいくのですが、LOOKUPだと望むべき答えが出ません。D列にC列の値をA1:B4の表から参照するという簡単なものです。 この式で、単純に答え(D欄)が1、2、3、4となるべきだと思うのですが・・以下の具合です。  A B C D 1○ 1 ○ =LOOKUP(C1,$A$1:$A$4,$B$1:$B$4)答4  2× 2 × =LOOKUP(C2,$A$1:$A$4,$B$1:$B$4)答2 3△ 3 △ =LOOKUP(C3,$A$1:$A$4,$B$1:$B$4)答3 4□ 4 □ =LOOKUP(C4,$A$1:$A$4,$B$1:$B$4)答2 どこがおかしいのでしょうか?よろしくご指導ください。

  • Excel(数値の非表示)

    日々の出費を管理する表を作っています。 A列は日付、B列C列D列は項目別の数値 E列はその日付の数値の合計(B1+C1+D1) F列はその日までの累計(A列ではE1=F1、B列以降はF1+E2) この表の翌日以降のE列、F列の数値を表示したくないのですがどうしたらよいでしょうか? E列に関しては、翌日以降はB列C列D列が未入力となり必ず0が入るので、オプションで「ゼロ値」のチェックをはずすことで対応しようと考えているのですが問題ないでしょうか? F列に関しては数値が0にはなりませんので関数を使うことになるかと思うのですが、それが分からず困っています。 初歩的な質問と思いますが宜しくお願いします。

  • エクセルで二つの条件での合計値

    こんにちわ。 関数でいろいろやってみているのですが、どうしてもうまくいきません。 シート1に一覧表があります。A列にコード番号(約500番)、B列に名前、C列に種類わけ(10種類・リストにしています)、D列に数字が入っています。これが約5000行あります。 これをシート2に、コード番号(A列)及び種類(C列)が一致するものの数字(D列)の合計を出した、自動更新される集計表を作りたいのです。 しかも、C列の種類わけしているものの中から、2つずつペアリングしての数字(D列)の合計を出したいのです。 ピボットテーブルやオートフィルターでひとつずつ出していってもいいのですが、次々と追加で行が増えていくので、その都度集計表を更新していくのもタイヘンだと思い、自動的に更新されるといいなと思っています。 説明不足なことがありましたら、返答します。 相当困っています。 どなたか助けてください。 よろしくお願いします。

  • Excel 重複値を検索し全て表示させる関数

    Sheet1の1行目には見出しがあり、A列とB列の2行目から下にデータが入っています。(約200行) A列     B列 田中    13 山本     8 谷口    11 鈴木    6 田中    10 佐々木    9 奥村     15 佐々木   15 佐々木   20 ・ ・ ・ Sheet2のA列1行目から下には別のデータが入っています。(約600行) A列 太田川 山村 田中 多賀先 鈴木 奥村 幸田 ・ ・ ・ Sheet2のA列のデータと完全一致するデータ(名前)をSheet1のA列から探して、同じ名前があれば、その隣のB列にある数値をSheet2のB列に貼り付ける(B列が重複の場合、下に張り付ける。但し、A列の名前は1行目は表示、2行目からは表示、空欄でも構いません)。 見つからない場合はSheet2のB列は空欄のままです。 Sheet2 A列      B列 太田川      山村 田中    13        10 多賀先 鈴木     6 奥村    15 佐々木   9       15       20 幸田 ・ ・ ・ 何卒、ご指導の程宜しくお願い致します。

  • エクセルで、2つの条件に一致する値を返す方法 教えてください

    A B C D E F 1 日付 分数 2 Aさん Bさん Cさん Aさん Bさん Cさん 3 3/2 2/12 3/15 9 10 10 4 3/4 2/12 3/15 2 3 3 5 3/4 2/12 3/15 30 30 30 6 3/3 2/12 3/15 1 1 2 7 3/4 2/12 3/15 3 5 4 8 3/4 2/12 3/15 29 29 29 上記の表より 列A,B,Cは日付 列D,E,Fは分数です ・3行目のG列にD3:F3の範囲で最小値であり、A3:C3の範囲で最新の日付(最大値)である時の 日付を表示したい。 G3のセルを下に引っ張り各行ごとに値を表示したいです。 関数(式)を教えてください。

  • エクセル関数

    エクセル関数を教えてください。 下記のシフト表のようなものを作成しているのですが、 【Sheet1】    A列    B列  C列   D列 ・・・・  1 氏名    4/8   4/9   4/10・・・・ 2 勤務者名  ●   △    ■ B列以降は連続した日付で 2行目は出勤日に記号を入力します。 記号は仕事種類によって違うので、種類はいろいろあります。 ちなみに、【Sheet1】のひな形は変更不可です。 この表を元に【Sheet2】に勤務者名を入力すると、 最初に出勤した日と、最後に出勤した日を表示させたいのです。 IFやVLOOK関数を使うのかな?と思いいろいろやってみたのですが、 うまくできませんでした。。。 ご協力よろしくお願いします。  

  • エクセルVBA 条件付整数組合わせ表示方法

    整数の組み合わせを表示する方法をおしえてください。 1~6の整数をつかって A<B<C かつ D<E<F となるような数字の組み合わせを A列 B列 C列 D列 E列 F列 1 2 3 4 5 6 1 2 4 3 5 6 ・ ・ ・ となるように順番に表示していくには どうすればよいのでしょうか?

専門家に質問してみよう