• ベストアンサー

エクセルで、J列にて「日付:2003年*月*日」が入った行を非表示にするには(ファイルタ機能は使わずに…)?

エクセル(97)にて、J列のセルに 「2003年*月*日」というように2003年の 日付が入っていたら、その行をマクロやVBAを 使って非表示にするようにしたいのですがうまくいきません・・・。 特定の日本語の文字列が入ってたら非表示になる方法は 解決したのですが、「2003年」などの日付は月日が ばらばらですし、うまく単語に引っかかってくれないのか 非表示になりません。 何かいい解決策はありますでしょうか?

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

日付は正式な入れ方2004/7/2のように入れた時は、日付シリアル値と言う整数(序数)が入ります。 このセルに関数YEARを適用すると2004が捕らえられます。Year関数はエクセルの関数にもありますが、 VB(A)の関数でもあり、VBAではこちらを使います。 Sub test01() Dim cl As Range For Each cl In Selection If Year(cl) = "2004" Then cl.EntireRow.Hidden = True End If Next End Sub j列で日付が入っている範囲を(j列だけ)範囲指定して 上記を実行すると良い。"2004"は2003年ならそのように 変えてください。 ha

noitigo
質問者

お礼

ちょっと、風邪をこじらせてしまいまして、なぜかヘルニアの症状も出てきてしまいました・・・。なぜか体調が悪い時に限って併発してくるのでやっかいです^^; 症状が長引くかはわかりませんが、検証できましたら報告いたします、本当にすみません<(_ _)><(_ _)>

noitigo
質問者

補足

imogasiさん!!!いつも本当にお世話になります!!!! すごいです!まさに出来ました!(^0^)! ありがとうございました!!! でも、皆様、VBAや関数ってどうやって勉強されてるのかとても気になります・・・ 私の勉強した数冊のエクセルのテキストや問題集って、皆様がご回答くださるような知識はほとんど入っていません(00;) ホント、尊敬します!!! ん~、とにかく、日々鍛練ですね^^! 改めてお礼申し上げますm(_ _)m

その他の回答 (2)

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.2

日付はシリアル値なので文字化すれば簡単です。 VBAなら Format(Range("A1"),"yyyy年") の様にすれば2003年になります。

noitigo
質問者

お礼

ちょっと、風邪をこじらせてしまいまして、なぜかヘルニアの症状も出てきてしまいました・・・。なぜか体調が悪い時に限って併発してくるのでやっかいです^^; 症状が長引くかはわかりませんが、検証できましたら報告いたします、本当にすみません<(_ _)><(_ _)>

noitigo
質問者

補足

mshr1962さん!いつもお世話になります。ありがとうございます!!!! 日付のデータを文字化して使うのは、(私にそこまでの件現がないので(ーー;))難しいかもしれません。。。 でも、ご意見として参考にさせて頂きます!!! ありがとうございましたm(_ _)m

  • snoopy64
  • ベストアンサー率42% (337/793)
回答No.1

YEAR(J2)で、J2セルの日付の「年」を取得できます。 頑張ってくださいヽ(^。^)ノ

noitigo
質問者

お礼

すみません、皆様、本日は、仕事が忙しくてパソコンがほとんど触れませんでした・・・。あと、風邪を引いてしまったのでちょっともうろうとします^^;明日も返事が遅れましたらすみません<(_ _)>

noitigo
質問者

補足

snoopy64さん!また、アドバイス下さって、ありがとうございました!! ところで、素人過ぎてすみません・・・。 >YEAR(J2)で、J2セルの日付の「年」を取得できます。 とはどういう意味でしょうか? 例えば、J列に「非表示」という文字列があれば、 非表示になるコードは、下のような感じになるのは わかったのですが、 Sub selectRowHidden() Dim rw As Long For rw = 3 To Range("C65536").End(xlUp).Row If Range("J" & rw).Value = "非表示" Then Rows(rw).Hidden = True End If Next End Sub この場合、snoopy64さんのご意見をどういった形で 反映していけばよろしいですか? それとも、全然違う別の方法での話という事でしょうか? 何かわかりましたら、お手すきの時に、すみませんm(_ _)mまたよろしくお願いします。

関連するQ&A