例えば以前私がした質問なのですが
http://oshiete1.goo.ne.jp/qa4837306.html

「質問投稿日時:09/03/29 22:09」をコピーし
エクセルへ貼り付け、
CTRL+Hで「検索と置換」と起動し、
検索する文字列:「質問投稿日時:」
置換後の文字列:(なし)
をすると、
結果は「2009/3/29 22:09:00」になります。

しかしこれをvbaの下記のコードで行うと
Columns("a").Replace what:="質問投稿日時:", Replacement:="", LookAt:=xlPart

結果は「2029/9/3 22:09:00」になってしまいます。
何が起こったのでしょう?

このような処理
(「文字列+日時」を日時だけにする)
をvbaで自動化したいので回避方法を教えてください。

ご教授よろしくお願いします

A 回答 (2件)

こんにちは。



もともと、書式が、そういう書式になっているからです。

リンク先の内容は違うようですが、http://oshiete1.goo.ne.jp/qa4953819.html
でしょうか?

その現象は、WinのOSの設定とExcelバージョンの組み合わせによる現象だったと思います。ただ、通常、コントロールパネル側の「日付、時刻、地域と言語オプション」の「地域と言語のオプション」の[短い形式]は正しく設定されているはすです。

しかし、Excel 2000 では、その設定には反映しませんから、そういう現象が現れます。

4文字の数字が、年という認識はしますから、以下のようにすれば可能です。

>Columns("a").Replace what:="質問投稿日時:", Replacement:="", LookAt:=xlPart

修正後:
Columns("A").Replace What:="質問投稿日時:", Replacement:="20", LookAt:=xlPart
'Columns("A").AutoFit '列を整える

'その後、
Columns("A").NumberFormatLocal = "yy/MM/dd hh:mm"

これを加えてください。1900年代も加わるときは、別なコードにしなければなりませんが、2000年以降だけなら、これでよいでしょう。そうでなければ、[区切り位置]ツールで、日付の部分をYMD形式にしてあげれば可能です。

書式設定は、NuberFormatでも良いのですが、Local をつけるのは、日本語の独特の設定をするときに必要になります。
    • good
    • 0
この回答へのお礼

なるほど。よくわかりました。ありがとうございます。

お礼日時:2009/05/25 21:59

下記で、対象セル範囲をループすればどうでしょうか。


ActiveCell.Value = Format(Replace(ActiveCell.Value, "質問投稿日時:", ""), "yyyy/mm/dd")
    • good
    • 0
この回答へのお礼

ありがとうございます。
一応このコードで対応できました。
しかし原因はなんなのでしょう?

お礼日時:2009/05/25 06:40

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

このQ&Aを見た人が検索しているワード

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

Qなんて書いてますか? ADD ME TO MARVEL'S DO NOT EMAIL LIST C

なんて書いてますか?

ADD ME TO MARVEL'S DO NOT EMAIL LIST
CHANGE MY EMAIL PREFERENCES

By entering your email address below, you will be unsubscribed from all future commercial emails from Marvel

Confirm your email address:

Aベストアンサー

ADD ME TO MARVEL'S DO NOT EMAIL LIST
私をMarvelの「メールを送らないリスト」に加えて下さい。

CHANGE MY EMAIL PREFERENCES
私のメールの設定を変更して下さい。

By entering your email address below, you will be unsubscribed from all future commercial emails from Marvel
下の欄にあなたのメールアドレスを入力すると、今後Marvelからの商業メールの送付が全て解除されます。

Confirm your email address:
あなたのメールアドレスを(所定の欄に入力して)ご確認ください。

Qaviファイルのサイズが突然0バイトに(エラーコード:0xC00D1199)

こんにちは。Windows XP、Windows Media Player ver.9を利用しています。
aviファイルをハードディスクに保存しておいたところ、ある日突然サイズが0バイトになってしまい、再生できなくなってしまいました。再生しようとしますと、「ファイルを再生できません。ファイルが破損しているか、再生しようとしているファイルの形式が Windows Media Player でサポートされていません。」と表示されてしまいます。エラーコードは「0xC00D1199」です。
解決方法をご存知の方、いらっしゃいましたらよろしくお願いいたします。

