EXCEL VBAでクエリーを使用しデータを抽出する命令で困っています。

原始データ:CSVファイル (カンマ区切り)
項目の中に日付の入った項目があり指定した1日だけの抽出はうまくいきますが、
期間を指定(複数日)した場合にエラーとなってしまいます。

1日だけを指定した場合の命令(うまくいく)
日付という項目には数値タイプのデータが入っている
hizukeという変数にテキストボックスの値を代入する

hizuke = TEXTBOX日付1.Value
SELECT * FROM ファイル名 WHERE 日付 LIKE '%" & hizuke1 & "%' "

※ ここでワイルドカード(%)を使わないとエラーとなってしまいますが・・・

期間指定をした場合の命令(エラーとなる)

日付という項目には数値タイプのデータが入っている
hizuke1という変数にテキストボックスの値を代入する
hizuke2という変数にテキストボックスの値を代入する
hizuke1 = TEXTBOX日付1.Value
hizuke2 = TEXTBOX日付2.Value

SELECT * FROM ファイル名 WHERE 日付 BETWEEN LIKE '%" & hizuke1 & "%' AND LIKE '%" & hizuke2 & "%' "

この命令が正しいとは思いませんが、要はワイルドカードと演算子(BETWEEN)を併用したい訳です。

この考え方以外で期間指定のデータ抽出ができるのであればその方法を教えて下さい。

以上、よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

再びmaruru01です。



日付が"140305"のよう表現になっていては、日付として扱うのは難しいと思います。
おそらく「平成14年3月5日」ということなのでしょうが、数値型として扱っているので、「14万3百5」という数値でしか認識出来ません。
出来れば、これを日付型に変換した方がいいです。
この場合、
= DateSerial(年, 月, 日)
とすれば日付を表すVariant型の値を返してくれるのですが、どうも年が和暦のようなので、ちょっと工夫が要りそうです。
日付の値が、「年2桁+月2桁+日2桁」になっている場合に限りますが、前から2桁ずつ変数(例えば、strYear, strMonth, strDay(全てString型))に格納し、Date型の変数(例えばHiduke)に、
Hiduke = CDate("H" & strYear & "/" & strMonth & "/" & strDay)
(なお、先頭の"H"は平成の意味、昭和なら"S"などと変更する)
というように元データを作り直します。(もちろん日付フィールドは日付型)
そうしたら、テキストボックス1,2には、"2002/3/5"などのように日付を表す文字列を入力して、
"WHERE 日付 BETWEEN #" & hizuke1 & "# AND #" & hizuke2 & "#"
とすれば抽出できると思います。
なお、上記はExcel2000の場合で97や95では異なるかも知れません。
では。
    • good
    • 0
この回答へのお礼

いろいろお世話になりました。
自分でもいろいろと試行錯誤してやっていた所、単なる命令の記述ミスでした。
<ミスの内容>
WHERE 日付 BETWEEN " & HIZUKE1 & " AND " & HIZUKE2 & "OREDR BY 番号"
このように記述していた為、HIZUKE2の変数の後ろにORDER BY ~がくっついて
正しい命令となっていた事が分かりました。
<正しい命令>
WHERE 日付 BETWEEN " & HIZUKE1 & " AND " & HIZUKE2 & " ORDER BY 番号"
このように、ORDER BYの前に空白(スペース)を入れていなかったからでした。
お騒がせ致しましたが、今回、回答を頂いた命令は私は知らなかった為、また勉強になりました。
本当に有り難うございました。

お礼日時:2002/04/04 17:25

こんにちは。

maruru01です。

状況がよくわからないのですが。
まず、[日付]が数値型ということは、おそらく1~31の数値が入るのでしょうが、それに対して何のためにワイルドカードを使用しているのでしょうか。
あと、BETWEENとワイルドカードは併用出来ません。
期間指定はワイルドカードなど使わずに、普通に
WHERE 日付 BETWEEN " & hizuke1 & " AND " & hizuke2
とやってはだめなんですか?
とにかく、数値型の[日付]にワイルドカードを用いている状況がよくわかりません。
補足お願いします。
では。

この回答への補足

早速の回答有り難うございます。
説明が不足していたようなので補足します。
まず、なぜ日付にワイルドカードを使用するかについてです。

日付が140305のデータを抽出する
ワイルドカードを使用せず命令を書いた場合
WHERE 日付 = 140305 となる訳ですが、これではデータを抽出できません。
しかし、ワイルドカードを使用すると、
WHERE 日付 LIKE %140305% とするとデータを抽出できます。
従って、日付にワイルドカードを使用している訳です。

