
会員管理表を作っています。
集計シートと入金管理シートがあり、入金管理シートに入金日を
入力させ集計シート上でオートフィルターを実行し、表示された
データだけを入金管理シートに抽出し印刷するというマクロを
作っています。
問題は、入金管理シートに"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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 複数セルデータを別シートの単一セルにコピーしたい。(詳細をご参照ください) 1 2022/12/14 15:08
- Excel(エクセル) エクセルで”入力シート”の文字書式の変更を”出力シート”で同じ文字書式で印刷したいです。VBA希望 4 2023/04/24 11:07
- Excel(エクセル) 前の(左隣の)シートを連続参照するように、あとから変更したい 1 2023/02/22 00:51
- Excel(エクセル) シート参照を含む数式を連続コピー 3 2022/12/10 11:42
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Excel(エクセル) エクセルで割り振りをする方法 7 2022/08/02 14:02
- Visual Basic(VBA) エクセルのマクロで対象ごとにシート分けしてその内容をセルに書き込みたい 9 2022/08/24 13:23
- Visual Basic(VBA) 顧客ごとに違う点検案内を作成するマクロ 4 2022/09/16 05:34
- Excel(エクセル) Excel 売上管理シートに入力した売上データを、日報に自動反映させたいと考えています。 売上管理シ 3 2023/04/29 18:08
- Excel(エクセル) ユーザー定義について質問です。 2 2023/06/28 13:21
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでリストにないデータ...
-
《エクセル》「エラー値“#N/A”...
-
ピボットテーブルの書式設定に...
-
指定日までの売上合計を別シー...
-
エクセル、複数のシートのデー...
-
エクセルのチェックについて
-
ワークシートを自動でコピー&ワ...
-
エクセルグラフの表示方法
-
VBA 関数がある複数シートを一...
-
エクセルで入力→日付を自動判別...
-
エクセル VBA リストボックス ...
-
データの貼り付け作業について
-
【Excel】ワークシートの指定を...
-
エクセルのコピペで不思議なことが
-
エクセルのシートを自動で
-
EXCEL2003
-
エクセルにおける、グラフの指...
-
Excelで数値→文字列変換で指数...
-
Excelの関数について、特定の文...
-
多数のセルを結合するマクロ
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルのワークシートが重く...
-
ExcelVBAで、指定したシートに...
-
エクセルで入力シートから別シ...
-
VBA セルの値と同じ名前のシー...
-
IF, ISNUMBER, INDIRECTの組み...
-
Excelの中央値の複数条件について
-
エクセルで入力→日付を自動判別...
-
Excel ハイパーリンク先のセル...
-
エクセルVBA:表の内容を担当者...
-
【Excel】VLOOKUP関数で複数の...
-
エクセル マクロを使って日々...
-
指定した日付の範囲内でデータ...
-
エクセルについて質問です 日付...
-
エクセルにて別シートの値を参...
-
エクセル:複数シートのデータ...
-
EXCEL VBA 一致しないデータの...
-
エクセル 毎日更新する表のデ...
-
エクセル シフト勤務表から、...
-
VBAのoffsetの動き方について教...
-
Excel 複数のシートからグラフ...
おすすめ情報