Aベストアンサー

再生するだけなら突然サイズが0になることはないはずですが…(なのでPlayerのバグとは考えにくい)。HDDの寿命かもしれませんね。

言っときますがHDDは2、3年経つと壊れやすくなると聞いたことがあります。

QTO DO LISTを日本語で言うと?

よくビジネスで、TO DO LISTって使いますよね。
手帳なんかにも出てきますね。

文字通り「やらなければならないことのリスト」という意味であることはわかるのですが、
そういう直訳的・説明的な訳ではない、ひとことでビシッと言い表せる定訳ってありますでしょうか?

ビジネスの現場にあまり詳しくないので、ビジネス関係の方、みなさんどんなふうに言ってらっしゃるか知りたいと思います。
よろしくお願いします。

Aベストアンサー

#1でございます。すこし補足を。


日本国内にはじめてファイロファクスの「システム手帳」が入ってきた時に、今までの日本の手帳にはないまったく新しい概念のリフィルがありました。それが「TO DO LIST」です。

やるべきことを羅列していくだけの用紙ですが、画期的だったのは「チェックマーク」を入れる部分があったことです。

完了したものにはチェックを入れて「済」ということにしておけば一目瞭然であり、チェックの入っていない項目だけを注意して見ていれば良いわけです。

こうしたTODOLISTの「忘れていることが明瞭にわかる」という機能に対して、日本語の備忘(忘れたときのための備え)という意味を重ね合わせて「備忘録」と呼んでいました。

当時のシステム手帳を使い始めた人たちが同様に感じてTODOLISTを「備忘録」と呼んでいたわけで、英訳がどうこうという話ではないのです。

QAccess:CCurの結果が単に文字列の羅列

Access2003 WinXP です。
9月~8月までのフィールドが用意されたテーブルがありまして、
1行づつ顧客名が入っており
各月に金額が入っていたり入っていなかったりしています。
クエリで、9月~8月までと、総合計を表示するようにしたのですが
総合計が、合計金額ではなく、文字列を繋げただけになっていました。

顧客名l9月l10月l11月~・・・l8月l総合計
Aさんl150,000l150,000l150,000~・・・l150,000l総合計は #エラー
Bさんl200l200l~・・・l200l総合計は 200200200
Cさんl1l l~・・・l3l総合計は 13
Dさんl456l456l~・・・l-456l総合計は #エラー

クエリの総合計のフィールドには

総合計: CCur(Nz([9月])+Nz([10月])+Nz([11月])+Nz([12月])+Nz([1月])+Nz([2月])+Nz([3月])+Nz([4月])+Nz([5月])+Nz([6月])+Nz([7月])+Nz([8月]))

と記載しました。。。
9月~8月までの合計金額を出すにはどのようにフィールドに書けば良いのか、分かる方いらっしゃいましたらご教授願います。

Access2003 WinXP です。
9月~8月までのフィールドが用意されたテーブルがありまして、
1行づつ顧客名が入っており
各月に金額が入っていたり入っていなかったりしています。
クエリで、9月~8月までと、総合計を表示するようにしたのですが
総合計が、合計金額ではなく、文字列を繋げただけになっていました。

顧客名l9月l10月l11月~・・・l8月l総合計
Aさんl150,000l150,000l150,000~・・・l150,000l総合計は #エラー
Bさんl200l200l~・・・l200l総合計は 200200200
Cさ...続きを読む

Aベストアンサー

横レスになりますが・・・(汗)

> total: CCur(iif(IsNull([9月]),0,[9月]))+・・・(以下略)

この式の各要素は、Nz関数で対応可能ですので、こちらをお勧めします。

 IIF(IsNull([9月], 0, [9月])) → Nz([9月], 0)
 (CCur関数と組み合わせると、「CCur(Nz([9月], 0))」になります)

また、提示された式をCopy&Pasteして使用しようとしたところ、IIF関数の第3引数
の幾つか(10,12,2,4,6月)で、数字と「月」の間にスペースが入っていることが
わかりました。
もしもクエリから直接貼り付けたものだとすると、これがエラーの原因になって
いる可能性もありますので、確認してみてください。
(こちらでは、パラメータの要求ダイアログがでたので、クエリの実行を中止)

