[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『別のシ−トへ抽出したいのです』(初心者)
はじめまして。
基本的な質問ですみません。
A B C D E F G
1 氏名 生年月日 01/01/99 01/05/99 03/05/99 ○ × 2田中 05/09/74 03/05/99 02/08/99 0304/99 × ×
・
・
上記のような表があり、これを元に別のシ−トへ抽出をしたのです。 条件としては、 C.D.Eそれぞれの日付が"今日"を過ぎているもの。(シ−トを開けた日) F.G それぞれが×のもの。
これをボタンにして、抽出できればと思います。
C期限切れ D期限切れ E期限切れ F×のもの G×のもの
↑こんな感じです。
わかりづらいですが、ご回答お願いいたします!
>基本的な質問ですみません。 ボタンで処理したいと言うことは、マクロ(VBA)のご質問ですよね?
初心者さんのレベルによって回答方法が異なってくるのですが、 VBAはどのくらい理解されていますか?
(INA)
>マクロはVBAから作った事はないです・・・・ メニュ−バ−から新しいマクロを登録する、でやった事はあります・・・
各日付は、日付形式で入力されていますか? それとも文字列ですか?
もし日付形式ならオートフィルタを使うだけで良さそうですが・・
(INA)
平成15年1月1日など、文字列で入力しています。 特に日付の表示形式では設定していません・・・。 オ−トフィルタでやるとできるんですか?????
せっかく日付データなのに、書式設定の表示形式を文字列にしてあるのですか?
' ←先頭にコレを付けてるとか? (INA)
[$-411]というのは、どのような設定なのでしょうか?
>オ−トフィルタでやるとできるんですか????? 文字列でなく、日付として入力されているようなので、 まずは試してみては如何でしょうか?
(INA)
>[$-411]というのは、どのような設定なのでしょうか? 「平成e年m月d日」で入力したときに自動的に [$-411]ge.m.dに設定されます。 つまり、文字列として入力しているつもりでも、シリアル値に変換されています。 [$-411]は「国と地域」の設定を表すものみたいですが、これも2002からは自動的に 追加されます。消しても日本語環境なら問題はないみたいですが、詳しくは下記。
http://office.microsoft.com/assistance/hfws.aspx?OfficeXP=true&AssetID=HA010346351041&CTT=6&Origin=EC010272491041 現在参照不可
失礼しました。 (KAMIYA)
上記の通り、「平成e年m月d日」と入力していますので自動でなったと思われます。 この場合でデ−タを抽出したいとき、どうすればいいですか????
INAさんのお勧めになっているオートフィルタは試されましたか? (KAMIYA)
KAMIYAさん。情報ありがとうございます。 (INA)
いろいろすみませんっ。 オ−トフィルを使ってみたのですが、ファイルを開けた日より1ヶ月前のデ−タをシ−トに自動で抽出したりする方法がわかりません。 それをボタンなどでできたらいいのですが・・・・・・(@_@。
日付の指定方法はおいといて、フィルタを使うことにより お望みの結果を抽出することは可能なのでしょうか?
フィルタ機能で問題がないようであれば、あとは日付の指定方法を工夫して、 マクロで自動化するだけです。
しかしオ−トフィルタを使っても、目的の結果を抽出できないようであれば、 オ−トフィルタ以外の方法で抽出しなければなりません。
オ−トフィルタを試して頂きたいと書いたのは、目的とする結果を得るための 手段を検討するために確認して頂きたかったのです。
ちなみに オ−トフィル と オ−トフィルタ は別物です。
(INA)
どうやら私の言っていることが、通じていないようですね・・・(-_-;)
>●これをボタン化したい。 これはどのように処理するかが決まった後の話です。 実行させる方法はどうにでもなりますので、いまは関係ないです。
>●ファイルを開けた日から1ヶ月前までの日付だけ取り出す。 たとえば、今日であれば、2004/1/19〜2004/2/19 として オ−トフィルタで抽出できるデータなのか知りたいのです。
繰り返しになりますが、 >オ−トフィルタを使っても、目的の結果を抽出できないようであれば、 >オ−トフィルタ以外の方法で抽出しなければなりません。 >オ−トフィルタを試して頂きたいと書いたのは、目的とする結果を得るための >手段を検討するために確認して頂きたかったのです。 ということです。 それともオ−トフィルタの使い方自体が分からないのでしょうか?
ところで、データは全部で何件(何行)くらいありますか?
(INA)
意味が通じなく、いらつかせてしまってすみません。。。。。
オートフィルタを設定することで可能なこと
また、「フィルタオプションの設定」を利用することで
このような機能があるので、ご希望の処理はたぶん可能です。 >●ファイルを開けた日から1ヶ月前までの日付だけ取り出す。 一応、オートフィルタでの手順を説明しておきます。 これはオートフィルタを設定し、日付の入力された列のプルダウンボタンを 押すとリスト中の日付のリストがプルダウンしますが、この中で「(オプション)」 という項目があるので、ここをクリックして日付期間を設定します。 「オートフィルタオプション」というダイアログが表示されるので、 「2004/2/19」「以下」 「AND」にチェック。 「2004/1/19」「より大きい」 として「OK」とします。 (KAMIYA)
その部分はオートフィルタではインスタントにはできません。 「手動でやる」方法を提示したまでです。 「ボタンで一発で」というのであればマクロプログラムを作ってボタンに登録。 ということになります。 どんなデータが入っているかわからないと、正確に動くマクロはつくれないので、 INAさんは苦慮しておられるわけです。 「ボタンで一発に」というのは「Cool!」ですが、そういう苦労があるわけです。 (KAMIYA)
どうやらオートフィルタで抽出できるようですね。
to KAMIYAさん ところでフィルタオプションでも出来ると思いますが、 標準の関数でセルに1ヶ月前の日付って取得できますでしょうか?
フィルタオプションの検索条件なのですが、 =C2<=NOW() と =C2>=NOW()-30 くらいしか思いつかなくて・・
DateAdd関数がつかえれば簡単なのですが・・
(INA)
こちらにアドインでないものを掲載させていただきました。 [[20040219101310]] 前月日付は、A1に=TODAY()で、B1の数式は、この方式では、以下のようになります。 月末日付の調整を独自に試行していますので、ご用向にマッチするかは、判りません。
=IF(AND(MONTH(A1+1)=MONTH(A1), (YEAR(DATE(YEAR(A1),MONTH(A1)-1,DAY(A1)))-YEAR(A1))*12 +MONTH(DATE(YEAR(A1),MONTH(A1)-1,DAY(A1)))-MONTH(A1)=-1), DATE(YEAR(A1),MONTH(A1)-1,DAY(A1)), DATE(YEAR(A1),MONTH(A1),)) ↓ 2004/2/29 2004/1/31 2004/1/29 2004/2/28 2004/1/28 2004/1/28 2004/3/31 2004/2/29 2004/2/29 2004/3/30 2004/2/29 2004/2/29 2004/9/30 2004/8/31 2004/8/30 2004/9/29 2004/8/29 2004/8/29 2004/2/20 2004/1/20 2004/1/20 ↑ =EDATE(A1,-1) (LOOKUP)
やはりLOOKUPさんに先を越されてしまいましたか。(笑) 昨日からぼちぼち考えてはいたんですが、 「一ヶ月前」の具体的な処理方法のご希望がわからないので・・・ 単に30日前なら、TODAY()-30 OR、NOW()-30 でいいと思いますが 日付を前月の中にすべて収めるという形なら、(ジャンプする日付が出ますが)
=IF(DAY(TODAY())=1,DATE(YEAR(TODAY()),MONTH(TODAY())-1,1),IF(OR(MONTH(TODAY()+1)=MONTH(DATE(YEAR(TODAY()),MONTH(TODAY())+1,1)),MONTH(TODAY())=MONTH(DATE(YEAR(TODAY()),MONTH(TODAY())-1,DAY(TODAY())))),DATE(YEAR(TODAY()),MONTH(TODAY()),0),DATE(YEAR(TODAY()),MONTH(TODAY())-1,DAY(TODAY()))))
(結果は同じですが、やはりまとめきれてませんねぇ) フィルタオプションの検索条件はたとえば「日付」という項目から抽出する場合は AND条件は(当日から当日の30日前まで) 日付 日付 ="<"&TODAY() =">="&TODAY()-30 OR条件では(当日、もしくは当日の30日前の日) 日付 =TODAY() 日付 =TODAY()-30 のようにできると思います。 (KAMIYA)
お二人ともすごい数式ですね・・・(∋_∈;)
ありがたくメモ帳にとっておきます。(__)
これで、フィルタオプションと併せて使えば、一般機能だけでも ある程度は、初心者さんの希望に添ったことができますね。
でも「ボタンで」とのことなので、マクロを考えないといけませんね・・・
(INA)
プログラムの仕様について、ご質問があります。
1)抽出先となるシートは既に存在するのでしょうか? それともボタンを押したときに、自動で新規シートを追加するのでしょうか? また、シート名は決まっていますか?
2)抽出先となるセルはどこになりますか? ボタンを押すごとに対象シートの最終行に追加していくのでしょうか? それともシートをクリアしてから貼り付けですか?
(INA)
オートフィルター → 抽出範囲の選択( ctrl + shift + * ) → コピー → 別シートに貼り付け
を「マクロの自動記録」して、基本となるコードを自動作成したら、 以下のようなコードが自動作成されると思います。
Columns("A:G").Select Selection.AutoFilter
Selection.AutoFilter Field:=3, _ Criteria1:=">=2004/1/20", Operator:=xlAnd, Criteria2:="<=2004/2/20"
Range("A1").Select Selection.CurrentRegion.Select Selection.Copy Sheets("Sheet2").Select Range("A1").Select ActiveSheet.Paste
オートフィルタの検索のキーワードの指定部分は以下の行になりますので、 >Criteria1:=">=2004/1/20", Operator:=xlAnd, Criteria2:="<=2004/2/20" を
Criteria1:=">=" & Format(DateAdd("m", -1, Date), "yyyy/m/d"), _ Operator:=xlAnd, _ Criteria2:="<=" & Format(Date, "yyyy/m/d")
のように変更してみて下さい。
(INA)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.