• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル、マクロにて月を指定して別シートに表示はできるのでしょうか?)

エクセルマクロで月を指定して別シートに表示する方法

このQ&Aのポイント
  • エクセルのマクロを使用して、指定した月を別のシートに表示することは可能ですか?
  • 開始日の検索で、指定した月のデータだけを表示する方法を教えてください。
  • 下記のコードを修正して、指定した月のデータを別のシートに表示するようにしてください。

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

  • ベストアンサー
  • myRange
  • ベストアンサー率71% (339/472)
回答No.2

前回も回答しましたのでちょっとお付き合い。。。 INPUTBOXは他の方にお任せして。前回同様のレイアウトで   '--------------------------------------------- ■日報シート■ 見出し行__: 1行目 データ行__: 2行目以降 '--------------------------------------------- ■集計表シート■ __A___B__C___D__E__F__ 1_部署_抽出月_ 2_●●__●__ 3 4 5_部署_NO_開始日_担当者_内容_工数_ 6 7 ●に抽出条件を入れる、 抽出月は、月だけいれる(5月は、5 ) '------------------------------------------------ Sub 検索()  Dim R As Long  Dim Row2 As Long '●Sheet2書込み行  Sheets("集計表").Range("A5").CurrentRegion.Clear  Sheets("集計表").Range("A5:F5").Value = _  Array("依頼部署", "依頼書No.", "研磨開始日", "担当者", "作業内容", "工数")  Row2 = 5 For R = 2 To Sheets("日報").Cells(Rows.Count, "A").End(xlUp).Row  If Sheets("集計表").Range("A2") = Sheets("日報").Cells(R, "A") And _    Sheets("集計表").Range("B2") = Month(Sheets("日報").Cells(R, "C")) Then    Row2 = Row2 + 1    Sheets("集計表").Cells(Row2, "A") = Sheets("日報").Cells(R, "A")    Sheets("集計表").Cells(Row2, "B") = Sheets("日報").Cells(R, "B")    Sheets("集計表").Cells(Row2, "C") = Sheets("日報").Cells(R, "C")    Sheets("集計表").Cells(Row2, "D") = Sheets("日報").Cells(R, "E")    Sheets("集計表").Cells(Row2, "E") = Sheets("日報").Cells(R, "I")    Sheets("集計表").Cells(Row2, "F") = Sheets("日報").Cells(R, "J")  End If Next R '●抽出結果を日付で並べ替え  If Row2 = 5 Then    MsgBox "該当データなし!"  Else    Sheets("集計表").Range("A5:F" & Row2).Sort _       Key1:=Range("C6"), Order1:=xlAscending, _       Header:=xlYes, OrderCustom:=1, MatchCase:=False, _       Orientation:=xlTopToBottom, SortMethod:=xlPinYin  End If  Sheets("集計表").Select End Sub '------------------------------------------------------ ●見やすくするために Sheets("集計表").Cells(Row2, "A").Valueなどの Valueプロパティは省略していますが、 これは意味がわかっていたら省略してもOKです。 今回のコードでは省略してもOKですが、なるべく付けるようにしてください。 ●当然ですが、検査値が月だけですので 当然ですがデータが数年分(2008~2010年)あったとき、 2008年の5月のデータ抽出はできません。 以上です。

loveless-05410
質問者

お礼

今回も回答有難うございます! すごくうれしいです! 前回教えて頂いたものもすごくよかったです。 さっそくやってみます!

loveless-05410
質問者

補足

頼ってばかりで済みませんが、実行時エラーが If Sheets("集計表").Range("A2") = Sheets("日報").Cells(R, "A") And _    Sheets("集計表").Range("B2") = Month(Sheets("日報").Cells(R, "C")) Then のところででます。 なぜでしょうか? 少し変えてみてもうまくいきません!教えてください!

その他の回答 (4)

  • myRange
  • ベストアンサー率71% (339/472)
回答No.5

またまたまた、myRangeです。 日報のデータがたっぷりあるとチェックしにくいでしょうから 日報のC列でエラーになるセルに色をつけましょうか。 下記コードを走らせてください。結果は次のようになります。  赤色: エラーになるデータ  黄色: 空白(エラーにはならない) '--------------------------------- Sub test33()  Dim R As Long  Dim D  On Error Resume Next  For R = 2 To Sheets("日報").Cells(Rows.Count, "A").End(xlUp).Row    Sheets("日報").Cells(R, "C").Interior.ColorIndex = xlNone    If Month(Sheets("日報").Cells(R, "C")) = 99 Then    End If    If Err.Number > 0 Then    Sheets("日報").Cells(R, "C").Interior.ColorIndex = 3    Err.Clear    End If    If Sheets("日報").Cells(R, "C") = "" Then      Sheets("日報").Cells(R, "C").Interior.ColorIndex = 6    End If Next R End Sub '----------------------------------- 以上です。  

loveless-05410
質問者

お礼

何度もすみません。 ありがとうございます! おかげで助かっています。 このコードも使って何とかやってみます!

  • myRange
  • ベストアンサー率71% (339/472)
回答No.4

またまた登場、myRangeです。 >頼ってばかりで済みませんが、実行時エラーが >If Sheets("集計表").Range("A2") = Sheets("日報").Cells(R, "A") And _    Sheets("集計表").Range("B2") = Month(Sheets("日報").Cells(R, "C")) Then >のところででます >少し変えてみてもうまくいきません! エラーが出たら、どのようなエラーかのメッセージが表示されてるはずなのでそれも提示しないといけませんね。 恐らく、「型が一致しません」では? それから、コードを変更するするのはエラーの原因が分かってからですよ。 闇雲に変更してエラーを回避できるわけがありません。 ●まず、データを確認すること。 日報シートのC列にちゃんと日付が入っているかどうか確認してください。 それと、コードをよく見て、実際のセル番地とあっているか確かめてください。 以上です。

loveless-05410
質問者

お礼

回答ありがとうございます! いままでチョコチョコいじってたしかめながら変更していたら何とかなったので 、きっといままで運がよっかったんですね。 データは平気でしたが、見出しが邪魔なだけでした。 有難うございます。

  • layy
  • ベストアンサー率23% (292/1222)
回答No.3

前回からの修正不十分で、場所と日付に対する判定をすべきところをNOを判定しようとしているってことではないですか。 メッセージボックスの機能使って左辺は何、右辺は何、と値を検証してみて下さい。

loveless-05410
質問者

お礼

回答有難うございます!  原因がわかりました! 原因案を出していただきありがとうございます。 大元の見出しが検索の邪魔をしていたようです!

  • layy
  • ベストアンサー率23% (292/1222)
回答No.1

今は集計シートのセルに検索値をいれておいて、残りは引っ張ってくる感じですか?。 簡単なところでは、INPUTBOXの使い方を見て下さい。値入力を促す機能です。 この結果値を使うと良いです。

loveless-05410
質問者

お礼

回答有難うございます。 INPUTBOXですね!やってみます!