>VBAでの日付の置換方法を教えてください入力中の回答があります。ページを離れますか?※ページを離れると、回答が消えてしまいますページを離れるA回答を続ける入力中のお礼があります。16:19回答数:11件Excel2007のVBAにて日付の置換ができなく困っております。対象の複数列に入力されている下記の様なデータの内、日付の"yyyy/m/d"を"yyyy年m月d日"に置換しなくてはなりません。入力例1)2011/12/132)2011/12/1~2011/12/133)2011年12月13日4)2011/12/1~2011/12/13の毎火曜ヒントでも構いませんので、宜しくお願い致します。通報するこの質問への回答は締め切られました。最近、私は本気で自分の年齢を忘れてしまいました。10:07No.2です。>残念ながら今回はformatの問題ではなく、文字列に変換しなくてはならないのです。言っている意味が分かりません。No.2にかいた方法は、変数sに文字列として結果が得られるのですが。月や年をまたがって、「毎週」などの計算をするとなると、Dateとして計算したほうが、格段にプログラムが簡単になります。No.10にも書いてありますが、Formatの意味が分かってないのではありませんか。21:19置換という言葉を出すところを見ると、エクセルの日付の日付シリアル値と日付書式のことが判ってないのでは。今見えているのは、日付シリアル値+日付書式(A)でそう見えている(+は設定とか適用するということ)それをyyyy年m月d日の日付シリアル値+表示形式(B)にすれば仕舞い。文字列に出したいならFormat関数で第2引数をyyyy年m月d日にすればよい。セルの値が文字列なら、まず日付シリアル値に変換することを目指すべきだ。日付シリアル値に出来ればFormat関数で、それに前記の表示形式の文字列yyyy年m月d日を指定すればしまい。・文字列の分は、DateSerial関数の利用で日付シリアル値化ー>Format関数で出来なしかやってみてください。場合分けが多数になるかも知れないが、やむをえない。自分のコードで日付をいじくらないほうが良い。MSエクセルに任せるべき。18:54面白そうなので私も......全部文字列で入っていると仮定して、とっても強引な力技で置換をかけてます。18:501と3だけですが、表に=TEXT(データの入っているセル,"yyyy年mm月dd日")の式で、文字列型に変換できます。この結果をVBAで拾えばよいでしょう。I------------------------------イミディエイト------------------------------2011年12月13日2011年12月13日~2011年12月142011年12月13日2011年12月13日~2011年12月14日XferFormat()の手続きは6ステップ1、変換前文字列の"日"を""に変換し変換後文字列変数に代入。2、変換後文字列の年に相当する数字の後に"年"を挿入する。3、挿入に続く文字が"/"なら消去して変換後文字列変数に代入。4、変換後文字列の月に相当する数字の後に"月"を挿入する。5、挿入に続く文字が"/"なら消去して変換後文字列変数に代入。6、変換後文字列の日に相当する数字の後に"日"を挿入する。変換後文字列の年に相当する数字=>先頭から1文字づつ調べてフラッグを立てる。このフラッグの値を手がかりの月や日に相当する数字を判定する。これなら、如何なる形式のデータにも対応すると思います。入力日付は文字列である事が前提です。17:31まぁ難しく考えずに簡単なチカラワザで。VBAでも正規表現が使えるはず(標準で備わっているか別途組み込みかは忘れました)なので検索用マッチパターンを書いてパターンマッチ変数の値参照して置換で、できると思います。検索用マッチパターンにXBNF記法を使えます。元データが十の位を0埋めしているほうがマッチパターンを書くのは楽ですが、それほど難しくはないでしょう。前提としては、元データに/区切りのパターンに年月日以外のまぎらわしいものが混じらないこと、西暦年の範囲がはっきりしていること、ワークシートセル以外の置換は対象外が担保されれば十分だと思います。単純にただひとつの日付データが入力されているセルに関しては、日数計算用データやファイル名データとして別のセルやマクロで使われている可能性があるので、置換してしまってからトラブルが起きないよう、念入りに仕様を検討するほうが好ましいでしょう。...1)と3)については、もし入力されている値が文字列ではなく日付だった場合はいろいろ手間が増える。"yyyy年m月d日")で、sに結果が得られます。回答有難うございます。残念ながら今回はformatの問題ではなく、文字列に変換しなくてはならないのです。複数条件での検索を関数を使って解決したいです。次の回答→お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!全カテゴリから検索このカテゴリから検索Q質問する(無料)このQ&Aを見た人はこんなQ&Aも見ています出産前後の痔にはご注意!一体なぜ妊娠・出産には痔がつきまとうのだろうか?その理由を見ていこう。Basic(VBA)VBAで文字列を数値に変換したいExcel(エクセル)4エクセルの日付書式を一発置換したい。現在開いているブックのファイル名を取得する方法その他(ビジネス・キャリア)出産前後の痔にはご注意!一体なぜ妊娠・出産には痔がつきまとうのだろうか?その理由を見ていこう。Basic(VBA)VBAで文字列を数値に変換したいExcel(エクセル)4エクセルの日付書式を一発置換したい。EXCEL2007で、セルに「ユ-ザー定義(yy/m/dd)」で日付を入力し保存しましたが、日付がいつの間にか変更されています。セル内の文章が数式バーに表示されますが、これまで通り全部表示したいのですが。回答数ランキングです。職業ビジネスアドバイザーこの専門家の回答をチェック他の専門家の回答をチェックこのQ&Aを見た人が検索しているワード日付マクロ置換VBAエクセルこのQ&Aと関連する良く見られている質問Qexcelのvbaを使って日付を置換したいのですこんにちは。いつも質問ばかりですみません。2004/5/5とか、5月の日付ばかりはいっていたとして、その2004/5の部分を2004/6に置換したいとします。Subのようになるのですが、このプロシージャーを実行しても、うまく置換できません。どのように記述したら、できるのか、教えていただけるとうれしいです。AベストアンサーExcelは普通に日付を打つとシリアル値という数値になりますので、上手く動かないのでしょう。メソッドでのやり方は知らないので代替案です。セル範囲を指定してから下記を実行して見て下さい。1月ずつ加算されます。