[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『文字の修正』(さと)
セルに下記のような文字が記載されています。 表記を統一したいのですが、可能でしょうか?
文字(例) 9-3867-6で終わり 9-5869-0その後空白 5-4769-6Cその後空白 3-3398-2NOその後空白
上記のような文字が1つのセルに記載されているのですが
作業@頭の2つを削除したい 9-3867-6で終わり → 9- を削除 9-5869-0その後空白 → 9- を削除 5-4769-6Cその後空白 → 5- を削除 3-3398-2NOその後空白 → 3- を削除
作業A9文字以下は削除したい(空白も含め) 3867-6で終わり → 3867-6 としたい 5869-0その後空白 → 5869-0 としたい 4769-6Cその後空白 → 4769-6 としたい 3398-2NOその後空白 → 3398-2 としたい
作業B頭にABと記載したい AB3867-6 ←6のあとスペースはいれたくないです AB5869-0 ←0のあとスペースはいれたくないです AB4769-6 ←6のあとスペースはいれたくないです AB3398-2 ←2のあとスペースはいれたくないです
Sheet1のC列 6行目からデータが記載されています。
Sub TEST() Dim lRow As Long With Worksheets("Sheet1") lRow = .Range("C" & Rows.Count).End(xlUp).Row
お手数ですが、どなたかわかる方 教えていただきたくよろしくお願いします。
=REPLACE(LEFT(A1,8),1,2,"AB")
とか。。。?
(HANA)
="AB"&MID(A1,3,6)
ご回答ありがとうございます。 ="AB"&MID(A1,3,6)は、式でしょうか? すみません。初心者なものでよくわからず。。
希望としましてはVBAコードを教えていただけたら助かります。 お手数ですがよろしくお願い致します。 (さと)
> ="AB"&MID(A1,3,6)は、式でしょうか?
関数のヘルプで調べたらすぐわかると思うよ。
>希望としましてはVBAコードを教えていただけたら助かります。
初心者にはVBAは無理だと思います。 エクセルを理解した上でVBAの入門サイトを見てみましょう。
まあ、REPLACE、MID、LEFTは関数にもVBAにもありますが。 VBAヘルプで参照してもいいですね。
(大松菜)
大松菜様 お返事遅くなりすみません。 ご回答ありがとうございます。 自分としては、VBAを今勉強しているため、VBAコードで実行できたらと思っています。
下記マクロを作成してみたのですが、 作業@頭の2つを削除したいがどうしてもできません。 9-3867-6で終わり → 9- を削除 9-5869-0その後空白 → 9- を削除 5-4769-6Cその後空白 → 5- を削除 3-3398-2NOその後空白 → 3- を削除
Sub TEST() ’対象を選択した状態で実行 Dim cel As Range If TypeName(Selection) = "Range" Then For Each cel In Selection With cel If .Value <> "" Then .Value = "AB" & Left(.Value, 6) End If End With Next End If
End Sub
頭の2つを削除するにはどうしたらいいのでしょうか? 困っているので、どなたか教えてください。 よろしくお願いします。 (さと)
まず、以下を実行して、メッセージを確認した後、コードをじっくり眺めてみて。
Sub Test() Dim s As String
s = "3-3398-2NO "
MsgBox "|" & s & "| の頭2桁をカットすると |" & Mid(s, 3) & "| になります"
MsgBox "さらに後ろの空白をカットすると |" & Trim(Mid(s, 3)) & "| になります"
MsgBox "で、それに AB をつけると |" & "AB" & Trim(Mid(s, 3)) & "| になります"
End Sub
(ぶらっと)
9文字目以降をカットするところを読んでいなかった。 9文字目以降をカットし、さらに先頭の2桁をカットすると6桁になるわけだけど、 最後にスーペースを無くした後、6桁未満になるコード。ここを、6桁まではスペースも残すというのなら ちょっと別のコードになる。s の値をいろいろ変えて、意図している結果になるのかどうか試してみてね。
Sub Test2() Dim s As String
s = "3-3398 "
MsgBox "|" & s & "| の9文字目以降をカットすると |" & Left(s, 8) & "| になります"
MsgBox "ここから先頭の頭2桁をカットすると |" & Mid(Left(s, 8), 3) & "| になります"
MsgBox "さらに後ろの空白をカットすると |" & Trim(Mid(Left(s, 8), 3)) & "| になります"
MsgBox "で、それに AB をつけると |" & "AB" & Trim(Mid(Left(s, 8), 3)) & "| になります"
End Sub
(ぶらっと)
こちらが意図しているものかも?
Sub Test3() Dim s As String
s = "3-3398 "
MsgBox "|" & s & "| の9文字目以降をカットし、先頭の2桁をカットすると |" & Mid(s, 3, 6) & "| の6桁になります"
MsgBox "で、それに AB をつけると |" & "AB" & Mid(s, 3, 6) & "| になります"
End Sub
(ぶらっと)
正規表現だとこんな感じ。 Sub test() Dim r As Range, myStr As String With CreateObject("VBScript.RegExp") .Global = True .MultiLine = True For Each r In Selection .Pattern = "^[^\-]+\-([^\-]+\-.).*$" If .test(r.Value) Then myStr = r.Value myStr = .Replace(myStr, "AB$1" & vbLf) .Pattern = "\n(?=$)" r.Value = .Replace(myStr, "") End If Next End With End Sub (seiya)
>私なら、データメニューの区切り位置ウィザードでやってしまうかな・・・
みやほりんさんの、いつものご意見だけど、それであれば関数で充分。 頭に AB もつけなきゃいけないし。
そうではなく、スレ主さんの意図は、 「 自分としては、VBAを今勉強しているため、VBAコードで実行できたらと思っています。」 ということで、本件を、このテーマの解決というより、【VBAの勉強】の材料として とらえているんじゃないかな?
(ぶらっと)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.