• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBA 期間を指定してデータを別シートに抽出)

VBAで期間指定してデータを別シートに抽出する方法

piroin654の回答

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.1

なぜ回答する人がいないの? ADOなり、DAOでSQL文を使ってデータを取得する方法もありますが、 あっさりとVBAで泥臭く。 「A7」以下って「A7」からでいいのですかね。 「A8」からならば、以下のコードの「k+6」のところをすべて「k+7」にしてください。 Private Sub CommandButton1_Click() Dim i As Long Dim k As Long Dim wk As Workbook Set wk = ThisWorkbook i = wk.Sheets("Sheet1").Cells(Rows.Count, "A").End(xlUp).Row For k = 1 To i 'フォームにTextBox1とTextBox2をおいてそれぞれに抽出する期間を入力する場合 'If CDate(wk.Sheets("sheet1").Cells(k, "N").Value) >= CDate(TextBox1) And CDate(wk.Sheets("sheet1").Cells(k, "N").Value) <= CDate(TextBox2) Then '質問のSheet2に期間を入力する場合 If CDate(wk.Sheets("sheet1").Cells(k, "N").Value) >= CDate(wk.Sheets("sheet2").Cells(2, "A").Value) And CDate(wk.Sheets("sheet1").Cells(k, "N").Value) <= CDate(wk.Sheets("sheet2").Cells(2, "B").Value) Then wk.Sheets("sheet2").Cells(k+6, "A").Value = wk.Sheets("sheet1").Cells(k, "A").Value wk.Sheets("sheet2").Cells(k+6, "B").Value = wk.Sheets("sheet1").Cells(k, "B").Value wk.Sheets("sheet2").Cells(k+6, "C").Value = wk.Sheets("sheet1").Cells(k, "C").Value wk.Sheets("sheet2").Cells(k+6, "D").Value = wk.Sheets("sheet1").Cells(k, "D").Value wk.Sheets("sheet2").Cells(k+6, "E").Value = wk.Sheets("sheet1").Cells(k, "E").Value wk.Sheets("sheet2").Cells(k+6, "F").Value = wk.Sheets("sheet1").Cells(k, "F").Value wk.Sheets("sheet2").Cells(k+6, "G").Value = wk.Sheets("sheet1").Cells(k, "G").Value wk.Sheets("sheet2").Cells(k+6, "N").Value = wk.Sheets("sheet1").Cells(k, "N").Value End If Next k End Sub コードが長くなったので崩れていたら補正してください。