BETWEENとワイルドカードの併用はおそらく無理だと思っていました。
なにか他の方法で期間指定のデータを抽出できる方法はありませんか?

それと、日付にワイルドカードを使用しないとデータを抽出できないという件については、ひょっとするとデータに問題があるのかもしれません。

以上、補足いたします。どうぞ、よろしくお願いします。

補足日時:2002/04/04 08:04
    • good
    • 0
この回答へのお礼

有り難うございました。

お礼日時:2002/04/18 08:04

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

QJ-SOXで上場を目指していない中小企業は対応しなくていい?

上場企業はJ-SOXで内部統制に対応していかないといけないですが、上場を目指していない中小企業はJ-SOXに対応しなくて良いのでしょうか?上場を目指すならJ-SOXに対応していかないといけないというのは理解できますが、普通の中小の株式会社ではやる必要はないんでしょうか?

Aベストアンサー

「J-SOX」は文脈によって意味が異なる用語であるところ、上場企業の対応している「J-SOX」は、金融商品取引法に基づくものです。

他方、上場を目指していない中小企業(※)であっても、委員会設置会社であれば、会社法に基づく「J-SOX」に対応する義務を課せられます(会社法416条2項)。

また、取締役の合議ないし取締役会の決議で会社法に基づく「J-SOX」に対応する決定がなされたときは、やはり対応義務が生じます(348条3項5号、362条4項6号、423条参照)。

参考までに、「J-SOX」は、金融商品取引法上の義務を指す場合、会社法上の義務を指す場合、両者を合わせたものを指す場合などがあります。


※ 「中小企業」も、税法上の概念、中小企業基本法上の概念、一般用語としての漠然とした概念など、文脈によって意味が異なる用語です。この点、ご質問文においては、mellow91さんの文意から、少なくとも会社法上の大会社は含まないだろうと捉えました。なお、会社法上の大会社もまた、会社法に基づく「J-SOX」に対応する義務を課せられます(348条4項、362条5項)。

「J-SOX」は文脈によって意味が異なる用語であるところ、上場企業の対応している「J-SOX」は、金融商品取引法に基づくものです。

他方、上場を目指していない中小企業(※)であっても、委員会設置会社であれば、会社法に基づく「J-SOX」に対応する義務を課せられます(会社法416条2項)。

また、取締役の合議ないし取締役会の決議で会社法に基づく「J-SOX」に対応する決定がなされたときは、やはり対応義務が生じます(348条3項5号、362条4項6号、423条参照)。

参考までに、「J-SOX」...続きを読む

Q486のpush %ds 命令

古いlinuxのコードを読んでいて分からないことがありました。
具体的には、linux-0.1/kernel/asm.s の_divide_errorルーチンなどにあるのですが、

push %ds

命令がスタックを4バイト消費しているとして処理が行われているのです。
%ds は16bitのはずですし、普通にpushしたら2バイトしか消費しないように思えます。
スタックセグメントが32bitの場合は無条件に4バイト消費するのかと思い調べましたが
そういう記述は見つけられませんでした。

これはバグなのかと思い始めたのですが、中国語で解説されてるドキュメントを
発見して、push %ds で4バイト消費する図が描かれていました。

push %dsで消費するスタックの量は4バイトなのでしょうか?

Aベストアンサー

とりあえず Intel の資料を読んでみてはどうでしょうか.

参考URL:http://download.intel.com/products/processor/manual/325462.pdf

Q自動車の硫黄酸化物(SOx)の排気規制は?

ディーゼル車導入を検討しているのですが

それにあたっていろいろ調べているうちに
ディーゼルはSOxを多く発生するとありました。

窒素酸化物(NOx)や粒子状物質(PM)に関する規制は
検索するとすぐにみつかったのですが、
SOxに関する規制は見当たりませんでした。

ディーゼル車のSOxを規制する法律や条例は無いのでしょうか?
ある場合はその規制値など教えもらえると助かります。

Aベストアンサー

SOxの排出量は、燃料に含まれる硫黄分そのものになります。燃焼状態にあまり依存せず、使った燃料分だけがSOxとして輩出されると考えてよいのです。
ですから、燃料となる軽油の硫黄分がコントロールされていれば濃度規制が行われたのと同じことになります。軽油の成分、性状はJISでコントロールされていますから、違法軽油(重油を混ぜたようなもの)を使用しない限り排出量も把握できます。
ですから、大防法では規制されていないし、一般に浄霊でも規制対象になっていないのです。

