2016-08-22 7 views
-3

古いeコマースWebサイトからダウンロードした注文履歴を持つファイルがあります。新しいサイトにアップロードするデータを変換しようとしています。それはCSVファイルなので、私はExcelで働いています。 20列のデータがあり、列の1つに「Order Items」(元のテキスト文字列)があり、各行には1つの注文のデータがあります。私は元のテキスト文字列からデータを変換する必要があるので、以下の変換テキスト文字列の例に示すように、必要なフィールドのみを順序とフォーマットで終えるようにします。Excel VBA文字列のセクションを変換する方法

元のテキスト文字列

Product ID: 1234, Product Qty: 2, Product SKU: Brush, Product Name: Brush, Product Weight: 80.0000, Product Variation Details: , Product Unit Price: 5.00, Product Total Price: 10.00|Product ID: 2345, Product Qty: 5, Product SKU: Comb, Product Name: Comb, Product Weight: 1.3000, Product Variation Details: , Product Unit Price: 1.00, Product Total Price: 5.00 

変換されたテキスト・ストリングPRODUCT_ID

:1234 |数量:2 |小計:5.00 |合計:10.00 |; PRODUCT_ID:2345 |量:5 |小計:1.00 |合計:5.00以下

+0

は、単一の「段落」オリジナルのテキスト文字列ですか? – atclaus

+0

これは段落ではないテキスト文字列です – davidj

答えて

1

は(現在は本当の結果があるべきである何OPから理解することは困難であるため)あなたのための完全なソリューションではありませんが、あなたはあなたの要件をカバーするために採用することができます例:

Sub test() 
    Dim S1$, k1, k2 
    S1 = "Product ID: 35, Product Qty: 2, Product SKU: Brush, Product Name: Brush, Product Weight: 80.0000, Product Variation Details: , Product Unit Price: 5.00, Product Total Price: 10.00|Product ID: 54, Product Qty: 5, Product SKU: Comb, Product Name: Comb, Product Weight: 1.3000, Product Variation Details: , Product Unit Price: 1.00, Product Total Price: 5.00" 
    For Each k1 In Split(S1, "|") 
     For Each k2 In Split(k1, ",") 
      If UCase(k2) Like "*ID*" Or _ 
       UCase(k2) Like "*QTY*" Or _ 
        UCase(k2) Like "*PRICE*" Then 
       Debug.Print k2 
      End If 
    Next k2, k1 
End Sub 

テスト:あなたは、各プロダクトIDの行で、それまたは複数の行を持っているよう

enter image description here

関連する問題