• 締切済み

エクセルで月ごとの複数データを別シートに抽出したい

エクセル2007で、sheet1に元となるデータがあり、その中からsheet2に月毎に列でまとめて、しかも日付順に並ばせたいと思っています。 まず、下記がsheet1のデータ例です。 -------------------------------------------- [sheet1]    A列     B列          C列      D列 1  名前     レンタル希望    血液型    担当 2  山田太郎  2013/9/12     A型      営業  3  鈴木花子  2013/8/1      B型      開発 4  山下健    2013/9/10      O型     広報 -------------------------------------------- 上記のような、随時追加・修正されていくデータです。 それを、下記のようにsheet2にB列(レンタル希望日)の月で検索し、B列の日付順でA列(名前)とB列(レンタル希望日)を随時表示させていきたいです。 -------------------------------------------- [sheet2]    A列      B列         C列      D列 1  8月レンタル            9月レンタル 2  名前      レンタル希望   名前     レンタル希望 3  鈴木花子   2013/8/1     山下健    2013/9/10 4                     山田太郎   2013/9/12 -------------------------------------------- このような形でsheet1を変えたものをレンタル希望日を基点にとして 随時並ばれていて、この月はこのぐらいの希望がこの人からあるのか(あったのか) というのがわかるような管理表を作りたいと思っています。 フィルタオプション等をいろいろ試してみましたがうまくいかず、 また、なかなかマッチするQAが見つからず困っています。。。 どうかよろしくお願いします!

みんなの回答

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.5

こんばんは! 極端にデータ量が多い場合はおススメしませんが・・・ ↓の画像で説明します。 上側がSheet1、下側がSheet2とします。 Sheet2のA1セル(B1セルと結合しています)とC1セル(D1セルと結合)の表示形式に手を加えます。 A1~C1セルを範囲指定 → 右クリック → セルの書式設定 → 表示形式タブ → ユーザー定義 → G/標準 と表示されているところを消して 0月レンタル と入力し、OK そしてA1・C1セルには単に月の数値のみを入力します。 次にSheet2のA3セルに =IFERROR(INDEX(Sheet1!A$2:A$1000,MATCH(SMALL(IF(MONTH(Sheet1!$B$2:$B$1000)=$A$1,Sheet1!$B$2:$B$1000),ROW(A1)),Sheet1!$B$2:$B$1000,0)),"") これは配列数式になりますので、Shift+Ctrl+Enterで確定! この画面からコピー&ペーストする場合はA3セルを選択 → 数式バー内に貼り付け  → そのまま(編集可能のまま)Shift+Ctrlキーを押しながらEnterキーで確定! 数式の前後に{ }マークが入り配列数式になります。 これを隣のB3セルまでオートフィルでコピー! C3セルには =IFERROR(INDEX(Sheet1!A$2:A$1000,MATCH(SMALL(IF(MONTH(Sheet1!$B$2:$B$1000)=$C$1,Sheet1!$B$2:$B$1000),ROW(A1)),Sheet1!$B$2:$B$1000,0)),"") (これも配列数式です) として隣のD3セルまでコピー! B3・D3セルの表示形式を「日付」にして 最後にA3~D3セルを範囲指定 → D3セルのフィルハンドルで下へコピー! これで画像のような感じになります。 ※ 同一日がある場合は最初の行が重複して表示されると思います。m(_ _)m

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

