- ベストアンサー
Excel VBAで教えてください。
Excel VBAで教えてください。 テキストデータをExcelで読み込んだ後、Sheet1に以下のデータが入っており、 A列 B列 C列 氏名 開始日(yyyy/mm/dd) 終了(yyyy/mm/dd) テキストボックスに開始日(yyyy/mm/dd)、終了日(yyyy/mm/dd)、を入力し、入力した開始日から終了日のデータ検索し、A列からのデータをコピーし、Sheet2に貼り付けしたい。 テキストデータをExcelで読み込むコードはできたのですが、その後の処理ができずに困っています。 ユーザーフォームに入力するコードも教えてください。
- hatsume
- お礼率72% (13/18)
- SE・インフラ・Webエンジニア
- 回答数1
- ありがとう数3
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
>入力した開始日から終了日のデータ検索し、 →この意味がわかりません。入力した開始日と入力した終了日とB列、C列の関係は? 検索とコピーは以下のコードでできます。検索条件の部分は好きなように変更して ください。 Dim Kaishibi1 As Date Dim Kaishibi2 As Date Dim Shuryobi1 As Date Dim Shuryobi2 As Date Dim Shimei As String Dim i As Integer Dim ii As Integer Dim SheetName1 As String Dim SheetName2 As String Kaishibi1 = InputBox("開始日を入力してください", "YYYY/MM/DD") Shuryobi1 = InputBox("終了日を入力してください", "YYYY/MM/DD") SheetName1 = "Sheet1" SheetName2 = "Sheet2" i = 2 ii = 2 Do While (1) Shimei = Trim(Worksheets(SheetName1).Cells(i, 1).Value) If Shimei = "" Then '終了条件(名前がなかったら終了) Exit Do End If '開始日と終了日を読み込む Kaishibi2 = Worksheets(SheetName1).Cells(i, 2).Value Shuryobi2 = Worksheets(SheetName1).Cells(i, 3).Value '検索条件(とりあえず開始日も終了日も同じ とした) If Kaishibi1 = Kaishibi2 And Shuryobi1 = Shuryobi2 Then 'Sheet2にデータを書き込む Worksheets(SheetName2).Cells(ii, 1).Value = Shimei Worksheets(SheetName2).Cells(ii, 2).Value = Kaishibi2 Worksheets(SheetName2).Cells(ii, 3).Value = Shuryobi2 ii = ii + 1 End If i = i + 1 Loop MsgBox ("処理完了") End Sub
関連するQ&A
- エクセル関数 月を数える
エクセルでA列に開始日、B列に終了日があります(yyyy.mm.dd) 月をまたいだら月数をカウントできる関数を教えてください MONTHなど使ってみましたがうまくできません 例えばA列に2000/12/31、B列に2000/1/1でも2ヶ月としたいです よろしくおねがいします
- 締切済み
- Windows系OS
- EXCEL VBAでのCSV出力について
EXCELに入力されたデータをCSV出力するプログラムを作成しました。データには日付が入っており年月日がYYYY/MM/DDの形で入力されています。これをハンド作業で名前をつけて保存でCSVに出力すると年月日はそのままの状態で保存されますが、VBAで保存するとMM/DD/YYYYの形になってしまいます。この状態で保存されると、次にEXCELで読み出すと年月日が文字列扱いになってしまいます。新しいマクロの記録で行っても結果は同じでした。 VBAで保存する際、YYYY/MM/DDで保存する方法はないでしょうか。 また、MM/DD/YYYYで保存されたCSVを日付としてEXCELに認識させる方法はあるでしょうか。 教えてください。よろしくお願いします。
- ベストアンサー
- その他(プログラミング・開発)
- Excelマクロで不要な行を繰り返し処理で削除する
下記の図表【事前】のA列に時間(シリアル値)が入力されていますが、 これをマクロを使って不要な時間帯のデータを行ごと削除したいです。 それを実行するためのマクロをご教示頂けますでしょうか? 削除対象の条件 ・9:00:00~18:00:00以外の夜間や早朝の時間帯は削除する。 その他 ・データが入力されている行数分繰り返し処理 ・秒数、分数は全て0 ・列は3列(B、C列は任意) ・Excelのバージョンは2007 【事前】 A B C 1 yyyy/mm/dd 01:00:00 ※削除対象 2 yyyy/mm/dd 23:00:00 ※削除対象 3 yyyy/mm/dd 09:00:00 4 yyyy/mm/dd 15:00:00 5 yyyy/mm/dd 17:00:00 6 yyyy/mm/dd 19:00:00 ※削除対象 7 yyyy/mm/dd 04:00:00 ※削除対象 【事後】 A B C 1 yyyy/mm/dd 09:00:00 2 yyyy/mm/dd 15:00:00 3 yyyy/mm/dd 17:00:00
- ベストアンサー
- Visual Basic
- エクセルVBAでシリアル値で読み込まれてしまう
こんばんわ! エクセルVBAのユーザーフォームの質問です。 A1セルにある日付データ(yyyy/mm/dd形式)のデータをユーザーフォームのテキストボックスに入れるとシリアル値になってしまいます。 式は普通に aaa.text=range("a1") としています。 同様に時刻もなってしまうのですが、どうしたら通常のyyyy/mm/dd形式(時刻はhh:mm形式)で表示できるでしょうか? アドバイスの程よろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- (VBAにて)日付でデータを抽出するやり方
ド素人なのですが、上司にマクロ作成を依頼され困っています。 下記に内容を記しますので、教えて下さい。 お願いします。 ・VBAを使ってExcelで管理してある管理表(下記参照)を 「発生年月日」をキーにして 「開始月:yyyy/mm」と 「終了月:yyyy/mm」をそれぞれ入力して、コマンドボタンを押したら その指定した範囲内のみのデータを別シートに表示するように して欲しい。 (例) 開始月:2007/8 終了月:2007/11 →2007年8月~2007/11月分の全データが別シートに表示される) ・管理表はこんな感じです。(大体、月に4件ぐらいあります) 発生年月日 件名 内容 完了日 (yyyy/mm/dd) (障害件名) (障害内容) (yyyy/mm/dd) よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- エクセルVBA セルの書式につい
ユーザーフォームのテキストボックスに入力した日付(yyyy/mm/ddの形式)をA1セルに入れるとします。 Range("A1").Value = Me.txt日付 A1セルの表示形式は書式設定でユーザー定義の"d"で表示されるように設定していますが、 テキストボックスに入力した形式のまま(yyyy/mm/dd)でA1セルに表示されてしまいます。 上記のみではNGでしょうか? ちなみに、yyyy/mm/ddと入力されたA1セルを一旦編集モード([F2]キーを押した状態)にして[Enter]を押すと"d"(書式設定で指定している書式)に変わります。 参考:A1セルの日付をみて別シートの一覧からVlookup関数で値を検索したいところが、yyyy/mm/ddで表示されるためにエラーとなってしまいます) ご存知の方教えていただきたいです。
- ベストアンサー
- Visual Basic
- EXCEL 数字の集計方法でお知恵をお貸しください
EXCEL2000を利用しています。 ■はじめに SHEET1のA列に 年月日(書式はyyyy/mm/dd)、B列に 時(書式はテキスト)、C列にランダムなデータ。 SHEET2のA列に 年月日(書式はyyyy/mm/dd) が入っています。 SHEET1 A列の 年月日は、同じ日が24回繰り返して、1日ずつ増えています。B列は0~23の連続番号が繰り返して並んでいる。(※写真参照してください) SHEET2 A列の 年月日は、一日ずつ増える連続データです。 ■相談したいこと SHEET2 B列に SHEET1の同日7時~翌日6時までの和を表示させたい。 例えば、写真のようにSHEET2の2010年4月1日には、SHEET1の 2010年4月1日7時~2010年4月2日6時までの値を足したものを表示させたい。 SHEET2のB列に、どういった関数をいれれば良いか、若しくは、VBAでも結構です。良いお知恵をお貸しください。
- ベストアンサー
- オフィス系ソフト
- エクセルVBAで行うVLOOKUPについて
エクセル2000を使用しています。 いまいろいろVBAを使用してますが、わからないことがあります。 シート1に入力データ、シート2に参照のデータ USERFORM を使用し たとえばテキストBOX1にコードAと入れるとテキストBOX2に東京支店と表示し確認をできるようにしたいのです。東京支店は、シート2の参照データから引用してきます。 BOX1にAと入れてエンターを押した時点でVLOOKUPを実施させたいのですがいまいちわかりません。 シート2は A列にコード A,B,C,D,.... B列に東京支店、千葉支店... よろしくお願いいたします
- 締切済み
- オフィス系ソフト
- VBA 期間を指定してデータを別シートに抽出
sheet1に下記のような(例)データベースがありA~N列までデータが入力されています。 A B C D E F G H I J K L M N 1 りんご ○○ BA 2526 ○ あお *** *** *** *** *** *** 2015/7/1 2 みかん ×× BC 2526 ○ あお 2015/8/1 3 すいか ●● BB 2429 ● あか 2015/8/12 4 メロン □□ DC 2355 □ あか 2015/7/13 5 バナナ ○× FE 2526 ○ あお 2015/6/1 6 いちご ●□ LA 2429 ● あお 2015/8/21 7 ぶどう □○ HK 2526 □ あか 2015/8/7 「sheet1」N列の日付を元にして、別シート(sheet2)のA2列に「開始日付(yyyy/mm/dd」、B2列に「終了日付(yyyy/mm/dd」(例:2015/8/1~2015/8/31)を入力し、フォームボタン(例:抽出)で検索を開始し、抽出された結果のsheet1のA列~G列、N列のみ(H列~M列は不要)をSheet2のA7以下へ表示したいと考えています。 A B C D E F G N 2 みかん ×× BC 2526 ○ あお 2015/8/1 3 すいか ●● BB 2429 ● あか 2015/8/12 6 いちご ●□ LA 2429 ● あお 2015/8/21 7 ぶどう □○ HK 2526 □ あか 2015/8/7 期間を指定し検索した結果を別のシートへ表示するにはどのようなVBAのコードを使用すれば良いでしょうか。 宜しくお願いします。
- ベストアンサー
- Excel(エクセル)
- (VBAにて)日付でデータを抽出するやり方
一度質問をしたのですが言葉足らずで説明不足でしたので、再質問させて頂きます。 (一度見た方も、もう一度お付き合い願います。) 全くマクロを知らないのですが、上司にマクロ作成を依頼され困っています。(無茶な...。) 下記に内容を記しますので、教えて下さい。 お願いします。 (概要) Excelで「元データシート」にて管理している障害管理表のデータを、 「まくろシート」を作成して「元データシート・D列:発生日時」をキーにして 任意の「開始月:yyyy/mm」と「終了月:yyyy/mm」をそれぞれ指定したセルに入力して、コマンドボタンを押したら、「sheet3」シートにその指定した範囲内のみのデータを表示するようにして欲しい。 ・sheet1について →・「元データ」にシート名を変更しています。 ・「元データ」には障害を管理しているデータが入力されています。 (管理表はこんな感じです)→項目名:3行目・データ:4行目~ ・セルA3~Y3が項目名(セルD3の項目名→発生日時) ・セルA4~Y303がデータ(セルD4~D303→yyyy/mm/dd hh:mm:ss) ・sheet2について →・「まくろ」にシート名を変更しています。 ・ セルA2(開始月)とセルB2(終了月)に任意の年月(yyyy/mm)を入力してセルA5にある「コマンドボタン」を押す ・ キーは「元データシート・D列:発生日時」のデータ部分です。 ・sheet3について →・コマンドボタンを押した結果、「sheet3」にマクロの実行結果を反映する。 (A1~Y1行目に項目名が・A2行目~Y(X)行目にデータが表示される) ・A4で印刷するのでA4用紙のサイズに設定する。 以上です。 宜しくお願いします。
- ベストアンサー
- オフィス系ソフト
お礼
回答ありがとうございます。なんとかやってみます。