[[20170622191528]] 『素材と混率に区切りのカンマを付けたい』(さいとう) ページの最後に飛ぶ

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

 

『素材と混率に区切りのカンマを付けたい』(さいとう)

すみませんお力を貸してください。

excelで

 A     B      C
品番 カラー 素材と混率 の並びで表があります。

C列 素材と混率で
1)素材の半角カタカナを全角カタカナに修正
2)素材と混率に区切りのカンマを付けたい

ポリエステル100%→ポリエステル,100%
綿50%ポリエステル50%→綿,50%,ポリエステル,50%

最後の%はカンマなしです。
素材と混率は3種類のパターンもあります。

当初は量が少なかったのですが
2000行近くの膨大なデータに増えてしまい
検索→置換をちびちびやっていく方法では厳しくなってしまいました。

どうかよろしくお願い致します。

< 使用 Excel:Excel2013、使用 OS:Windows10 >


 とりあえずVBA

 Sub test()
    Dim a, i As Long, temp As String
    With Range("c2", Range("c" & Rows.Count).End(xlUp))
        a = .Value
        With CreateObject("VBScript.RegExp")
            For i = 1 To UBound(a, 1)
                .Pattern = "(,)?([0-90-9]+[%%])": .Global = True
                temp = .Replace(a(i, 1), ",$2")
                .Pattern = "([ァ-ン゙゚]+)": .Global = False
                Do While .test(temp)
                    temp = .Replace(temp, StrConv(.Execute(temp)(0), vbWide))
                Loop
                a(i, 1) = temp
            Next
        End With
        .Value = a
    End With
End Sub
(seiya) 2017/06/22(木) 20:34

ワードを使う案です

 1)ワードにコピペ
 2)半角カタカナを検索
   検索する文字列: [ヲ-゚] 
 3)文字種を全角に変更
 4)文末以外の%を置換 
   検索する文字列: (%)([!^x]) 
   置換後の文字列:  \1,\2
 5)エクセルにコピペ

(マナ) 2017/06/22(木) 20:40


バカなことしていました
こうでした。
それと、ワイルドカードを使用するにチェックを入れてください。

   検索する文字列: %([!^x])
   置換後の文字列:  %,\1

(マナ) 2017/06/22(木) 21:17


seiyaさま マナさま 回答ありがとうございました
明日試してみます!
(さいとう) 2017/06/22(木) 22:44

 >綿50%ポリエステル50%→綿,50%,ポリエステル,50% 
 おっと、これに対応...

 Sub test()
    Dim a, i As Long, temp As String
    With Range("c2", Range("c" & Rows.Count).End(xlUp))
        a = .Value
        With CreateObject("VBScript.RegExp")
            For i = 1 To UBound(a, 1)
                .Pattern = ",*([0-90-9]+(?=[%%]))": .Global = True
                temp = .Replace(a(i, 1), ",$1")
                .Pattern = "([%%]),*(?!$)"
                temp = .Replace(temp, "$1,")
                .Pattern = "([ァ-ン゙゚]+)": .Global = False
                Do While .test(temp)
                    temp = .Replace(temp, StrConv(.Execute(temp)(0), vbWide))
                Loop
                a(i, 1) = temp
            Next
        End With
        .Value = a
    End With
End Sub
(seiya) 2017/06/22(木) 23:36

あらっ、数字の前のカンマを忘れていました。
置換操作1回追加です。

   検索する文字列: ([!0-9])([1-9]) 
   置換後の文字列:  \1,\2

(マナ) 2017/06/23(金) 07:50


結果報告が遅くなってしまいすみません

お2人の方法でどちらも上手くいきました!
ワイルドカードは使ったことがなかったので
ExcelだけでなくWordも調べる機会が出来て良かったです。
本当に助かりました。ありがとうございます

(さいとう) 2017/06/24(土) 16:11


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.