※可能であれば、「9月」等のフィールドは文字列型ではなく通貨型に
 することをお勧めします。
  (書式が必要な場合は、テーブルやクエリの「書式」プロパティで対応:
  テーブルならデザインビューの左下、クエリならデザインビューでフィールドを
  ダブルクリックすると表示されるプロパティシートで、それぞれ設定できます)
  (クエリの場合、「*」ではなく各フィールドを個別に指定する必要あり)

横レスになりますが・・・(汗)

> total: CCur(iif(IsNull([9月]),0,[9月]))+・・・(以下略)

この式の各要素は、Nz関数で対応可能ですので、こちらをお勧めします。

 IIF(IsNull([9月], 0, [9月])) → Nz([9月], 0)
 (CCur関数と組み合わせると、「CCur(Nz([9月], 0))」になります)

また、提示された式をCopy&Pasteして使用しようとしたところ、IIF関数の第3引数
の幾つか(10,12,2,4,6月)で、数字と「月」の間にスペースが入っていることが
わかりました。
もしもクエリから直接貼り付けたもの...続きを読む

QOUTLOOKより軽いスケジューラ(TO DO LIST)

現在、OUTLOOKをスケジュール管理ソフトとして使っていますがかなり重いので他のものを探しています.
SCHEDULE WATCHER がいいときいて試してみたのですが
TO DO LISTの機能で定期的な仕事を入力する機能がないので困っています.
他にお勧めはありませんでしょうか
宜しくお願いいたします.

Aベストアンサー

私も、一時期スケジューラにはまって集めた記憶があります。
そのとき、SCHEDULE WATCHERも使用しました。
いっぱい集めたのですが、Zclock98というソフトも使用しました。
このソフトは、今Zclone98と名前を変えて配布されています。
ダウンロードして試してみてはいかがでしょうか。

(「定期的な仕事」という内容がよくわかりません。もう少し具体的に表記していただけませんか?)

参考URL:http://hp.vector.co.jp/authors/VA002242/zclone98/help_html/index.html

QOffice2000でMS09.DLLというエラーが出る

先日購入したPC(ME,Office2000)で文書作成していたところ突然
 winwordが原因でMS09.DLLにエラーが発生しました。
 winwordは終了します。
などというエラーメッセージが出てきて、作成中の文書がだめになってしまいました。こんなことが購入時からたびたび起きて、仕事になりません。
そのほか、作成中に画面上のカーソルが異常に点滅したり、ガイドの「イルカ」の動きが残像化現象を起こしています。
「イルカ」のほうは、グラフィックの設定を調整したので何とか我慢できますが、その他は深刻です。
改善のために、何かいい知恵がありましたらどなたかお教え願いませんか。

Aベストアンサー

んー症状から想像するに…
メモリ不足からくる不具合ではと思うのですけども。
イルカの残像化とか、カーソルの異常点滅とか。
リソース40%(それとも60%残存?)ってのが起動時の数字なら間違いなく、メモリ不足でしょう。
♯FMVってことはあの富士通製品なんですよね。
♯これでもかこれでもかと目一杯アプリを詰め込んでく
♯れることで有名な(笑)

具体的にどのような作業をしているときになるのでしょうか? あと同時起動しているアプリやバックグラウンドで動いているツール類を減らせば何とかなるかもしれません。
まメーカー製品の利点を生かしてサポートに電話してみては如何でしょうか。

Qto.do.に関して

I have not choise but to do so.
のto do so.が何故to do soなのかわかりません。
to do so.には何の意味があるのでしょうか?
to.do.に対して理解できてません。

Aベストアンサー

前に書いているはずです。
まず、古いイギリス英語なら have not もありますが、
普通は I don't have any choice ~か、I have no choice です。

I have no choice but to do so. で「そうするより仕方がない」

「そうする」とは何かは前に書いているはずです。
これだけの例文なら、そういう前提での文と考えるしかありません。

Q印刷時の MS09.DLL.error というメッセージ

パワーポイントを印刷しようとすると、印刷時に MS09.DLL.error というメッセージが表示されて、印刷できません。

