質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.48%

  • VBA

    1859questions

    VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

VBAで>=の結果が>になってしまいます

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 185

emico

score 2

みなさまお世話になります。
VBAオートフィルタ機能の日付抽出で質問です。
mm/dd(開始日)~mm/dd(終了日)の期間のデータを抽出したく以下のコードを作成しました。
mm/dd(終了日)はmm/dd(終了日)以下の日付で抽出しますが
mm/dd(開始日)はmm/dd(開始日)より大きい日付で抽出されてしまいます。
mm/dd(開始日)を含む抽出条件にするにはどのように記載したらよろしいでしょうか?
よろしくお願いします。

AutoFilter field:=15, Criteria1:=">='" & TextBox1.Text, Operator:=xlAnd, Criteria2:="<='" & TextBox2.Text
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+2

シングルクォーテーションが入っているのはコピペミスでしょうか。
">='"

それはともかく、セルおよびテキストボックスにはどのような値が入っているのでしょうか?
セルのデータに時刻は入っていませんか?
またテキストボックスのデータに時刻は入っていませんか?

こちらで試したところ、セルのデータは時刻なし(表示させると0:00の状態)、テキストボックスのデータを2018/06/25の値としたところ正常に抽出できました。
テキストボックスのデータが2018/06/25 10:00なんかになっているとアウトです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/06/26 09:31

    ttyp03様
    早速の回答ありががとうございます。返答が遅くなり申し訳ございません。
    シングルクォーテーョンは検索データを文字列の’6/25のようなデータになっているので検索条件にも付けていました。
    シングルクォーテーョンがないと検索が出来ず付けると検索が出来ました。
    ただし終了日は検索して欲しいように抽出出来たのですが開始日が思ったように検索が出来ず
    何か間違いがあるのか質問させていただきました。
    検索データのデータの変更から考えてみます。

    質問に書かれていない検索データまで考えた視野の広さやさまざまな条件を想定していただき大変感謝しております。
    ただ今修正にとりかかることが出来ず結果のご報告ができませんが先にお礼を申し上げます。
    結果はまたご報告させていただきます。
    ありがとうございます。

    キャンセル

  • 2018/06/26 10:51

    > シングルクォーテーョンは検索データを文字列の’6/25のようなデータになっているので検索条件にも付けていました。

    文字列なら、桁数をそろえないと、あかんよ。

    "6/25" > "12/25"
    となっちゃう。

    その辺は大丈夫ですか?

    キャンセル

  • 2018/06/26 19:54

    hatena19様

    コメントありがとうございます。文字列だと桁数をそろえるのですね。
    今回はたまたまですが同じ桁数での検索しかしていません。
    6/20~22開始日 6/25~28終了日
    桁数をそろえる。もう少し勉強してみますね。
    気にかけてコメントをくださりありがとうございます。

    キャンセル

+1

文字列の’6/25のようなデータになっているので

文字列にしたら、以上とか以下の評価が出来なくないですか?
>=で、比較するのは数値として評価しますということです。
なのでセル内は日付型の数値(シリアル値)になっていてセルの書式設定で
6月20日とか6/20とかのように見せて置けば、
抽出条件が
>=6/20でも
>=6月20日でも
日付として評価できると思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/06/26 19:49

    mattuwan様

    ご指摘ありがとうございます。私も文字列なので日付の抽出には使えないだろうと思っていました。

    例:抽出条件 開始日6/21 終了日6/26

    抽出条件にシングルクォーテーション無しの時は開始日も終了日も検索せず、なんのデータも抽出されませんでした。→結果 何もデータが抽出されない。

    検索データの日付が文字列で扱うように「’6/26」というデータで入力されているのを思い出し、ためしに抽出条件にシングルクォーテーションをつけてみたところ開始日より大きい終了日以下のデータが抽出できました。結果→6/22~6/26のデータが抽出される(6/21のデータも欲しい)。

    開始日も終了日も認識しなければ文字列で比較はできないと考えたのですが何故か開始日より大きい終了日以下のデータが抽出できたため抽出条件の記載に問題があり開始日以上でのデータが抽出できないのかと考えてしまいました。
    上記のような結果になる原因はわかりませんが解決策として検索データを変更してから抽出することにしました。
    文字列日付をコピー
    別のセルに貼付
    貼り付けたデータを表示形式を”G/標準”に設定
    CDdate関数でで日付データ型に変換
    シングルクォテーション無しの条件で欲しいデータで抽出できました。

    皆さまいろいろと考えてきただきコメントをくださりありがとうございます。
    今回は抽出データの変更で対応しましたが皆さまのご指摘条件確認してみます。
    ありがとうございました。

    最後に何故日付を文字列にしているのか私も忘れていたのですが思い出しました。
    日付を文字列にしているのは印刷した際に6/26というよな表示にしたいため文字列として扱うようにしています。表示形式の変更ですと画面上は6/26の表示なのですが印刷の際に2018/6/26となってしまうのでとりあえず文字列としていました。長文失礼いたしました。

    キャンセル

関連した質問

同じタグがついた質問を見る

  • VBA

    1859questions

    VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。