プロが教える店舗&オフィスのセキュリティ対策術

[セルの書式設定] の [表示形式]が標準(日付ではない)で単なる文字列となっている「mm-dd-yyyy」や「mm/dd/yyyy」のデータをマクロで「yyyy/mm/dd」の日付データに一括変換するマクロを教えてください。

たとえば、日付データが列Aにある場合にはDATE関数で、
=DATE(RIGHT(A2,4),LEFT(A2,2),MID(A2,4,2))
でも変換可能ですが、対象ファイルが多数、各ファイルにも対象の列が多数、そしてファイルの更新頻度も多いため、DATE関数を使用することは現実的ではない事情があります。
このためマクロを使用して処理させたいです。

添付のサンプルの例で一括変更するマクロを教えてください。
なお、Excelは2007を使用しています。

「yyyy/mm/ddの日付に一括変換する」の質問画像

A 回答 (5件)

マクロといっても日付のデータであることをいちいち判断することも容易ではありません。


むしろ日付に変化したいセルの範囲を選んでから「区切り位置」の機能を使って変換してはどうでしょう。
例えばA1セルからA100セルにデータがあるとしたらそれらの範囲を選択したのちに「ホーム」タブの「データ」から「区切り位置」をクリックします。
表示の画面でウィザードの1/3画面、2/3の画面で「次へ」をクリックして最後の画面では列のデータ形式の項で「日付」にチェックを付けたのちに右の窓では MDY を選択してから「完了」ボタンをクリックします。
    • good
    • 1
この回答へのお礼

区切り位置の利用は知っていましたが、yyyy/mm/ddの形にしたかったので、その並びの日付のYMDが自分のやりたいことと思いこんでいました。結果、変わらず。
MDYの選択で対応できることが分かりました。
ありがとうございました。

お礼日時:2013/02/23 10:04

質問者さんがお分かりになっていないと思う点は、ループをさせないと、マクロで実行しても何の意味もないということです。



「対象ファイルが多数、各ファイルにも対象の列が多数、そしてファイルの更新頻度も多い」としているにも関らず、それに関する具体的な情報が何も書かれていないということです。例えば、●ファイルを格納しているフォルダのツリー構造(フォルダ 1 つのみならその事実)、●ファイル命名の規則、●シートの構造、●シート命名の規則、●セルの配置、●これらの情報のファイル更新による変化、などなど。

DATE 関数であろうがその他の方法であろうが、「yyyy/mm/dd」形式にする方法は、別に何だって構わないんです。たいへんな部分はそこじゃないので。
    • good
    • 0
この回答へのお礼

具体的な情報は書ききれないのでひとまず添付した図の例に対する模範例を拝借して、それから自分なりに考えてみるつもりでした。
知識と質問力不足、失礼しました。

お礼日時:2013/02/23 10:17

No.3です。



No.1さんと同じ内容の投稿でした。

確認せずに投稿してごめんなさいね。m(_ _)m
    • good
    • 0
この回答へのお礼

ありがとうございます。
No1さんへのお礼の中で触れましたが、区切り位置の日付の仕様を十分理解していませんでした。
ご回答内容でも対応できることが分かりました。

お礼日時:2013/02/23 10:13

こんにちは!


今回の場合はマクロとか関数で処理する方法でなく、
手を動かす方法が一番簡単だと思います。

A列すべてを範囲指定 → データ → 区切り位置 → 何もせず「次へ」を2回 → 「日付」を選択
→ その右側の欄が「YMD」となっていると思いますので、下向き▼から「MDY」を選択 → 「完了」

>対象ファイルが多数、各ファイルにも対象の列が多数

とありますが、上記の操作はマクロでも可能です。
しかし、実データの配置等が判らないとここでコードを載せても意味がありません。

※ どうしてもマクロで行いたい場合は一旦マクロの記録にとって実データに合わせてコード変更すればOKだと思います。

参考になりますかね?m(_ _)m
    • good
    • 1

DATE(RIGHT(A2,4),LEFT(A2,2),MID(A2,4,2))



ループでまわせば良いだけでは?
    • good
    • 0
この回答へのお礼

仰る通りですが、他に何か別の方法があるかもしれないと思い、投稿しました。

お礼日時:2013/02/23 10:10

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