ひとつの決まったファイルだけで、それ以外のパワーポイントで作成したファイルは正常に印刷できます。

どのようにすれば解決するのでしょうか?
教えてください。よろしくお願いします。

Aベストアンサー

ひとつだけとなるとそのファイルが壊れている可能性が高いのですが、下記のURLにはバックグラウンド印刷をやめるという方法も示されています。お試しください。

参考URL:http://www.rdpslides.com/pptfaq/FAQ00195.htm

QI'd like to do の過去形は?

「~したい」というときには、"I want to do"と言いますが、polite expression では、"I'd like to do"だということを以前教わって理解していたつもりなのですが、ふと「過去形では何と言うのかな?」という疑問が湧いてきました。

「~したかった」というときの"I want to do"の過去形は、"I wanted to do"だとわかるのですが、"I'd like to do"の過去形はどうやって表せばいいのですか?

"I'd like to do"は"I would like to do"だから、"I would have liked to do"になるのでしょうか?

Aベストアンサー

ご存知と思いますがなかなか英語と日本語は一対一には対応していないため、言い方はその内容により異なってきます。

>「やっと英会話スクールに入りました。前から行きたかったんです。」
という例ならば、普通に want でかまいません。(I've wanted to learn English in ESL classとか色々)
特に丁寧さに掛けるというわけでもありません。
あと、earger とか他の言葉による表現もあります。

なぜかというと、そもそもwantが強い表現で避ける理由は、自分の欲求をあからさまに主張する表現だから、それが実現していないにもかかわらず主張することがあさましい感じがするからなのです。

ですからそれをさけて would like to ~として、自分の欲求自体を仮定法を使って願望に変えているわけです。
つまり暗黙に、[if possible,] I would like to ~ と仮定の中において話しているから、控えめな表現とされるわけです。[]内は言葉にしませんがさまざまな適当な文に置き換えられるわけです。
日本語で言えば、「出来ましたら、~したいのですが、、、」のような表現ということです。

すでに実現した出来事に対して過去の自分の気持ちを言う場合には、would like のような表現は意味を成しません(仮定ではないわけですから)、wantのもつあさましさがあるわけではありません。(すでに実現しているから)

過去にそう思っていただけで現在も実現していないのであれば、仮定法過去をつかう表現にすることでwantのもつ浅ましさを消せるということです。

実現しているのであればwantは特に問題のある表現では無いということです。

ご存知と思いますがなかなか英語と日本語は一対一には対応していないため、言い方はその内容により異なってきます。

>「やっと英会話スクールに入りました。前から行きたかったんです。」
という例ならば、普通に want でかまいません。(I've wanted to learn English in ESL classとか色々)
特に丁寧さに掛けるというわけでもありません。
あと、earger とか他の言葉による表現もあります。

なぜかというと、そもそもwantが強い表現で避ける理由は、自分の欲求をあからさまに主張する表現だから、それが...続きを読む

Q日時データの形式について

いつも大変参考にさせて頂いております。

さて、今回は前任者が退職後に、ある資料を変更したいのですが
「生データ」の内容と、「加工された後のデータ」の内容が合致しておらず苦労しております。

この場所で皆様にお聞きする事は本来ならばおかしい事は充分承知しておりますが、
いかんせん前任者と連絡も取れず時間が無いので苦労しております。

該当のデータは 日付と時刻で

   生データ:1209512879

加工後のデータ:2008-04-30 08:47:59

生データから何らかの計算をすると、08/4/30 8:47:59 となると思うのですが、
エクセルの表示形式では解決できませんでした。


皆様のお知恵を拝借できればと思います。

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

Aベストアンサー

生データは秒数だと思います。
ある基準日の指定された時刻を開始時間として、そこからデータが秒数
としている表示されたものと思います。
おそらく[エポック秒]だと思いますので、以下のサイトを参考にしてはいかが。
http://d.hatena.ne.jp/takahiron34/20060512/1147413266

一応リンク切れの用心のために
生データが[ A1 ]セルとして
=A1/86400+(DATE(1970,1,1)+TIME(9,0,0))


人気Q&Aランキング

おすすめ情報