関連するQ&A

  • エクセル)2シート間の重複データのチェック

    シート1 A列(チェック欄)B列(会社名)C列(商品名) シート2 A列(チェック欄)B列(会社名)C列(商品名) というエクセルの表があります。 A列(チェック欄)は、 シート1のA列は「B列C列の内容がシート2と重複するもの」にチェック、 シート2のA列は「B列C列の内容がシート1と重複するもの」にチェック、 をいれています。 いずれも、B列C列がそろって重複している場合にのみチェックをしています。 B列のみ、C列のみの場合はチェックをいれません。 シート1 ☆ い社 りんご   い社 みかん   ろ社 みかん ☆ は社 ぶどう   に社 すいか   に社 りんご シート2 ☆ い社 りんご   ろ社 いちご   ろ社 すいか   ろ社 もも ☆ は社 ぶどう   に社 いちご というようなかんじです。 このA欄のチェックを自動でできるように関数を入力したいのですが、 どうすればよいでしょうか?

  • エクセル出の並び替えについて質問

    エクセルの並び替えにおいて質問させていただきます。  A列  B列  C列   D列 りんご  1  バナナ  4 バナナ  2  みかん  6 すいか  3  いちご  8 みかん  4  もも   3 いちご  5  すいか  2 ドリア  6  ぶどう  1 というものを  A列  B列  C列   D列 りんご  1   バナナ  2  バナナ  4 すいか  3  すいか  2 みかん  4  みかん  6 いちご  5  いちご  8 ドリア  6           もも   3         ぶどう  1 というようにA列にならってC,D列の項目を並び替えて、並び替えられないものは下に列挙させるようなやり方がありましたら教えてください。 どうぞ宜しくお願いします。

  • Excel2003 並び替えに関する質問 VBA初心者

    エクセルの並び替えにおいて質問させていただきます。  A列  B列  C列   D列 りんご  1  バナナ  4 バナナ  2  みかん  6 すいか  3  いちご  8 みかん  4  もも   3 いちご  5  すいか  2 ドリア  6  ぶどう  1 というものを  A列  B列  C列   D列 りんご  1   バナナ  2  バナナ  4 すいか  3  すいか  2 みかん  4  みかん  6 いちご  5  いちご  8 ドリア  6           もも   3         ぶどう  1 というようにA列にならってC,D列の項目を並び替えて、並び替えられないものは下に列挙させるようなやり方をVBAで組みたいのですが、まずはどうすればよいのかわかりません。 もし、これを見て答えられるようであれば、どなたか教えていただければ幸いです。 どうか宜しくお願いします。

  • Excelで複数条件で抽出した複数データを出力

    Excelで複数条件で抽出した複数データを出力したい Shett1のセルAとセルBの複数条件で、Sheet2を検索し一致したSheet2のセルCを Sheet1の該当するセルCに入れたいのです。 それを関数でするのはどうしたらいいのでしょうか? Sheet1 A B NAME ID(タイトル) いちご A01 いちじく A02 かき B01 すいか C01 なし D01 ぱいなっぷる E01 ばなな E02 ぶどう F01 みかん G01 めろん H01 もも I01 りんご J01 Sheet2 A B C 名前 ID 漢字(タイトル) みかん G01 蜜柑 いちご A01 苺 ぶどう F01 葡萄 りんご J01 林檎 もも I01 桃 かき B01 柿 なし D01 梨 すいか C01 西瓜 いちじく A02 無花果

  • エクセルで範囲内のデータを別シートにうつしたい

    エクセルで特定の範囲内の数値にあてはまるデータを別のシートに新たな表として作成したいのですが、簡単な方法があれば教えてください。 例えば Sheet1   A   B     C  1 25  ミカン   3000 2 30  リンゴ   4500 3  5  メロン   9800 4 17  ブドウ   1800 5 50  バナナ  1000 このようなデータを次のような表にしたいのです。 A列の数値が10~30のみ行ごと抜粋する Sheet2   A   B     C  1 25  ミカン   3000 2 30  リンゴ   4500 3 17  ブドウ   1800  よろしくお願いいたします。

  • 期間指定での日付の抽出

    Excel2013です。 【Sheet1】 ID|名前|誕生日| D | E | F | G | H | I | J |・・・・ 01|田中|yyyy/mm/dd|2004/10/15|2005/10/12|2006/10/17|2007/10/13|2008/10/15|2009/10/110|2010/10/15|・・・・ 02|佐藤|yyyy/mm/dd|2008/10/15|2009/10/14|2010/08/17|2011/09/13| | | |・・・・ 03|鈴木|yyyy/mm/dd|2010/10/15|2011/10/12|2012/10/17| | | | |・・・・ 【Sheet2】 ID|名前|2004|2005|2006|2007|2008|2009|2010|2011|・・・・ 01|田中|数式A|数式B|数式|数式|数式|数式|数式|数式|・・・・ 数式AのところでSheet1にある同じIDの人の2004年の日付、 数式BのところでSheet1にある同じIDの人の2005年の日付を抽出できるようにしたいです。 同じIDの行内で同じ年が重複することはありません。 該当がない場合はIFERRORで空欄にしようと思っています。 お力添えをお願いいたします。

  • VBA 複数条件でデータを抽出する場合

    sheet1に下記のような(例)データベースがありA~BS列までデータが入力されています。 A  B C  D  E   F  G  H I J  BS 1 ○○様 ○○  2名  車   可 埼玉 *** *** *** 2015/7/1 2 ○○様 ××  3名  車  不可 東京 2015/8/1 3 ○○様 ■■  2名  電車 不可 愛知 2015/8/12 4 ○○様 □□  4名  バス  可  新潟 2015/7/13 5 ○○様 ○×  3名  バス  可  宮城 2015/6/1 6 ○○様 ■□  4名  車  不可 東京 2015/8/21 7 ○○様 □○  2名  バス  可  山梨 2015/8/7 「sheet1」のデータでBS列の期間(YYYY/MM/DD~YYYY/MM/DD)とG列の地域名(例:東京)を抽出条件とし、 抽出された結果のsheet1のA列~G列、BS列のみ(H列~BT列は不要)をSheet2のA11以下へ表示するマクロを組みたいと考えています。 A  B  C  D  E   F  G   BS 2 ○○様 ××  3名  車  不可 東京 2015/8/1 6 ○○様 ■□  4名  車  不可 東京 2015/8/21 複数条件下の抽出の場合、どのようなVBAのコードを使用すれば良いでしょうか。 宜しくお願いします。

  • 条件に合う行を別シートに抽出

    エクセルで条件に合う行を別シートに抽出したいです。  出荷確認シートとします。     A    B   C    D    E    K    M   N   O     P   抽出列  No.  件名  工事店  出荷  確認  担2  担3  名称   作業列・・・・OKで番号 30行 OK 101-1 ふじ  あああ        OK     松田  みかん    1            以降     101-2 ふじ  あああ              松田  りんご                OK 102-1 ビル  いいい       OK     伊藤  いちご      2            OK 103-1 神社  ううう         OK     神田  アイス     3               103-2 神社  えええ               神田  レモン                    ・  ・    ・       ・      ・    ・     ・         ・  ・    ・       ・      ・    ・     ・        OK   ・  ・    ・             OK    ・     ・       4 上記がSheet1に入力されています。 条件1  ・Sheet1K列 確認でOKを入力された行をSheet2に抽出したいのです。       B   C     D    E    M    N    O            No.  件名  工事店  出荷   担2   担3  名称          101-1 ふじ  あああ            松田   みかん        102-1 ビル  いいい           伊藤   いちご              103-1 神社  ううう             神田   アイス  条件2  ・Sheet1K列 随時OKを入力された行をSheet2に追加           101-1 ふじ  あああ         松田   みかん        101-2 ふじ  あああ         松田   りんご       102-1 ビル  いいい        伊藤   いちご             103-1 神社  ううう         神田  アイス       103-2 神社  えええ          神田  レモン             条件3  ・出荷を確認後はその行を削除しますので、残りのOK分をSheet2に抽出後したもの       101-1 ふじ  あああ         松田  みかん         101-2 ふじ  あああ         松田  りんご       103-1 神社  ううう          神田  アイス とSheet2に表示させたいです。 A抽出列には=IF(B30="","",TEXT(B30,"OK"))を入力し、Sheet1P作業列がK列に OKを入力されるたびに番号が記入され、順序を行頭から若番として、A抽出列とP作業列を参照等 しながらと頭の中ではイメージしていますが・・・。 過去の分を検索したら、似たようなので逆のパターンがありました。 エクセルは2000です。文字位置が上手く合ってないですが 皆様のお知恵をお願いいたします。

  • エクセル 2枚のシートの違いを抽出したい

    目を通していただきありがとうございます。 エクセルは全く詳しくないため、質問させていただきます。 sheet1とsheet2に各2000行ほどの表があります。 sheet1 A列(商品) B列(産地) C列(定価) D列(特価) E列(数量)  みかん    愛媛     100      80       500  みかん    静岡     120      85       400  オレンジ  アメリカ     150      90       100   sheet2 A列(商品) B列(産地) C列(定価) D列(特価) E列(数量)  みかん    愛媛     100      80       300  オレンジ  アメリカ     150     100       100  いちご     福岡     300     150       100  みかん    静岡     120      70       400 それぞれ「1行目のみかん」はA~D列まで同じ値で、E列のみの違いですので、 抽出の必要はありません。 sheet2の3行目のいちごはsheet1にはありませんので、これも抽出の必要はありません。 sheet1の2行目とsheet2の4行目のみかん、 sheet1の3行目とsheet2の2行目のオレンジ、はD列(特価)の違いがあります。 この<D列のみ違いがある>ものを行単位でsheet3に抽出したいのですが、 何か良い方法(関数等)がありましたら、教えていただけないでしょうか? なお、表題に「エクセル」と書きましたが、実際はKingsoftのSpreadsheets 2012を使用しています。 基本的な関数でしたらそのまま使えるようですので、エクセルとして書かせていただきました。 よろしくお願いいたします。     

  • エクセルVBA シート1からシート2へ転記したい

    シート1のデータはそのままで、 シート2に編集して転記したいです。 シート1にはA列からI列までデータが入っています。 行数は都度変わりますがデータは3行目から始まり 大体500行くらいです。 転記方法は シート1のD列→シート2のA列 シート1のE列→シート2のB列 シート1のF列→シート2のC列 シート1のC列→シート2のD列 でシート1のD列の値が同じ場合は 転記先のシート2の行数は増やさずにシート1のC列の値を 同じ値のF列内にカンマでつないで転記したいです。 でそのつないだ合計数をシート2のE列に表示したいです。 イメージ C  D    E     F ------------------------ A1 みかん 国内 Sサイズ A3 みかん 国内 Sサイズ D6 みかん 国内 Sサイズ D9 りんご 国内 Mサイズ G7 りんご 国内 Mサイズ F5 バナナ 海外 Lサイズ G1 バナナ 海外 Lサイズ A2 いちご 国内 Sサイズ D8 いちご 国内 Sサイズ F3 いちご 国内 Sサイズ H2 いちご 国内 Sサイズ   ↓ A    B    C      D     E ------------------------------------------- みかん 国内 Sサイズ A1,A3,D6   3←3個 りんご 国内 Mサイズ D9,G7     2←2個 バナナ 海外 Lサイズ F5,G1     2←2個 いちご 国内 Sサイズ A2,D8,F3,H2  4←4個 上記例の場合は元データは11行ですが編集後は4行です。 配列は自力で作成できないので考え方を教えていただきたいです。 構文をそのまま書いていただいても大変助かります。 Do~LoopかFor~Nextで上から順最終行まで処理で シート1からシート2へ転記する構文をかいて D列の値が直前に処理した値と同じ場合は 転記はしないでC列の値を変数1に代入し シート2の該当行のD列も変数2に代入し 変数1&","&変数2で対象行のD列に転記と考えましたが うまくできませんでした。 またシート2のE列の求め方ですが、上記変数1,2に代入した後に 変数3=変数3+1とかの文でカウントし、 その値を転記すればいいのでしょうか? すいません。今日1日頑張ってうまくできず 上手く説明できません。 よろしくお願いします。