![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
いろいろやってみたものの出来ないのでお伺いします
Bのカラムに 1303-51303M-1807 と入っています。1303はユニークな番号ですが必ずしも数字4桁ではなく 四桁の数字にアルファベットがつくこともあります。(例)1151a-51151M-1807
真ん中の数字は「顧客コード&M」もしくは「顧客コード&B」、これは必ず6文字です。
右側の1807は "yymm"です。
この「1807」を毎月翌月「1808」に変えたいのですが、それがうまくいきません。
replacementやsubstituteやrightを組み合わせても エラーになります。
VBA教えてもらえないでしょうか?
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_14.png?e8efa67)
No.4ベストアンサー
- 回答日時:
No3です。
以下のマクロを標準モジュールに登録してください。
No3の補足要求で全てYesの回答の前提です。
--------------------------------------------
Option Explicit
Public Sub 指定月置換()
Dim date0 As Date '翌月の1日
Dim str As String
Dim trg As String
Dim maxrow As Long
Dim row As Long
Dim RE As Object
date0 = DateSerial(Year(Date), Month(Date) + 1, 1)
str = Format(Year(date0) Mod 100, "00") & Format(Month(date0), "00")
str = InputBox("4桁の年月を入力してください", "置換月指定", str)
If Len(str) <> 4 Or IsNumeric(str) = False Then
MsgBox ("入力値が4桁の数字でないので終了します")
Exit Sub
End If
Set RE = CreateObject("VBScript.RegExp")
With RE
.Pattern = "(^.*)(\d\d\d\d)$" ''検索パターンを設定(最後が4桁の数字であること)
End With
maxrow = Cells(Rows.Count, "B").End(xlUp).row 'B列の最大行取得
For row = 2 To maxrow
trg = Cells(row, "B").Value
If trg <> "" Then
Cells(row, "B").Value = RE.Replace(trg, "$1" & str)
End If
Next
MsgBox ("完了")
End Sub
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_14.png?e8efa67)
No.3
- 回答日時:
補足要求です。
①1行目は見出し行ですか。
②B列の2行目以降のデータを下4桁が数字であれば、添付図のようにinputboxで入力された値で
置換しますが、それでOKですか。
添付図の例では1807が全て1809に変わります。
③inputboxに最初に表示される値は1809のように翌月の月が表示されます。但し、この値を1808のように変更することも可能です。
キャンセルがクリックされた場合、もしくは4桁の数字以外が入力された場合は、処理を打ち切ります。
上記のような仕様でよければ、そのマクロの提供は可能ですがいかがでしょうか。
![「Excel VBA 置換の件」の回答画像3](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/7/106271_5b740bfc6dd5b/M.png)
はい、メッセージボックスに入力して変更ということも試みたのですが
ネットでしらべても出てきませんでした。
ご提供お願いいたします。
ありがとうございます。
No.2
- 回答日時:
こんばんは!
データはB列の2行目以降にあるとします。
ごく簡単に・・・
Sub Sample1()
Dim i As Long, myStr As String
For i = 2 To Cells(Rows.Count, "B").End(xlUp).Row
myStr = Left(Cells(i, "B"), InStrRev(Cells(i, "B"), "-")) & Format(Date, "yymm")
Cells(i, "B") = myStr
Next i
End Sub
こんな感じではどうでしょうか?m(_ _)m
No.1
- 回答日時:
こんな感じでどうでしょうか。
Sub test()
Dim dt As Date
Dim src As String
Dim out As String
Dim a As Variant
'元の文字列
src = "1151a-51151M-1812"
'元の文字列を'-'で分割して配列にする。a(2)がyymm
a = Split(src, "-")
'元の文字列のyymmから当月1日のシリアル値を取得
dt = DateSerial(Left(a(2), 2), Right(a(2), 2), 1)
'1カ月後のシリアル値を計算
dt = DateAdd("m", 1, dt)
'a(2)に新しいyymmを書き込む
a(2) = Right("0" & Year(dt), 2) & Right("0" & Month(dt), 2)
'配列aを'-'で繋げて文字列にする
out = Join(a, "-")
MsgBox out
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) EXCEL VBAで教えてください。 1 2022/12/22 04:20
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
- Access(アクセス) Access IF文でテーブルに存在しない場合の処理について 2 2022/10/10 18:09
- Visual Basic(VBA) Excel VBA 教えてください。 VBA初心者です。 詳しい方がいましたら教えてください。 下記 3 2023/04/25 11:22
- Excel(エクセル) 全角文字「ヴ」の半角文字「ヴ」への変換方法について 3 2022/11/05 12:07
- PHP カラーミーショップのSmartyでの文字列抜き出し 2 2022/05/06 11:51
- Java Java 南京錠 2 2023/02/04 11:46
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2022/04/01 12:11
- Visual Basic(VBA) VBAで、特定の文字より後を削除して残った数値を文字列に変換と特定の文字より前も削除したい 3 2022/04/15 19:21
- Excel(エクセル) Excelの複数置換はSUBSTITUTEを重ねるしかない? 9 2022/05/08 11:25
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA 置換文字がみつからない時
-
csvデータ ダブルクォーテ...
-
スペースで区切られた氏名から...
-
正規表現 特定の文字列を含む行...
-
C言語でテキストファイルの内容...
-
各項目がダブルクォーテーショ...
-
ハングルを日本語に置換
-
秀丸マクロで、あらかじめ選択...
-
EXCEL警告「置換対象のデータが...
-
VBscriptで「改行」と「"」を置...
-
対称群はなぜそう呼ばれるので...
-
正規表現で、特定の文字列を含...
-
テキストボックスの文字列を置...
-
パワーポイントの一括置換:複...
-
WordPress Contact Form 7 で特...
-
s/\\s*$// の意味
-
エクセル VBA 複数条件一...
-
EXCEL VBA でCTRL+Fのダイア...
-
C#で空白行を削除する方法
-
Excel VBA 置換の件
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
スペースで区切られた氏名から...
-
VBA 置換文字がみつからない時
-
各項目がダブルクォーテーショ...
-
csvデータ ダブルクォーテ...
-
エクセル VBA 複数条件一...
-
正規表現で、特定の文字列を含...
-
csvデータのダブルクォーテーシ...
-
xmlファイル内の文字列置換
-
PowerShellでテキストの空白行...
-
ハングルを日本語に置換
-
C#で空白行を削除する方法
-
複数のパワーポイントファイル...
-
Excel・ユーザーフォームの情報...
-
C言語でテキストファイルの内容...
-
Eclipse 改行後のタブ
-
テキストファイル中の文字列の置換
-
正規表現 特定の文字列を含む行...
-
EXCEL警告「置換対象のデータが...
-
○文字目に文字挿入
-
VBscriptで「改行」と「"」を置...
おすすめ情報