分かり易い方法は作業列を作って対応する方法です。 シート1のF2セルには次の式を入力してI2セルまで横にドラッグコピーしたのちに下方にもドラッグコピーします。 =IF($A2="","",INDEX($A:$D,MATCH(SMALL($B:$B,ROW(A1)),$B:$B,0),COLUMN(A1))) これによってすべてのデータは日付について昇順で並べられます。 ところでシート2ですがお示しのような表にしますがA1セルに入力する8月レンタルというのは2013年8月レンタルのように入力します。C1セルには2013年9月レンタルのように入力します。左の横列方向には他の年月のレンタル文字が入力されても対応することができます。 なお、年や月の数字は必ず半角英数文字にします。 2行目はお示しのように項目名を並べます。 ところでシート2を完成するためにシート1ではさらに作業列を追加します。 J2セルには次の式を入力して下方にドラッグコピーします。 =IF(COUNTIF(Sheet2!$1:$1,YEAR(G2)&"年"&MONTH(G2)&"月レンタル"),MATCH(YEAR(G2)&"年"&MONTH(G2)&"月レンタル",Sheet2!$1:$1,0)*1000,"") さらにK2セルには次の式を入力して下方にドラッグコピーします。 =IF(J2="","",J2+COUNTIF(J$2:J2,J2)) そこでシート2ですがA3セルには次の式を入力したのちに右側方向にドラッグコピーしたのちに下方にもドラッグコピーします。 =IF(COUNTIF(Sheet1!$K:$K,IF(MOD(COLUMN(A1),2)=1,COLUMN(A1)*1000,(COLUMN(A1)-1)*1000)+ROW(A1)),INDEX(Sheet1!$F:$G,MATCH(IF(MOD(COLUMN(A1),2)=1,COLUMN(A1)*1000,(COLUMN(A1)-1)*1000)+ROW(A1),Sheet1!$K:$K,0),MOD(COLUMN(A1)-1,2)+1),"") どんなにデータが多くなっても計算に負担が少ない方法としてお勧めです。 作業列が目障りでしたらそれらの列を選択したのちに「非表示」を選択すればよいでしょう。

kom69
質問者

お礼

回答ありがとうございます! sheet1のデータが列も行も追加していき膨大なデータになりそうだったので、 作業用のシートを作成し、そちらで作成してみました。 ただ、”レンタル希望日”が重複したデータの場合、すべて同じ名前が表示されてしまいます。 こちら解消方法はありませんでしょうか?

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

>このところで、列ラベルとΣ値の両方に「レンタル希望」を入れる方法がわかりませんでした。 フィールドリストの中の「レンタル希望]の部分にカーソルを置いて、そのまま左クリックでその下の列ラベルにドラッグすれば、列ラベルに「レンタル希望」が入ります。同様にもう一度「レンタル希望]の部分にカーソルを置いて、そのまま左クリックでΣ値の部分にドラッグしてください。

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

参考までに。 関数で対応するなら、例えば以下のような数式になります。 8月のデータを表示するなら、添付画像のA14セル、B14セルに以下の式を入力します。 A14セル:=INDEX($A:$A,SMALL(INDEX((MONTH($B$2:$B$10)<>8)*1000+ROW($A$2:$A$10),),ROW(1:1)))&"" B14セル:=IF(A14="","",SMALL(INDEX((MONTH($B$2:$B$10)<>8)*100000+$B$2:$B$10,),ROW(1:1))) 9月のセルには上記の数式の「8」を「9」に変更してください(セル参照してもよい)。

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

ご希望の表示は関数でも対応できますが、配列数式を使うと数式が煩雑でメンテナンスできなくなる可能性があるだけでなくシートの動きが重くなるなどのデメリットがあります。 このようなケースでは(ただし同じ月に同じ人が2回以上のレンタル希望日が無い場合)ピボットテーブルを使用されることをお勧めします。 「挿入」「ピボットテーブル」で行ラベルに「名前」列ラベルとΣ値に「レンタル希望」をドラッグし、作成された列ラベルの日付の上で右クリックし「グループ化」で「月」を選択します。 次にデータフィールドの上で右クリックし「値フィールドの設定」で「最大値」を選択し、最後にこのフィールド全体を選択して右クリック「セルの書式設定」から日付の表示形式を設定します。 最後にピボットテーブル上で右クリックし、「ピボットテーブルオプション」の集計とフィルタタブで行と列の総計を表示しない設定にします(添付図参照)。

kom69
質問者

お礼

さっそく回答いただきありがとうございます。 >列ラベルとΣ値に「レンタル希望」をドラッグし このところで、列ラベルとΣ値の両方に「レンタル希望」を入れる方法がわかりませんでした。 教えていただいたにも関わらず、追加の教えてになってしまいますが、 ご教示いただけると助かります!

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

