A 回答 (11件中1~10件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
入力例にあるパターンだけでいいのならば以下のように処理しては如何でしょうか。
スラッシュの個数を調べる
2個の場合
1個目のスラッシュを"年"に置換
2個目のスラッシュを"月"に置換
2個目のスラッシュの後の文字を1文字ずつ調べて、数値で無くなった時そのひとつ前に"日"を挿入
(文字列終端に達した場合はそこに"日"を付け加える)
4個の場合
1個目のスラッシュを"年"に置換
2個目のスラッシュを"月"に置換
2個目のスラッシュの後の文字を1文字ずつ調べて、数値で無くなった時そのひとつ前に"日"を挿入
3個目のスラッシュを"年"に置換
4個目のスラッシュを"月"に置換
4個目のスラッシュの後の文字を1文字ずつ調べて、数値で無くなった時そのひとつ前に"日"を挿入
(文字列終端に達した場合はそこに"日"を付け加える)
No.3
- 回答日時:
1)と3)については、もし入力されている値が文字列ではなく日付だった場合はいろいろ手間が増える。
https://www.google.com/search?q=VBA+%E6%97%A5%E4 …
https://www.google.com/search?q=VBA+%E6%97%A5%E4 …
No.4
- 回答日時:
Excel VBAでも正規表現が使えるはず(標準で備わっているか別途組み込みかは忘れました)なので検索用マッチパターンを書いてパターンマッチ変数の値参照して置換で、できると思います。
検索用マッチパターンにXBNF記法を使えます。元データが十の位を0埋めしているほうがマッチパターンを書くのは楽ですが、それほど難しくはないでしょう。
前提としては、元データに/区切りのパターンに年月日以外のまぎらわしいものが混じらないこと、西暦年の範囲がはっきりしていること、ワークシートセル以外の置換は対象外が担保されれば十分だと思います。
なお単純にただひとつの日付データが入力されているセルに関しては、日数計算用データやファイル名データとして別のセルやマクロで使われている可能性があるので、置換してしまってからトラブルが起きないよう、念入りに仕様を検討するほうが好ましいでしょう。
No.5
- 回答日時:
まぁ難しく考えずに簡単なチカラワザで。
Sub macro1()
Dim h As Range
Dim s As Long
Dim e As Long
Dim res As String
Set h = Cells.Find(what:="/", LookIn:=xlValues, lookat:=xlPart)
Do Until h Is Nothing
res = " " & h.Text & " "
s = InStr(res, "/")
e = s
Do
s = s - 1
Loop Until s = 0 Or Mid(res, s, 1) Like "[!/0-9]"
Do
e = e + 1
Loop Until e = Len(res) Or Mid(res, e, 1) Like "[!/0-9]"
res = Application.Replace(res, s + 1, e - s - 1, Format(Mid(res, s + 1, e - s - 1), "yyyy年m月d日"))
h = Mid(res, 2, Len(res) - 2)
Set h = Cells.FindNext
Loop
End Sub
No.6
- 回答日時:
一案です。
入力日付は文字列である事が前提です。
(1)配列を定義する ArrayかSplitで配列定義("年", "月", "日","年", "月", "日")
(2)対象範囲をFindで最初のレンジをセーブ、FindNextでこのレンジと同一まで
検索を繰り返す
(3)検出したセルをInsterで「/」を検索、見つかれば、配列(カウンタ)で
順次置換、Instrの結果が0以上の間、置換処理を繰り返す
因みにカウンタは0相対で「/」の置換毎に+1
No.7
- 回答日時:
Dim I As Integer
Dim strBefore(3) As String
Dim strAfter As String
strBefore(0)= "2011/12/13"
strBefore(1)= "2011/12/13~2011/12/14"
strBefore(2)= "2011年12月13日"
strBefore(3)= "2011/12/13~2011/12/14の毎火曜"
For I = 0 To 3
strAfter = XferFormat(strBefore(I))
Debug.print strAfter
Next I
------------------------------
イミディエイト
------------------------------
2011年12月13日
2011年12月13日~2011年12月14
2011年12月13日
2011年12月13日~2011年12月14日
XferFormat()の手続きは6ステップ
1、変換前文字列の"日"を""に変換し変換後文字列変数に代入。
2、変換後文字列の年に相当する数字の後に"年"を挿入する。
3、挿入に続く文字が"/"なら消去して変換後文字列変数に代入。
4、変換後文字列の月に相当する数字の後に"月"を挿入する。
5、挿入に続く文字が"/"なら消去して変換後文字列変数に代入。
6、変換後文字列の日に相当する数字の後に"日"を挿入する。
変換後文字列の年に相当する数字=>先頭から1文字づつ調べてフラッグを立てる。
このフラッグの値を手がかりの月や日に相当する数字を判定する。
これなら、如何なる形式のデータにも対応すると思います。
No.8
- 回答日時:
1と3だけですが、表に
=TEXT(データの入っているセル,"yyyy年mm月dd日")
の式で、文字列型に変換できます。この結果をVBAで拾えばよいでしょう。
No.9
- 回答日時:
面白そうなので私も……
全部文字列で入っていると仮定して、とっても強引な力技で置換をかけてます。
Sub Sample()
Dim sBefore, sAfter
Dim i As Date
Cells.Select
'12/31~1/1へと遡る(うるう年も考慮)
For i = DateValue("2012/12/31") To DateValue("2012/1/1") Step -1
'mm/ddのパターンを置換
sBefore = Format(i, "/mm/dd")
sAfter = Format(i, "年m月d日")
Selection.Replace What:=sBefore, Replacement:=sAfter
'm/dのパターンを置換
sBefore = Format(i, "/m/d")
sAfter = Format(i, "年m月d日")
Selection.Replace What:=sBefore, Replacement:=sAfter
Next i
End Sub
No.10
- 回答日時:
置換という言葉を出すところを見ると、エクセルの日付の日付シリアル値と日付書式のことが判ってないのでは。
今見えているのは、日付シリアル値+日付書式(A)でそう見えている(+は設定とか適用するということ)
それをyyyy年m月d日の日付シリアル値+表示形式(B)にすれば仕舞い。
文字列に出したいならFormat関数で第2引数をyyyy年m月d日にすればよい。
もしセルの値が文字列なら、まず日付シリアル値に変換することを目指すべきだ。日付シリアル値に出来ればFormat関数で、それに前記の表示形式の文字列yyyy年m月d日を指定すればしまい。
VBAならIsDate関数で日付かどうか判別(だめならVarType関数での判別(日付は7)もやってみて)
・日付シリアル値ー>Format関数
・文字列の分は、DateSerial関数の利用で日付シリアル値化ー>Format関数
で出来なしかやってみてください。
~があるものは~で2つに分離し、2つの部分それぞれで考えてFormat関数を使い、2つを X & "~" & Yで結合する。
ーー
場合分けが多数になるかも知れないが、やむをえない。
ーー
自分のコードで日付をいじくらないほうが良い。MSエクセルに任せるべき。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(Microsoft Office) wordの差し込み印刷での日付表示 2 2023/08/15 16:51
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
- Visual Basic(VBA) Excel VBA 書式変更で困ってます。 オートフィルターの日付フィルターを用いて データの絞り込 2 2022/07/26 22:16
- Visual Basic(VBA) Excel VBA 教えてください。 VBA初心者です。 詳しい方がいましたら教えてください。 下記 3 2023/04/25 11:22
- Excel(エクセル) エクセルの数式で教えてください。 3 2023/04/17 09:25
- Excel(エクセル) 【vba】日付の形式が勝手に変わってしまう。 1 2022/09/29 10:54
- Visual Basic(VBA) VBA 検索と入力 Excel ブック ぶぶぶ シート ししし 列V 検索対象の列です 最終行は、お 6 2023/05/17 01:40
- Visual Basic(VBA) VBAで日付入力しているのですが 4 2023/03/02 11:25
- Visual Basic(VBA) VBA。複数のChangeイベントをまとめる方法 2 2022/03/31 12:03
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
excelのvbaを使って日付を置換したいのです
Excel(エクセル)
-
excel 日付のみ置換したいのです
Excel(エクセル)
-
エクセル(2003) 「1900/1/0」を消したい
Excel(エクセル)
-
-
4
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
5
UserForm1.Showでエラーになります。
工学
-
6
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
7
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
8
VBAでファイルを開くときにファイル名でワイルドカードを使用したいです
その他(プログラミング・Web制作)
-
9
VBAでの Replace関数で、ワイルドカードは使えないのでしょうか?
Visual Basic(VBA)
-
10
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
11
エクセルでエラーが出て困っています。
Excel(エクセル)
-
12
EXCELで日付と時刻が入ったセルを日付だけ取り出したい
Excel(エクセル)
-
13
エクセルでプルダウン選択されたらマクロの処理を実行させる方法
Word(ワード)
-
14
ACCESS VBAの実行時エラーなんですが
PowerPoint(パワーポイント)
-
15
EXCEL VBA 指定したファイルが存在しない場合メッセージボックスを表示させる
Access(アクセス)
-
16
参照先セルに値が入っていない時に、「0」や「1900/01/00」などが入らないようにしたいのですが
Excel(エクセル)
-
17
VBE画面とシート画面を同時に表示させるには?
Excel(エクセル)
-
18
VBA 置換文字がみつからない時
Visual Basic(VBA)
-
19
マクロ 特定のセル値のみクリアする
Visual Basic(VBA)
-
20
メッセージボックスに表示する文字を大きくしたい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで文字の入力がセルの...
-
多数の計算セルに一括で同一の...
-
エクセルのセルの中の,よりも前...
-
Excelからテキストへのコ...
-
Excelのmatch関数エラー原因が...
-
【エクセル】ピボットテーブル...
-
Excelで、半角スペースをTABに...
-
excelで可視セルのみ置換
-
置換機能を使わずに先頭に「'」...
-
小数点を消す方法
-
VBAでの日付の置換方法を教えて...
-
エクセルでセル内の一部を一括...
-
Excelの空文字セルの削除方法を...
-
エクセルでセル内の一部分だけ...
-
企業名簿で(株)や(有)を無視し...
-
エクセルの文字列を数式に変換...
-
エクセルで複数ファイルからデ...
-
エクセルでのハイパーリンク切...
-
Excel折線グラフ作成でマイナス...
-
Excelのシートにある1行...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで文字の入力がセルの...
-
多数の計算セルに一括で同一の...
-
Excelのmatch関数エラー原因が...
-
Excelの入力済みセルに一括で、...
-
エクセルのセルの中の,よりも前...
-
Excelからテキストへのコ...
-
excelで可視セルのみ置換
-
置換機能を使わずに先頭に「'」...
-
Excelで、半角スペースをTABに...
-
【エクセル】ピボットテーブル...
-
エクセルでセル内の一部を一括...
-
Excelの空文字セルの削除方法を...
-
Excelのシートにある1行...
-
エクセルの表ををメモ帳などに...
-
小数点を消す方法
-
Excelで電話番号などの-(ハイ...
-
Excelのアポストロフィーの削除
-
Excel "~区"のみを削除したい
-
エクセルでセル内の一部分だけ...
-
一括でダブルクリックした状態...
おすすめ情報