[[20120823214855]] 『文字の修正』(さと) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『文字の修正』(さと)

 セルに下記のような文字が記載されています。
 表記を統一したいのですが、可能でしょうか?

 文字(例)
 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.