一方、NOxやPMは整備状態や燃焼状態によって大きく変動するので規制が必要なのです。

QAccessVBAで実行時エラー'429'が出ます

ACCESS2000,WindouwsME
ACCESSから既存のEXCELブックを呼び出そうとしていますが、
  
       略
EXCEL名 = S2 & "XXX.xls"
Set xls = GetObject(EXCEL名, "Excel.Sheet")
       略

の、2行目で以下のエラーが出てしまい困っています。

実行時エラー'429'
ActiveXコンポーネントはオブジェクトを作成できません。

動かすパソコンの環境で、出る時と出ない時があるようです。
VBEのツールメニューから参照設定を確認しているつもりですが、
ここの理解も含めて原因が良くつかめません。
解決策をコメントできる方がおられましたらお願いいたします。

Aベストアンサー

参考になるようなURLを見つけました。
http://moug.excite.co.jp/skillup/opm/opm05-05.htm
「すでにWordが起動しているときにはそのまま処理を続行しますが、未起動のときには番号429のエラーが発生します。」
ただし自作テストで
Sub test01()
Dim x As Object
Set x = GetObject("c:\My Documents\aa1.xls")
x.Activate
With activeworkbook
MsgBox x.worksheets("sheet1").range("a1").Value
End With
Set x = Nothing
End Subでテストすると、その時エクセルを起動していないがうまく行きました。
ただAccessのモジュールの画面でツール-参照設定-MicrosoftExcel9.0ObjectLibraryにチェックを入れて
いますが。

Q法律英語:spread or binary bet

法律英語で「spread bet」「binary bet」というのがあるようです。確かに検索にはかかってくるのですが、意味がわかりません。文中では「, spread or binary bet, 」と挿入的に使われていました。
どのようなものか教えて頂けませんか?

Aベストアンサー

No.1です。
法曹ではありませんが、法律の仕事も金融の仕事も経験しました。
とはいえ、実務的な(文芸でない)翻訳に要する知識は幅広いので、経験分野の知識だけでは追いつきません。
結局はそのつど調査するしかないのが実情だと思います。

法律用語のリファレンスとしては Black の辞書と田中英夫先生の英米法辞典を手元においている人が多いようです。
米国の契約物を訳す際は「UCCコンメンタリーズ」が役に立つことがあります。
それ以外のものは、実際に使った感想として、あまり役に立たない気がします。
図書館で分厚い専門書や専門辞典をひっくり返して調査することがありますが、たいてい徒労に終わります。

正直なところ、最高に役立っているのは Google です。
特に、法律文書の背景となっている取引について知ろうとすると、紙の本や雑誌は情報が古かったり密度が薄かったり網羅的でなかったりしてあまり役に立ちません。
調べ方のコツですが、英語のフレーズを引用符 " " でくくって検索すると、欲しい情報がヒットすることが多いようです。
訳語は辞書に載っているが意味がわからないというときは、英文のサイトを含めて片っ端から読みあさります。
意味はわかるけど訳語がしっくりこないというときは、日本語サイトに限定して検索しています。
フレーズのまとまりを変えて検索するなど、かなり執念深くやっています。
これについては慣れとカンというしかありません。

ただ、法律文書を訳すには、法学の基本的な学習は必要だと思います。これはネットの情報では無理です。紙の本を読むのにそれなりの時間を割くことになるでしょう。法律自体の知識がないと、情報を検索するカンも働かないのではないでしょうか。

No.1です。
法曹ではありませんが、法律の仕事も金融の仕事も経験しました。
とはいえ、実務的な(文芸でない)翻訳に要する知識は幅広いので、経験分野の知識だけでは追いつきません。
結局はそのつど調査するしかないのが実情だと思います。

法律用語のリファレンスとしては Black の辞書と田中英夫先生の英米法辞典を手元においている人が多いようです。
米国の契約物を訳す際は「UCCコンメンタリーズ」が役に立つことがあります。
それ以外のものは、実際に使った感想として、あまり役に立たない気がします。...続きを読む

QWindows2008環境 'DATE /t'

いつも大変御世話になっております。

Windows2008環境で以下構文が入ったバッチを稼動予定です。

FOR /F "tokens=1 delims= " %%i in ('DATE /t') do SET TEST=%%i
Echo %TEST%

上記場合、Windows2000・2003では "YYYY/MM/DD"が表示されます。
※YYYY:当年 MM:当月 DD:当日

Windows2008でも表示可能でしょうか?

Windows2008がないので、どうしても検証ができません。

もしご存知の方がいらっしゃるようでしたら、お手数ですが
実現可能かどうかをご回答願いますでしょうか?

