重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【6/2終了】教えて!gooアプリ版配信終了

添付した画像の様な表があり、ここからEセルからHセルにフィルタをかけて「支社」がA社で「出資額」の列がブランク以外で「記載日時」が今月のものに絞り込みを行い表示された内容を別セルにコピーしたいのですがうまくいきません。
使用しているExcelは2000の為、xlFilterThisMonthなどは使えません。

また、自力で調べて以下のようなコードを書いてみたのですが、型が一致しません とエラーが出てしまいます。

どうか、ご教授願えませんでしょうか?

ちなみに記載日時はマクロで登録ボタンを押すと「Now」が yyyy/dd/mm/ H:mmで入るようになっております。

Sub 記載()
Dim 今月
今月 = DateSerial(Year(Date), Month(Date), "*")
With Sheets("一覧表")

.AutoFilterMode = False
.Range("D5:H5").AutoFilter
.Range("D5:H5").AutoFilter Field:=5, Criteria1:="<>"
.Range("D5:H5").AutoFilter Field:=2, Criteria1:=今月
.Range("D5:H5").AutoFilter Field:=3, Criteria1:="A社"
.Range(.Range("E6"), .Range("H15")).SpecialCells(xlCellTypeVisible).Copy.Range ("C5")
.AutoFilterMode = False
End With
End Sub

「マクロでオートフィルタを使用し、今月のデ」の質問画像

A 回答 (1件)

こんにちは



>型が一致しません とエラーが出てしまいます。
どこで発生しているかわかりませんが、推測するところでは

>今月 = DateSerial(Year(Date), Month(Date), "*")
ではないかと思います。
DateSerialの引数は全て数値でなくてはなりませんので、文字列の"*"が「型が違う」ということでしょう。
https://docs.microsoft.com/ja-jp/office/vba/lang …

フィルターとして今月を指定するためのようなので、わざわざ変数に入れる必要もなさそうですね。
オートフィルターで日付型の値で絞り込む仕様がイマイチ明確に説明されていませんが、
https://docs.microsoft.com/ja-jp/office/vba/api/ …
試してみたところ、 Criteria2にArray(n, Date)形式で指定すれば良いみたいです。
(nの値は、「0:年、1:月、2:日」単位での絞り込み指定となるらしいです)

…ということで、少し手を加えてこんな感じではいかがでしょうか?
最後にコピーを行おうとしている部分が、具体的に何をしたいのかわからないので、ここに関しては修正できませんでした。
(ひとまず、コメント化してありますので、コピーは実行されません。
  とは言え、範囲指定の記述法は、.Range("E6:H15") で十分かと想像します。)

Sub 記載()
With Worksheets("一覧表")
 .AutoFilterMode = False
 With .Range("D5:H5")
  .AutoFilter Field:=5, Criteria1:="<>"
  .AutoFilter Field:=2, Operator:=xlFilterValues, Criteria2:=Array(1, Date)
  .AutoFilter Field:=3, Criteria1:="A社"
 End With

' .Range("E6:H15").SpecialCells(xlCellTypeVisible).Copy.Range ("C5")
 .AutoFilterMode = False
End With
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございました!
返事遅れて申し訳ございません。
ログインパスワード分からなくなってしまい、右往左往しておりました。
 
おかげ様で無事に表が出来ました!

お礼日時:2019/03/18 19:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!