• ベストアンサー

VBAを利用しオートフィルタで日付抽出でエラー

Wendy02の回答

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答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型の変数に入れて、検索するという方法があります。

senho
質問者

お礼

いまくいかない対処法で回避できました。 いろいろとありがとうございました。 当面EXCEL2002を使っていくので、オートフィルタで日付を使った 抽出をするときは、シリアル変換された値で見ることにします。 とても助かりました。

senho
質問者

補足

バージョン情報ですが、EXCELは2002です。XPはSP2です。 上記でテストしてみましたが結果変わらずでした。 うまくいかない場合の対処をやってみます。

関連するQ&A

  • VBA オートフィルタの設定・解除

    VBAで、データの並べ替えを行った後、1番最後に行ごと選択してオートフィルタを次の様に設定しています。 ' オートフィルタつける Rows( 変数1 & ":" & 変数2).Select Selection.AutoFilter ----------------------------------------------- これだと、1回目のプログラムは正常に動くのですが、 次に同じシートを利用して、またプログラムを動かすと、 シート上にオートフィルタが既に設定されているままになっているので、 オートフィルタを解除して終わってしまいます。 なので、【すでにオートフィルタがシート上で設定されている場合は、オートフィルタを解除する】 ということをプログラムに組み込みたいのですが、そういった式(?)は ありますでしょうか。 ※初心者で、わかりにくい文章になっているかと思いますが、  何卒宜しくお願い致します。

  • オートフィルタを使わず条件抽出

    オートフィルタを使わず条件抽出をしたいのですが数式がわかりません。(Accessを使えばよいのですが会社からNGがでたため) 具体的には、Sheet1に参加日、参加時間、受付整理番号、氏名、フリガナ、そのほか住所などの申し込みデータがあります。 そこから、毎日、その日、その時間分の参加者データを綺麗なリストとして印刷したいため、1つの参加日・参加時間の氏名・フリガナだけを抽出した別シートSheet2で作成したいのです。 別シートに、A1に参加日、B1に参加時間を入力すると(実際は入力規制のリストから選ぶ)、 整理番号1番から縦に30番まであるセルC列の右D列に、氏名を表示させるようにしたいのです 以下、Sheet2の項目です A1    B1   C     D  F 参加日 参加時間 整理番号 氏名 フリガナ           1   数式 数式           2   数式 数式           3   数式 数式 A1でかつ、B2でかつ、C2に絞った結果をSheet1から抽出することは可能でしょうか

  • VBAでオートフィルタを使った抽出がうまくいきませんのでどなたか教えて

    VBAでオートフィルタを使った抽出がうまくいきませんのでどなたか教えてください。 A列、C列に日付が入っていて、A列は空白以外のセルを表示し、かつC列は、開始日、終了日で抽出したいのですが、うまくいきません。 With Worksheets("sheet").Activate 開始日 = ">=" & TextBox1.Text 終了日 = "<=" & TextBox2.Text .Range("A1:N200").AutoFilter Field:=1, Criteria1:="<>" .Range("A1:N200").AutoFilter Field:=3, _ Criteria1:=開始日, Operator:=xlAnd, _ Criteria2:=終了日

  • 検索したい日付からデータを抽出したい。

    こんにちわ。 キャンペーンが何日~何日までどういった内容がある、という一覧を作成しています。 Aの列が開始日、Bの列が終了日、Cの列がキャンペーン内容、です。 検索したい日付をD1のセルに入力したら、その日付に該当するキャンペーンすべてを別のシートに抽出できないでしょうか・・・ オートフィルタで抽出は出来るのですが、日付を入力しただけで抽出 させたいのですが、無理でしょうか・・・ よろしくお願いします。

  • エクセルのシート上でオートフィルターを使ってデータを抽出した際の処理について・・・

    素人ゆえわかりづらい質問をどうかご勘弁ください。 エクセルで下記のような金銭出納帳を作ったのですが、オートフィルタでデータを抽出したときに、抽出したデータだけの金額の集計と、その総計を抽出後の一番最後の行の合計額のフィールドに自動的に出し、抽出を解除したときに消えるようにしたく、VBAマクロ組んで試行錯誤したのですが、うまくいきません。どなたか知恵を分けていただけませんか?   (データ抽出後)   A B C D E F G   E1=入金額 1  # # # # # # #  F1=出金額 2  # # # # 5 0 ?  G1=合計額 6  # # # # 5 0 ?  G2=元金 9  # # # # 5 0 ?       合計   ? オートフィルターで抽出した際自動的に?を求め、抽出を解除したときにそれを消したいのですが・・・

  • Excelのオートフィルタでデータ抽出するマクロについて

    オートフィルタで指定した期間のデータ抽出のマクロを作成しているのですが上手くいきません。 例えばA列に 10月29日 11月1日 11月3日 11月5日 と日付を入力しており、B列、C列にデータを入力していたとして D列1行目に10月31日、D列2行目に11月4日と入力し D列1行目からD列2行目までと指定したデータを抽出するマクロを教えていただけませんか。 マクロ初心者で、困っております。どうかよろしく御願いします。

  • VBA・オートフィルタで抽出・貼り付けをFor~Nextで実現するには?

    VBA・オートフィルタで抽出をFor~Nextで実現するには? お忙しいところお世話になります。 表題のとおり、VBAを使い、オートフィルタで抽出→貼り付け処理→移動を行いたく構文を考えています。 が、、どうもうまくできず、困っています。 自分で現状考えたコードは以下のとおりです。 -------------------------------------------------------------- Sub 貼り付ける() For i = 1 To 3 Worksheets("集計表").Cells(2.1).AutoFilter Field:=1, Criteria1:=i Range("A1").CurrentRegion.Copy Destination:=Worksheets(i).Range("A1") Worksheets(i).Move Next End Sub -------------------------------------------------------------- オートフィルタで選択する箇所は、管理番号というものがふられており、それが処理回数と一致しています。なのでオートフィルの部分を Criterial=iとしてみたのですが、ここが違うのでしょうか・・・。 管理番号数=処理数なので、1→2→3と順に処理をさせていきたいのです。 オートフィルタ後のの貼り付け処理は、とりあえず上記処理を行う前に貼り付けようの空シートが出来ているのでWorksheets(i)としてみましたが考えはあっているでしょうか。 (シート名=管理番号で、新シートを作成する部分までは、以前作成したので出来ています) 類似の質問も見受けられますが、そこから自分のものを手直しするまで噛み砕く能力が低く、後学のためにも自分で考えたものにアドバイスいただけたらと思いこちらで質問させていただきます。 ご迷惑かけますがアドバイス頂けますと幸いです。 何卒宜しくお願い致します。

  • Excel オートフィルターを使わずに抽出

    Sheet1A列に日付、B-G列に業種等の項目が入っており、通年の全データが入っています。データ総数は500ほどです。 これを月ごとのシートに分割したいと考えています(Apr,May,Jun,Jul・・・)。これらはSheet1と同じブック内で管理したいと考えています。 Sheet1と月ごとのシートはフォーマットが違い、項目の順序等が異なっています。各列ごとに関数を指定する必要があるかと思います。月ごとのデータ数は20-100くらいで変動します。 こういう状況なのですが、オートフィルター、VBAを使わずに関数で処理したいと考えています。過去の質問などから、INDEX, SMALL, ROWを使ったような関数で処理しようと思ったのですが、うまく処理できないのでご質問させていただいた次第です。 Libraoffice CalcとExcelを両方使う環境です。 どうぞよろしくお願いします。 Sheet1   A    B    C   D   E 3 日付   業者  金額  業種  カテゴリー 4 26/8/19  A社  569  食品  22-1  5 30/4/19  B社  278  加工  32-3 6 5/4/19   C社  654  書類  45 7 11/12/19  A社   754  服飾  63 8 Apr(月別シートの一例)   A    B    C    D     E    F    G 14 日付   業者  業種   カテゴリー 金額  その他1 その他2    15 16

  • オートフィルタの抽出速度を上げるには?

    エクセルで、データを抽出する際よく「データ」→オートフィルタ」を使うのですが、データ量が増えるにつれデータ抽出するのに5秒ぐらいかかるときがあります。 それが、別のエクセルファイルで、私がよく使うファイルよりもはるかに重いものがあるのですが、そのファイルで「オートフィルタ」を使ってもデータ抽出するのに5秒もかかりません。 もしかして、セル入力に「リスト」を使うのと「直接入力」とでオートフィルタの抽出速度の差が出てるのかなと思ったりもしたのですが、どうなんでしょうか? いろいろ調べたのですが、わからないので、アドバイスを下さい。

  • マクロでオートフィルターの抽出が出来ない

    下記のデーターをマクロで作成しましたが、2010/03/01は抽出するが、2010/03/02以降は デバッグが発生して上手くいきません。 どの様にすれば解決できるのか、ご教授お願いします。 現状) AファイルのA列のオートフィルタオプションで、抽出条件の指定にBファイルの C6をコピーして、「Ctrl」+「V」で貼り付け抽出すると2010/03/01の24時間分の データーが抽出されます。2010/03/02を抽出するとデバッグが発生する。 データーの詳細) Aファイルに「元データー Sheet」があり、A6~A44647に、 1ヶ月分の日付が記載されてます。 (B6~B44647には、24時間を1分間隔でのデーターがあります) A列の日付は、2010/03/01~2010/03/31のデーターがあり、 「セルの書式設定」を確認すると、「標準」設定で表記されてます。 オートフィルタによりA列の、各1日分のデーターを抽出させます。 Bファイルの「作成日指定 Sheet」のB3に2010/3/1を入力すると C6には「=$B$3」で「2010/03/01」と表示する様に「セルの書式設定」 「ユーザー定義」で「yyyy/mm/dd」を選択してます。(C36まで設定) 以下C7に「=$B$3+1」で、C8には「=$B$3+2」で、C36までで「2010/03/31」 と表示させてます。