以上、何卒宜しくお願い致します。

Aベストアンサー

Windows Server 2008 R2で確認しましたが、日本語版の初期状態であれば同じ表示になりました。
ただし、コントロールパネルで表示形式は変更できます。
また、単に日付を取得したいだけなら、環境変数DATEを参照するだけで済みます。

QSO法とSOX法は違うのですか?

呼び方が違うだけで同じ法律なのでしょうか?
SOX法というのは金融関係の会社の法律でしょうか?

私は派遣社員で派遣先が「SO法」を守んなくちゃいけないみたいです。
私は派遣なのであまり関わりもなく、研修もないためよくわからないのですが。

SOX法は検索をかけるといっぱい出てくるのに
SO法は見つかりません。

よろしくお願いします。

Aベストアンサー

こんにちは

>呼び方が違うだけで同じ法律なのでしょうか?

同じです。
もともとの法律は米国の「Sarbanes-Oxley Act」という法律です。
もちろん「俗称」です。
「サーベンスさん」と「オクスリーさん」二人の議員(当時)さんが
作ったのでこう呼ばれます。
この頭文字をとって「SOA」。A(Act)は「法律」の意味ですから「SO法」。
ただ現在は「SOX法」という呼び名の方が「語呂がいい」ので、
米国では「SOX」という言い方のほうが多数派です。
ただ、米国の監査法人などは未だに「SOA」(SO法)という言い方
をしているところもあります。

>SOX法というのは金融関係の会社の法律でしょうか?

違います。
今話題になっているのはSOX法の中でも404条で規定されている
「財務報告に係る内部統制報告制度」です。

来年の4月以降、日本でもこの米国のSOX法と同じような
「財務報告に係る内部統制報告制度」が法律で規定されます。
(日本では「金融商品取引法」)
これは通称「日本版SOX法」「J-SOX」などと呼ばれています。

詳しい説明は省きますが「金融関係の会社」の法律ではありません。
「全ての上場企業」に対して適用されます。
ご興味があれば
・SOX法
・日本版SOX法
・J-SOX
・内部統制
・金融商品取引法
などで色々検索してみてください。

こんにちは

>呼び方が違うだけで同じ法律なのでしょうか?

同じです。
もともとの法律は米国の「Sarbanes-Oxley Act」という法律です。
もちろん「俗称」です。
「サーベンスさん」と「オクスリーさん」二人の議員(当時)さんが
作ったのでこう呼ばれます。
この頭文字をとって「SOA」。A(Act)は「法律」の意味ですから「SO法」。
ただ現在は「SOX法」という呼び名の方が「語呂がいい」ので、
米国では「SOX」という言い方のほうが多数派です。
ただ、米国の監査法人などは未だに「...続きを読む

Q「 '&lng='」の&の意味が分かりません。

下記はgooglemapで中心点(lat:緯度 lng:経度)からのある半径(radius)以内のマーカーを求めるプログラムの一部ですが「 '&lng='  '&radius='」に出てくる「&」の意味・機能がわかりません。
どなたかお分かりになれば教えていただきたく。

var radius = document.getElementById('radiusSelect').value;
var searchUrl = 'phpsqlsearch_genxml.php?lat=' + center.lat() + '&lng=' + center.lng() + '&radius=' + radius;

Aベストアンサー

URLパラメータの区切りです。

phpsqlsearch_genxml.php?lat=●●&lng=▲▲&radius=★★


■IT用語辞典 e-Words
クエリ文字列 【 query string 】 クエリストリング / URLパラメータ / URL parameter

http://e-words.jp/w/E382AFE382A8E383AAE69687E5AD97E58897.html

QSOX法って何ですか?

SOX法って何でしょうか?
テレビでもよく聞くのですが、勉強不足でよくわかりません。
それなのに会社から、SOX法に対応するための業務フローの文書化担当になってしまいました(もちろん一部ですが)
SOX関係のプロジェクトチームの人が簡単に説明してくださったのですが、逆に簡単過ぎてもうちょっと詳しく知りたいなと・・・
わがままな質問で申し訳ありませんし、自分で調べればいいのかもしれないのですが。。。
SOXの文書化で忙しく、ゆっくり調べている暇がありません。
すみませんが、簡単にわかりやすく教えていただけないでしょうか。
よろしくお願いします。

Aベストアンサー

日本版SOX法とは、金融商品取引法のことです。
2009年3月より上場企業では適用が義務付けされます。(連結子会社も含む)

