No.1
- 回答日時:
こんにちは!
右端一文字限定ですね?
一例です。
Sub Sample1()
Dim i As Long, myStr As String
For i = 1 To Cells(Rows.Count, "A").End(xlUp).Row
If Right(Cells(i, "A"), 1) = "Y" Then
myStr = Left(Cells(i, "A"), Len(Cells(i, "A")) - 1) & "N"
Else
myStr = Left(Cells(i, "A"), Len(Cells(i, "A")) - 1) & "Y"
End If
Cells(i, "A") = myStr
myStr = ""
Next i
End Sub
※ 大文字・小文字の区別はしていません。
こんな感じではどうでしょうか?m(_ _)m
tom04さん、こんにちは
いつもいつも大変お世話になっております
今のマクロに組み込むのに手間取りましたが、お陰様でうまくできました
Right やLeftはわかっているのですが
Left(Cells(i, "A"), Len(Cells(i, "A")) - 1) & "N"
が全く想像できませんでした
ありがとうございます
お蔭様で、18個の同じ処理を一つにまとめることができました
No.2
- 回答日時:
一例です。
もしかすると面倒なコードです。
Sub try()
Dim myReg As Object
Dim r As Range
Set myReg = CreateObject("VBScript.RegExp")
myReg.Pattern = "^(.+)(.)$"
For Each r In Range("A1", Cells(Rows.Count, 1).End(xlUp)) 'A列の値について
If myReg.Execute(r.Value)(0).Submatches(1) = "Y" Then
r.Value = myReg.Replace(r.Value, "$1N")
Else
r.Value = myReg.Replace(r.Value, "$1Y")
End If
Next
Set myReg = Nothing
End Sub
No.3
- 回答日時:
No.2の補足に対して
Sub try_2()
Dim myReg As Object
Set myReg = CreateObject("VBScript.RegExp")
myReg.Pattern = "^(.+)(.)$"
With Range("A1")
If myReg.Execute(.Value)(0).Submatches(1) = "Y" Then
.Value = myReg.Replace(.Value, "$1N")
Else
.Value = myReg.Replace(.Value, "$1Y")
End If
End With
Set myReg = Nothing
End Sub
ですかね。
めぐみん_さん、私の不手際で何度もお世話になっています
お陰様で、教えていただいたマクロで見事に目的を達成できました
ありがとうございました
宣言の後に下記のマクロで書きました
Dim myreg As Object
Set myreg = CreateObject("VBScript.RegExp")
myreg.Pattern = "^(.+)(.)$"
Select Case myreg.Execute(Target.Value)(0).Submatches(1)
Case "Y"
Target.Value = myreg.Replace(Target.Value, "$1N")
Case Else
Target.Value = myreg.Replace(Target.Value, "$1Y")
End Select
Set myreg = Nothing
教えていただいたことは後で調べて、マクロにコメント分が書けるようにします
ありがとうございました
何度もお世話になりました
No.4
- 回答日時:
こんにちは。
Mid ステートメントを使えばよいと思います。
今回は、A1だけにします。
'//
Sub ReplaceLastChar()
Dim mTxt As String
If Range("A1").Value <> "" Then
mTxt = Range("A1").Value
If mTxt Like "*Y" Then
Mid(mTxt, Len(mTxt), 1) = "N"
ElseIf mTxt Like "*N" Then
Mid(mTxt, Len(mTxt), 1) = "Y"
End If
Range("A1").Value = mTxt
End If
End Sub
WindFallerさん、こんにちは
外付けアンプの電源確認マクロでは大変お世話になりました
お陰様で電源入れ忘れに対応できて、マクロがエラーで止まるようなことが
なくなりました
ありがとうございました
LikeもLenも一応知ってはいるのですが、Midを使ってマクロが書けませんでした
お陰様で狙った動きができています
ありがとうございました
No.5ベストアンサー
- 回答日時:
こんな感じのではいかがですか?
--------------------------------------------------------------------------------
Sub 後文字変換()
With Range("A1")
If .Value <> "" Then
If Right(.Value, 1) = "Y" Then
.Value = Left(.Value, Len(.Value) - 1) & "N"
Else
.Value = Left(.Value, Len(.Value) - 1) & "Y"
End If
End If
End With
End Sub
--------------------------------------------------------------------------------
GooUserラックさん、こんにちは
いつも大変お世話になっております
該当セルをTarget.valueとして簡単に組み込めました
Left(.Value, Len(.Value) - 1) は教えていただくと簡単ですが
ぜんぜん思い付きませんでした
今回教えていただいたので、これからは応用できると思います
ありがとうございました
No.6
- 回答日時:
No.4 の WindFallerさんへ
今回のような場合は「Like」は使わない方が良いですよ。
たとえば A1 セルに「ABC*Y*A」のような文字が入っていた場合誤動作してしまいます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
- Visual Basic(VBA) Excel VBA 教えてください。 VBA初心者です。 詳しい方がいましたら教えてください。 下記 3 2023/04/25 11:22
- Visual Basic(VBA) エクセルマクロでアニメを作る方法を教えてください。 1 2023/02/07 14:27
- Visual Basic(VBA) データのある範囲を選択するVBAについて 2 2022/09/03 00:20
- Excel(エクセル) 日本語向きの“ダブルクオーテーション”の入力 1 2022/10/16 11:33
- Excel(エクセル) エクセルで教えて下さい。 2 2022/05/18 13:00
- Excel(エクセル) Excelのマクロで、特定のセルから順番に値を取得したい 5 2022/12/06 15:34
- Visual Basic(VBA) Excel VBAでAA(BBB) → BBB.AA に置換したい 2 2022/10/30 13:59
- Excel(エクセル) Excelについて▶あるセルに文字を入力すると、別のセルに色がつく(条件付き書式) 1 2022/03/27 16:43
- Excel(エクセル) vba アクティブシートのA1セルの値を基準に複数のシートコピー&シート名を 6 2023/04/12 18:36
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
多数の計算セルに一括で同一の...
-
エクセルで文字の入力がセルの...
-
エクセルのセルの中の,よりも前...
-
置換機能を使わずに先頭に「'」...
-
小数点を消す方法
-
【エクセル】ピボットテーブル...
-
excelで可視セルのみ置換
-
Excelで、半角スペースをTABに...
-
エクセルでセル内の一部分だけ...
-
Excelからテキストへのコ...
-
Excelのシートにある1行...
-
Excelの空文字セルの削除方法を...
-
Excel "~区"のみを削除したい
-
VBAでの日付の置換方法を教えて...
-
企業名簿で(株)や(有)を無視し...
-
エクセルの表ををメモ帳などに...
-
Excelの入力済みセルに一括で、...
-
Excelのmatch関数エラー原因が...
-
別シートのリストから置換する方法
-
エクセルで、セルにハイフンを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで文字の入力がセルの...
-
多数の計算セルに一括で同一の...
-
Excelのmatch関数エラー原因が...
-
Excelの入力済みセルに一括で、...
-
エクセルのセルの中の,よりも前...
-
Excelからテキストへのコ...
-
excelで可視セルのみ置換
-
置換機能を使わずに先頭に「'」...
-
Excelで、半角スペースをTABに...
-
【エクセル】ピボットテーブル...
-
エクセルでセル内の一部を一括...
-
Excelの空文字セルの削除方法を...
-
Excelのシートにある1行...
-
エクセルの表ををメモ帳などに...
-
小数点を消す方法
-
Excelで電話番号などの-(ハイ...
-
Excelのアポストロフィーの削除
-
Excel "~区"のみを削除したい
-
エクセルでセル内の一部分だけ...
-
一括でダブルクリックした状態...
おすすめ情報
めぐみん_さん、こんにちは
私の質問の仕方がまずかったです
お詫びします
セルA1は単純にRange("A1")です
対象のセルはRange("A1")だけです
お詫びします