関連するQ&A

  • エクセル(2003・2007)でデータ抽出し、別シートを作成するための

    エクセル(2003・2007)でデータ抽出し、別シートを作成するための関数を教えて下さい ●シート名:サンプルA                ●シート名:サンプルB   A  B    C   D  E・・        A  B     C   名前 日付1  日付2  備考      名前 日付1   備考 1 山田 2010/10/15 2010/10/10 ああ    1 鈴木 2010/10/18 うう 2 佐藤             いい       2 太田 2010/10/21 かか  3 鈴木 2010/10/18 うう     → 4 井上 2010/11/20 ええ 5 石田 2010/8/7 2010/10/7 おお 6 太田 2010/10/21 かか 具体的に上記のデータから【B列が本日から10日間以内かつC列がスペース】のデータのA・B・D行を別シートに作成する関数を教えて下さい よろしくお願いします ※なぜか文字がずれてしまってて、すいません・・・

  • 別シートの条件に合うセルを抽出したい

    例えば、sheet1に A列 B列   C列 1/1 東京  佐藤 1/1 横浜  鈴木 1/2 北海道 山田 1/3 大阪  加藤 と入力したとします。 このとき、sheet2のA1に1/1と入力すると、Sheeet2のA2、A3に1/1、B2、B3に東京、横浜、C2、C3に佐藤、鈴木と自動的に表示されるようにしたいのですがどうしたらよいのでしょうか?

  • 【エクセル】リストの照合について教えてください!!

    sheet1に、下記の様に600件の氏名が書いてあります。 A      B 1     山田太郎  2     鈴木花子 ・・・ 600   佐藤次郎 sheet2に、地域と氏名がずらっと書いてあります。 A      B      C     D    E 東京都   神奈川県   埼玉県   千葉県  茨城県 山田太郎 鈴木太郎 山田花子 佐藤次郎 ・・・ このsheet2の地域を、sheet1のC列に下記の様に入れたいのですが、 どの様に行ったら良いでしょうか? みなさんのお知恵をください!!宜しくお願い致します。 A      B      C 1     山田太郎   東京都 2     鈴木花子   神奈川県 ・・・ 600   佐藤次郎   埼玉県

  • エクセルで、シート1のセルをシート2にコピーしたい

    エクセルのシート別のコピーについて教えていただけますでしょうか。 シート1のA列には、下記の通り、氏名、学校、住所、電話番号の順番に、並んでいるとします。 <シート1> A1 山田太郎 A2 学校 A3 住所 A4 電話番号 A5 山田花子 A6 学校 A7 住所 A8 電話番号 A9 山田みどり A10 学校 A11 住所 A12 電話番号 その情報をシート2の A列に、氏名だけを下記の通り、入力していきたいのです。 <シート2> A1 山田太郎 A2 山田花子 A3 山田みどり シート別のコピーは、 例えば、シート2のA1に「=Sheet1!A1」 と入力すれば、「山田太郎」と出てくることは知っています。 ですが、シート1の『氏名』だけをシート2に抽出していきたい場合、 どのようにすればよろしいのでしょうか? 『4セルずつ下』の『氏名』をシート1からシート2へコピーしたいです。 どなたか方法を教えていただけますと、とてもありがたく助かる思いです。 どうぞよろしくお願いいたします!

  • 条件付き書式で別シートから参照させたい

    エクセルの条件付き書式について質問です。 Sheet1のデータを検索して別シートに結果を引っ張っています。 検索結果が男は”青”、女は”赤”、空欄は”灰”というパターンでセルの色が 変わるようにしたいのです。エクセルの本やネット検索で1つの答えを出しましたが、 「式が正しくありません」とエラーが出ます。どこが間違ってるのかわかりません。 どなたか教えていただければ助かります。宜しくお願い致します。   【Sheet1】     【Sheet2】    A  B C     A  1 山田太郎  男  1 山田太郎 ←青 2 田中花子  女  2 田中花子 ←赤 3        女 3       ←灰 4 鈴木二郎  男 4 鈴木二郎 ←青 Sheet2のA列には、=IF(Sheet1!$A1="","",Sheet1!$A1) Sheet2での条件付き書式で、 条件1 =COUNT(IF(INDIRECT("Sheet1!$A$1:$A$100")=A1,IF(INDIRECT("Sheet1!$C$1:$C$100")="男",))) 書式:青 条件2は"女"で赤となります。

  • EXCELで条件を満たす時コピー挿入したい

    EXCEL2002ですが、以下のようなデータがあるとします。      A      B 1    山田太郎 100 2    山田花子 100,200,300 3    鈴木一郎 300 B列にカンマ区切りで入力しているデータがある場合、      A      B 1    山田太郎 100 2    山田花子 100 3    山田花子 200 4    山田花子 300 5    鈴木一郎 300 上記のように、B列のカンマ区切り分を振り分けたレコードを新たに 挿入したいのです。 尚参考までに、A列は名前などでデータ内容は多様になり、B列は ある程度決まった選択肢(20~30通り)になります。 一般の関数では無理なような気がするのですが、VBAなどでは可能でしょうか? もし可能であれば、マクロなども組んだことがないものですから、 やさしくご教授いただければ幸いです。 よろしくお願いいたします。

  • 【エクセル関数】複数条件(月別・個人別)で集計したい

    例えば、以下のような表があるとします。 A        B       C 2005/10/12  山田一郎  5,000 2005/10/17  鈴木花子  1,000 2005/10/28  鈴木花子  2,000 2005/11/03  山田一郎  1,000 2005/11/17  山田一郎  2,000 2005/11/19  鈴木花子  4,000 これを、次のように仕訳したいのですが、      山田一郎  鈴木花子 10月  5,000     3,000 11月  3,000     4,000 どのような関数を使えばうまく集計することができますでしょうか? 自分なりに、SUMIFやSUMPRODUCTを使って考えてみたのですが、 うまく集計することができませんでした。 どうぞよろしくお願いします。

  • エクセルで同じ日に2回出勤したデータ数を数えたい

    同じ人が同じ日に2回出勤しているデータ数を知りたいです。 2 山田太郎 1/21 10:00 13:00 2 山田太郎 1/21 18:00 24:00 1 山田太郎 1/22 10:00 17:00 1 山田太郎 1/23 14:00 22:00 1 鈴木花子 1/21 10:00 17:00 1 鈴木花子 1/23 17:00 24:00 2 鈴木花子 1/24 10:00 15:00 2 鈴木花子 1/24 18:00 24:00 ↑のようなタイムカードがあります。 上の例だと、2もしくは4という数値がほしいです。 今までは図のようにA列に countifs関数を記入し、同一人物が同一日付に2回出勤 しているかをチェック、その数を数えていました。 今後は、 同一人物が同一日付に2回出勤している件数を1つの関数で知りたいと考えています。 ↑の例だと、4件 という数を1つの関数で出したいです。 どのようにすればよいのかアドバイスをお願いいたします。

  • エクセルでデータ抽出→並べ替え

    エクセルで   A列   B列   C列    D列  E列        4月1日 9:00 山田太郎   9:15   佐藤仁  4月1日 10:05 佐藤聡 10:00 鈴木正夫  4月1日 11:15 高橋二郎 11:00 山田勇        4月2日 9:05 渡邊正志 9:15 佐々木正夫        4月2日 10:00 山田太郎  10:15 佐藤仁         4月2日 11:02 佐藤仁   11:00 高橋二郎 という複数の営業マンの訪問予定表があります。この「山田太郎」さんに 月間の訪問予定表を発行したいと思っています。 ※発行対象は全員です。 関数でもマクロでも結構ですが、ご教授いただけると助かります。

  • 同じ文字列を抽出して新規シート作成

    A列~E列までデータが入力されています。 E列は所々、空白セルがあります。 1行目は見出しです。 元データのA列の中で同じ文字列を探して 見出しと該当するA~E列の行を新規シートとして作成。 その際、シート名はA列の文字列。 A列の文字列が2つ以上見つからなくても A列の文字列を新規シートにする。 最終行は常に変動します。 元データ (B列~E列は割愛) A-1 名前 A-2 鈴木 A-3 佐藤 A-4 鈴木 A-5 山田 A-6 佐藤 新規シート名 「鈴木」 A-1 名前 A-2 鈴木 A-3鈴木 新規シート名 「佐藤」 A-1 名前 A-2 佐藤 A-3 佐藤 新規シート名 「山田」 A-1 名前 A-2 山田 上記の事をマクロで実行させたいです。 ご指南の程、宜しくお願い致します。 エクセル2013

専門家に質問してみよう