これは一言で言うと、会社の財務的な信頼性を公表するため、内部統制システムがどのように構築されているかを書類によってまとめ、そしてその体制で運営していくというものです。
報告義務が果たされないと上場取り消しになる場合もあります。

対象となる書類は、
経理・財務部門の領収証・請求書、財務諸表、
購買部門の見積書・発注書・納品書・受領書、
設計部門の要求仕様書、設計仕様書、
物流部門の物流計画書、納品請書、
営業部門の契約書、
サービス部門の修理報告書
等となっており、

これらを、業務の有効性および効率性、財務報告の信頼性、事業活動に関わる法令等の遵守、資産の保全といった4目的を達成するために、どんな管理手法をおこなっているかをきちんとまとめておかねばならないというものです。(統制環境、リスクの評価と対応、統制活動、情報と伝達、モニタリング、ITへの対応の6つの基本的要素を盛り込むこと)
決算期には、経営者が「内部統制報告書」を、また監査人が「内部統制監査報告書」を有価証券報告書に添付して提出することになります。

すでにSONYなど委員会設置会社では義務化されていますので、公表されている資料を入手してみてはいかがでしょうか?(説明文、フローチャート、リスクコントロールマトリクス、職務分離表、業務管理表)

とりあえず現段階では、考えられるリスクの洗い出しとその対処に関して検討し、時間があれば業務フロー図を作成されておかれたほうがよいかとは思いますが。
(但し、挙げるリスクは最低2000程度といわれています)
なお、すべての業務に関してこれらが必要になることはないと思います。
12月に指針が出るようですが、現段階では売上げの50%
程度の部門まで統制が必要となるようです。

ただし、会社法でも内部統制システムの構築が必要となるため、大会社の範疇に入るようなら、会社法でいう
項目(経営戦略、日常業務、自然災害)も盛り込んで作ったほうが2度手間にならないといわれています。

日本版SOX法とは、金融商品取引法のことです。
2009年3月より上場企業では適用が義務付けされます。(連結子会社も含む)

これは一言で言うと、会社の財務的な信頼性を公表するため、内部統制システムがどのように構築されているかを書類によってまとめ、そしてその体制で運営していくというものです。
報告義務が果たされないと上場取り消しになる場合もあります。

対象となる書類は、
経理・財務部門の領収証・請求書、財務諸表、
購買部門の見積書・発注書・納品書・受領書、
設計部門の要求仕様書...続きを読む

Qmod_rewriteでの'?'表示

http://www.example.com/search.cgi?a=mypage&b=go&c=1&d=2
を、
http://www.example.com/mypage/go/search?c=1&d=2
に変えたいですが、どのようにすればよいのでしょうか?

htaccessでは・・・

Options +FollowSymlinks
RewriteEngine on
RewriteRule
^/([0-9A-Za-z]+)\/([0-9A-Za-z]+)\/search?c=([0-9A-Za-z]+)&d=([0-9A-Za-z]+)$
/search.cgi?a=$1&b=$2&c=$3&d=$4 [L]

にしてもアクセスできません…

APACHEマニュアルでは「?」は文字数指定と言う文法に
なるらしく、「?」を表示させたいです。
http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html#RewriteRule

どうすればよろしいでしょうか?ご教示ください。

http://www.example.com/search.cgi?a=mypage&b=go&c=1&d=2
を、
http://www.example.com/mypage/go/search?c=1&d=2
に変えたいですが、どのようにすればよいのでしょうか?

htaccessでは・・・

Options +FollowSymlinks
RewriteEngine on
RewriteRule
^/([0-9A-Za-z]+)\/([0-9A-Za-z]+)\/search?c=([0-9A-Za-z]+)&d=([0-9A-Za-z]+)$
/search.cgi?a=$1&b=$2&c=$3&d=$4 [L]

にしてもアクセスできません…

APACHEマニュアルでは「?」は文字数指定と言う文法に
なるらしく、「?」を表示させたい...続きを読む

Aベストアンサー

RewriteRuleではquery string(URLの?以降の文字列)にマッチさせることは出来ません。query stringの操作にはRewriteCondを使います。
しかしご質問のケースでは元のquery string(c=1&d=2)の部分は変更する必要がないので%{QUERY_STRING}をそのまま使えばよいと思います。

RewriteRule \
^/([0-9A-Za-z]+)/([0-9A-Za-z]+)/search$ \
/search.cgi?a=$1&b=$2&%{QUERY_STRING} [L]

でどうでしょう。(\は改行のエスケープなので1行で書く場合は必要ありません)


人気Q&Aランキング

おすすめ情報