エクセルについて、あるデータから指定期間内のデータを別シートへ抽出する方法を教えてください。
例)
No. 日付 名前 数字 配達先
1 5/1 AAA 5 BBB
2 5/6 CCC 10 DDD
3 5/14 EEE 4 FFF
4 6/6 GGG 20 HHH
データは毎日更新されます。
ここであるセルに「2012/5/1」~「2012/5/31」と入力し、その期間内のデータを別シートへ引っ張りたいです。指定期間は人によってその都度様々です。
色々調べたのですが、オートフィルターでは行えそうになく、VBAを使用した方がよいと思ったのですが、初心者のため分かりません。どなたか教えていただけますと大変助かります
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
》 オートフィルターでは行えそうになく、VBAを使用した方がよいと思った…
“初心者”は先走って思い込まないことをお奨めします。
[オートフィルタ]で抽出したデータをコピーして、別シートに貼り付ける手もあります。
詳細な手順は省くけど、添付図は[フィルタオプションの設定]を利用した経過&結果を示しています。
[抽出先] “指定した範囲”
[リスト範囲] Sheet1!$A:$E
[検索条件範囲] $D$2:$D$3
[抽出範囲] $A$5:$E$5
お礼が遅くなり、申し訳ございません。
ご教示ありがとうございました。
確かに、一般的な機能を使いこなせていないのに、
マクロと先走らず勉強してみようと思います。
オートフィルターをうまく使いこなしてみます。
No.4
- 回答日時:
シート1にはお示しの表が有り、A1セルからE1セルには項目名が有り、2行目以降にそれぞれのデータが入力されているとします。
シート2はお求めの表でA1セルには2012/5/1のように検索の初めの日付が、B1セルには から の文字が、C1セルには2012/5/30のように検索の終わりの日付が入力されているとします。
そこでシート1に戻ってシート1のF2セルには次の式を入力して下方にドラッグコピーします。
=IF(B2="","",IF(AND(B2>=Sheet2!A$1,B2<=Sheet2!C$1),MAX(F$1:F1)+1,""))
シート1のF列のデータをもとにシート2の表を作ります。
シート2のA2セルからE2セルまでのはシート1の1行目の項目名をコピーして貼り付けます。
シート2のA3セルには次の式を入力してE3セルまで横のドラッグコピーしたのちに下方にもドラッグコピーします。
=IF(ROW(A1)>MAX(Sheet1!$F:$F),"",INDEX(Sheet1!$A:$E,MATCH(ROW(A1),Sheet1!$F:$F,0),COLUMN(A1)))
最後にシート2のB列を選択して右クリックしセルの書式設定からセルの表示形式で日付を選択します。
お礼が遅くなり、申し訳ございません。
ご教示ありがとうございます。
関数を使うことが頭になかったので、
関数でもできることに驚きました。
ありがとうございました。
No.3
- 回答日時:
作業列を使用しない方法です。
今仮に、元データの表中で「No.」と入力されているセルがSheet1のA1セルであり、Sheet2のB1セルに指定期間の最初の日付を入力し、Sheet2のD1セルに指定期間の最終日の日付を入力すると、Sheet2のA列~E列の4行目以下に、抽出されたデータが表示されるものとします。
又、Sheet1の日付は、必ず、古い日付が上になり、新しい日付が下に来るように並べられているものとします。
又、Sheet2のC1セルには「~」と入力されていて、例えば、Sheet1のB1セルに「2012/5/1」という日付が入力されていて、Sheet2のD1セルが空欄となっている場合には、指定期間は「2012/5/1~」という事で、2012/5/1以降の全てのデータが抽出されるものとし、
又、例えば、Sheet2のB1セルが空欄で、Sheet2のD1セルに「2012/5/31」と入力されている場合には、指定期間は「~2012/5/31」という事で、2012/5/31以前の全てのデータが抽出されるものとします。
(指定期間を1日分のみとする場合には、同一の日付を両方のセルに入力して下さい)
まず、Sheet2のA4セルに次の関数を入力して下さい。
=IF(ROWS($4:4)>IF(AND(ISNUMBER(1/DAY($D$1)),COUNTIF(Sheet1!$B:$B,"<"&$D$1+1)),MATCH($D$1+"23:59:59",Sheet1!$B:$B),IF(COUNT(Sheet1!$B:$B),MATCH(9E+99,Sheet1!$B:$B),0))-IF(AND(ISNUMBER(1/DAY($B$1)),COUNTIF(Sheet1!$B:$B,"<"&$B$1)),MATCH($B$1-"0:0:1",Sheet1!$B:$B),ROW(Sheet1!$B$1)),"",INDEX(Sheet1!$A:$A,IF(AND(ISNUMBER(1/DAY($B$1)),COUNTIF(Sheet1!$B:$B,"<"&$B$1)),MATCH($B$1-"0:0:1",Sheet1!$B:$B),ROW(Sheet1!$B$1))+ROWS($4:4)))
次に、Sheet2のB4セルに次の関数を入力して下さい。
=IF(ISNUMBER(1/(VLOOKUP($A4,Sheet1!$A:$E,MATCH(B$3,Sheet1!$A$1:$E$1,0),FALSE)<>"")),VLOOKUP($A4,Sheet1!$A:$E,MATCH(B$3,Sheet1!$A$1:$E$1,0),FALSE),"")
次に、Sheet2のB4セルをコピーして、Sheet2のC4~E4の範囲に貼り付けて下さい。
次に、Sheet2のB4~E4の範囲をコピーして、同じ列の5行目以下に貼り付けて下さい。
以上です。
No.2
- 回答日時:
VBA を使わないとできないという処理は確かにありますが、Excel の一般機能でできることを VBA で行っても、そのほうが有利と言える条件が揃っている場合を除いて、あまりお勧めしません。
趣味としてはいいですが、実務的には簡単な処理がかえって手間がかかってしまうし、一般機能が使えていない人が VBA のコードをスラスラ書けるとも思えません。まずは Excel の基本的な機能を使いこなせるよう学びましょう。ご要望のことは、オートフィルタでも問題なくできると思いますよ。添付図は、質問文の表を「2012/5/2~2012/5/15」という期間で絞り込んだ状態のものです。
別シートに保存したければ、絞り込んだ状態で表をコピーし、別シートに貼り付けるだけのことです。
例えば、「5/1」というセルにカーソルを置いた状態で、数式バーを見てみましょう。「2012/5/1」などと表示されているかと思います。セルでは「5/1」と表示されていても実際は年月日のデータであり、書式で「5/1」と表示させているだけだからです。そのセルに設定されている書式の確認は、右クリックの「セルの書式設定」の「表示形式」タブでできます。
「2012/5/1」といった年月日のうち年などが正しくないようなら、正しい年に書き換えておきましょう。数式バーをクリックまたはセルをダブルクリックで、部分的にも編集できます。
こうして年月日が正しくなっていれば、オートフィルタで狙いどおりに絞り込めます。その具体的な方法は、参考 URL を参照してください。Excel2003 と 2007 の両方で紹介されています。
Excel2007 では、参考 URL のページの図にある「日付フィルタ」という箇所をクリックすると、「指定の範囲内」というのが選べると思います。月単位での絞込みの場合は、チェックボックスでもできますね。
参考URL:http://officetanaka.net/excel/function/tips/tips …
お礼が遅くなり、申し訳ありません。
ご丁寧にご教示頂きありがとうございます。
確かにマクロにこだわる理由はありませんね、、。
もっと一般機能について勉強してからにします!
No.1
- 回答日時:
こんばんは。
添付図:
シート1のA,B,C,D,E列に元データ。
手順:
シート2のC1とC2に「2012/5/1」~「2012/5/31」と入力することにして。
A2セルに
=IF(MEDIAN(Sheet1!B2,$C$1:$C$2)=Sheet1!B2,ROW(Sheet1!B2),"")
と記入、下向けに沢山コピー
E2セルに
=IF(ROW(E1)>COUNT($A:$A),"",INDEX(Sheet1!A:A,SMALL($A:$A,ROW(E1))))
と記入、右に下にコピー。
まずは練習として回答の通りにまっさらエクセルに作成し、その通りにできるようになってから、改めてあなたの本番を作成してください。
#毎日5回は寄せられるご相談なので、誰が作成してもどこかで見たような回答になりますね。
お礼が遅くなり、申し訳ありません。
教えてくださり、ありがとうございました!
色んな方法があるんですね。とても勉強になりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
初めて自分の家と他人の家が違う、と意識した時
子供の頃、友達の家に行くと「なんか自分の家と匂いが違うな?」って思いませんでしたか?
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
期間内に該当する値(日付)を抽出したい
Excel(エクセル)
-
excel 指定期間内での条件抽出
Excel(エクセル)
-
1年分のデータから特定の月分のデータを抽出→表示
Excel(エクセル)
-
-
4
エクセルの表で条件(日付別)にあてはまる行を 別シートに順番に抽出されるような関数を教えてください
Excel(エクセル)
-
5
エクセル2016でfilter関数がないので、、抜き出す関数をおしえてください。
Excel(エクセル)
-
6
エクセル 指定した月のデータを自動的に反映させられる方法
Excel(エクセル)
-
7
Excelマクロ 期間を指定してデータを別シートにするには?
Excel(エクセル)
-
8
エクセルで特定の列にある日付データの中から、指定した日付範囲を抽出する方法を教えてください
Excel(エクセル)
-
9
エクセルのVBAで日付を検索し転機したい
Visual Basic(VBA)
-
10
【Excel関数】別シートに日付順でデータを抽出する方法
Visual Basic(VBA)
-
11
VBAでセルに入っている日付をシート名にする
Excel(エクセル)
-
12
エクセルで日付別にシートを分けたい
Excel(エクセル)
-
13
エクセルVBAで、条件に一致するセルへ移動
Excel(エクセル)
-
14
セルをマクロのボタンにしたい。
Visual Basic(VBA)
-
15
あるセルに特定の文字列を打つと、他のセルに決められた文字が自動入力するように
Excel(エクセル)
-
16
Excelで数字を入れたら対応する図を呼び出したい
Excel(エクセル)
-
17
エクセルで日付を別のシートに引用したい
Excel(エクセル)
-
18
(VBAにて)日付でデータを抽出するやり方
Excel(エクセル)
-
19
エクセルファイルを開く時、常に同じシートから開くようにするには?
Windows Vista・XP
-
20
Excelで違うシートから日付を引っ張ってきたい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【Excel】 1つのセルの日にちを...
-
オルトキーを押しながら?
-
【Excel】年月の値によって日の...
-
Excelの警告について
-
エクセルについての質問です。 ...
-
エクセルで80万行、50列位のデ...
-
Excelの計算が合いません。 諸...
-
EXCELの散布図で日付が1900年に...
-
今まで文字化けなく開けていたc...
-
エクセルでファイルの最終更新...
-
エクセルの数式バーのフォント...
-
ゼロを表示
-
Excel 小さくなったスクロール...
-
ExcelでASCを使って全角を半角...
-
Microsoft 365Excelの見開きペ...
-
index関数の説明をお願いします。
-
エクセルの質問です。 F列からL...
-
エクセルの文字が途中から消える
-
Excelの時刻の不思議
-
作成した数式を値として表示し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelの警告について
-
Excelで数値を時間数に変換する...
-
エクセルの数式バーのフォント...
-
エクセルで数字の組み合わせを...
-
エクセルを使用して、円周率を...
-
Excelで特定の文字列が含まれて...
-
Excel 対象のセルに入力が無い...
-
任意の値が存在する行に名前を...
-
エクセルでファイルの最終更新...
-
index関数の説明をお願いします。
-
条件付き書式でやりたいのですが
-
重複しない値を取り出したい
-
【ExcelVBA】UTF-8(BOM無)でC...
-
【マクロ】マクロが割当てされ...
-
エクセル IF計算式?でしょうか?
-
エクセルで曜日を入れたい
-
表中の指定した条件の文字列を...
-
【Excel】版が同じ事を示す番号...
-
EXCELの散布図で日付が1900年に...
-
Excelについて。Excelに縦1列に...
おすすめ情報