• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:yyyy/mm/ddの日付に一括変換するマクロ)

yyyy/mm/ddの日付に一括変換するマクロ

このQ&Aのポイント
  • Excel 2007を使用している場合、日付が単なる文字列として表示されている場合には、マクロを使用して一括でyyyy/mm/ddの日付に変換することができます。
  • 日付データが列Aにある場合、以下のマクロを実行することで変換が可能です: Sub ConvertDateFormat() Dim lastRow As Long lastRow = Cells(Rows.Count, "A").End(xlUp).Row For i = 2 To lastRow Cells(i, "A").Value = Format(Cells(i, "A").Value, "yyyy/mm/dd") Next i End Sub
  • このマクロを実行することで、対象の列にある日付データがyyyy/mm/ddの形式で表示されるようになります。マクロを繰り返し実行させることで、複数のファイルや列に対しても一括で変換することができます。

質問者が選んだベストアンサー

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

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

yukisaka
質問者

お礼

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

その他の回答 (4)

回答No.5

質問者さんがお分かりになっていないと思う点は、ループをさせないと、マクロで実行しても何の意味もないということです。 「対象ファイルが多数、各ファイルにも対象の列が多数、そしてファイルの更新頻度も多い」としているにも関らず、それに関する具体的な情報が何も書かれていないということです。例えば、●ファイルを格納しているフォルダのツリー構造(フォルダ 1 つのみならその事実)、●ファイル命名の規則、●シートの構造、●シート命名の規則、●セルの配置、●これらの情報のファイル更新による変化、などなど。 DATE 関数であろうがその他の方法であろうが、「yyyy/mm/dd」形式にする方法は、別に何だって構わないんです。たいへんな部分はそこじゃないので。

yukisaka
質問者

お礼

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

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.4

No.3です。 No.1さんと同じ内容の投稿でした。 確認せずに投稿してごめんなさいね。m(_ _)m

yukisaka
質問者

お礼

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

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんにちは! 今回の場合はマクロとか関数で処理する方法でなく、 手を動かす方法が一番簡単だと思います。 A列すべてを範囲指定 → データ → 区切り位置 → 何もせず「次へ」を2回 → 「日付」を選択 → その右側の欄が「YMD」となっていると思いますので、下向き▼から「MDY」を選択 → 「完了」 >対象ファイルが多数、各ファイルにも対象の列が多数 とありますが、上記の操作はマクロでも可能です。 しかし、実データの配置等が判らないとここでコードを載せても意味がありません。 ※ どうしてもマクロで行いたい場合は一旦マクロの記録にとって実データに合わせてコード変更すればOKだと思います。 参考になりますかね?m(_ _)m

  • masatsan
  • ベストアンサー率15% (179/1159)
回答No.2

DATE(RIGHT(A2,4),LEFT(A2,2),MID(A2,4,2)) を ループでまわせば良いだけでは?

yukisaka
質問者

お礼

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

関連するQ&A