会員管理表を作っています。
集計シートと入金管理シートがあり、入金管理シートに入金日を
入力させ集計シート上でオートフィルターを実行し、表示された
データだけを入金管理シートに抽出し印刷するというマクロを
作っています。
問題は、入金管理シートに"2007/4/27"と入力し、このセルを
Stringで宣言した変数に格納すると値が"2007/04/27"となります。
オートフィルタでこの変数を使用すると、当然2007/04/27で検索され
ますが、集計シートの日付は"2007/4/27"と表示されていてヒット
しません。月や日付の04や05の0が入らないように変数にセット
する方法はありますか?ちなみにどちらの書式設定は、日付で
yyyy/m/dを指定しています。教えてください。
集計シートはこんな感じです。入金日でフィルタをかけてます
A B C D
会員番号 会員名 入金日 入金額
0001 ぐうた 2007/4/27 1,000
0002 ぐうこ 2007/5/1 500
管理シートはこんな感じです。入力時には04と入力せず4と入力
しています。
【2007/4/27】入金データ
A B C
会員番号 会員名 入金額
0001 ぐうた 1,000
No.3ベストアンサー
- 回答日時:
こんにちは。
#1 のWendy02です。こちらは、以下のようにすれば通るのですが、どうも、バグっぽい感じがまだ残っていますね。
私は、Excel 2003 + XP で行っているから出来るともいえます。
>"4/27/2007"となってしまいました。
と見えるものは、関係ありません。それは、Date型のリテラル値です。もちろん、文字で比較するわけではありません。しかし、最初に書いたように、Excelのバージョンで反応が変わってくるはずです。
>オートフィルタでヒットする日付は”2007/4/27”だけで”2007/04/27”では返ってきません。オートフィルタではシリアル値で検索していないのでしょうか?
ワークシートからは、Enter キーを入れることによって、代入値の型の自動変換がありますが、ワークシートでは型の自動変換はありません。
それは、ともかく、以下でうまく行かないのでしたら、Excelのバージョンを示してくださらないと、オートフィルタにはバージョンによって、まったく出来ないバグがあるのですから、分からないのです。
書式の一致は関係ありません。
Sub testSort()
Dim nyu_day As Date
nyu_day = Cells(3, "C").Value
Selection.AutoFilter Field:=8, Criteria1:=nyu_day, Operator:=xlAnd
End Sub
なお、うまく行かない簡単な対処法としては、隠し列を作って、そこにシリアル値に変換した数値をいれておき、次に、セルから取った検索値を、Long型の変数に入れて、検索するという方法があります。
この回答への補足
バージョン情報ですが、EXCELは2002です。XPはSP2です。
上記でテストしてみましたが結果変わらずでした。
うまくいかない場合の対処をやってみます。
いまくいかない対処法で回避できました。
いろいろとありがとうございました。
当面EXCEL2002を使っていくので、オートフィルタで日付を使った
抽出をするときは、シリアル変換された値で見ることにします。
とても助かりました。
No.4
- 回答日時:
#02です。
試してみました。A列に 2007/4/1、2007/4/2 … という日付
B1に 2007/4/8 ←絞り込みたい日付(書式を標準にすると39180)
を入力して
Sub Macro3()
Dim b
b = Range("B1").Value
Columns("A:A").AutoFilter Field:=1, Criteria1:=b
End Sub
を実行したらちゃんと絞り込みができましたよ。
ステップ実行してbの値をみると 2007/04/08 となります。
コントロールパネルの「地域と言語の設定」で日付の形式を色々と変更してみましたが、それでも動きます。何か問題が違うように感じますが… また【】も少し気になります・・
一度上のデータを入力して、このマクロが動くか教えていただけませんか? なお私の環境はXP SP2+Office2003です
この回答への補足
試してみました。確かに上記記述はうまくいきましたが
オートフィルタでオプションに入力されている値を確認しOKを
押したら表示されなくなってしまいました。
上記マクロではうまくいったので、変数を指定せず
nyu_day = Range("C3")とセットしてやってみましたが、やはり
結果は同じでした。
フィルタオプションでセットされていたのは、どちらの場合も
”4/27/2007”でした。
私の環境はEXCEL2002なのですが、バグなのでしょうか?
初期情報が足りず、ご迷惑をおかけしました。
紹介いただいた内容だとうまくいきましたが、応用がきかない
ようです。バージョンのせいでしょうか。
どうもありがとうございました。
No.2
- 回答日時:
どのようなメソッド、ワークシート関数で絞り込み検索しているか書かれていませんが、日付(2007/4/27)はExcel内部では39199という数値データです。
これと"2007/04/27"の文字列を比較しても合致しません。>Stringで宣言した変数に格納すると値が"2007/04/27"となります
なぜString型を使用するのですか? 日付を格納するなら変数をVariant型にしておけば良いのではないでしょうか。
この回答への補足
No1さんにも補足しましたが、Date型やVariant型にすると
オートフィルタにセットすると、4/27/2007とセットされてしまい
もとの集計シートの入金日で表示されている2007/4/27とあわずに
ヒットしません。
オートフィルタでヒットする日付は”2007/4/27”だけで
”2007/04/27”では返ってきません。オートフィルタではシリアル値で
検索していないのでしょうか?
No.1
- 回答日時:
こんにちは。
Excelのバージョンにもよりますが、確か、Excel2000では、そのあたりで検索できないというバグがあります。その場合の方法はあります。
>入金管理シートに"2007/4/27"と入力し、このセルをStringで宣言した変数に格納すると値が"2007/04/27"となります。
>集計シートの日付は"2007/4/27"と表示されていてヒットしません。
String型でヒットするほうが不思議です。ワークシート上のデータは、シリアル値であるはずですから、どのような表示であれ、Date型のはずです。(つまり中身は変わらないということ)実際問題として、シートのセルに文字列日付を入れるのは不自然かもしれません。
文字型で入力されているなら、一旦、日付型に変更してあげなくてはなりません。
例:
myDate = CDate(Range("B1").Value)
ただし、動かない場合は、Excelバージョンとコードを見せてください。文章だけでは限界があります。
この回答への補足
実は、変数の型をDateで宣言して作ったのですがフィルタに
かけると"4/27/2007"となってしまいました。
そこで、いろいろ試してStringで変数をきりました。
2007/04/27も2007/4/27もシリアル値は同じである事は認識して
いるのですが、VBAでオートフィルタを使用する際にどのように
セットしたら、フィルタでヒットするかわからないでいます。
ちなみに今の記述は、以下のとおりです。(C3に入金日を入力する)
Dim nyu_day As String
nyu_day = Cells(3, "C")
Selection.AutoFilter Field:=8, Criteria1:=nyu_day, Operator:=xlAnd
これで、入金日の入力は2007/4/27と入力していますが
nyu_dayで取得すると2007/04/27となっています。
Date以外で使える変数は、どれがいいのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel ハイパーリンク先のセル...
-
エクセル マクロを使って日々...
-
Excelで複数のシートの合計を別...
-
エクセルで入力シートから別シ...
-
Excelの中央値の複数条件について
-
IF, ISNUMBER, INDIRECTの組み...
-
ExcelVBAで、指定したシートに...
-
エクセル:入力内容を別シート...
-
【Excel】VLOOKUP関数で複数の...
-
エクセル:複数シートのデータ...
-
テキストボックス内の文字のふ...
-
Excelで行ごとコピー、同じ行を...
-
Excelで数値→文字列変換で指数...
-
エクセルにおける、グラフの指...
-
Excelの関数について、特定の文...
-
エクセル
-
たくさん作った同じ設定のグラ...
-
エクセルでグラフタイトルが折...
-
日付が1年以内になると他のセル...
-
~エクセル~円グラフのみを抽...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 複数のシートからグラフ...
-
エクセルで入力シートから別シ...
-
VBA セルの値と同じ名前のシー...
-
ExcelVBAで、指定したシートに...
-
IF, ISNUMBER, INDIRECTの組み...
-
エクセルのワークシートが重く...
-
Excelの中央値の複数条件について
-
Excel ハイパーリンク先のセル...
-
質問:特定文字列から空白行ま...
-
エクセル シフト勤務表から、...
-
エクセルで入力→日付を自動判別...
-
エクセルVBA:表の内容を担当者...
-
エクセルについて質問です 日付...
-
エクセル マクロを使って日々...
-
EXCEL VBA 一致しないデータの...
-
該当するデータを書式設定ごと...
-
VBAのoffsetの動き方について教...
-
指定した日付の範囲内でデータ...
-
Excelの選択肢をポップアップリ...
-
Excel日付変更との参照先の連動
おすすめ情報