2016-08-22 24 views
-3

我有一个从旧电子商务网站下载的订单历史记录的文件我试图将要上传的数据转换为新的网站。这是一个CSV文件,所以我在Excel中工作。有20列数据,其中一列具有项目有序(原始文本字符串),每行有一个订单的数据。我需要将原始文本字符串中的数据进行转换,以便只以下面转换后的文本字符串示例中显示的顺序和格式中的必填字段结束。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

是您的原始文本字符串中的一个“款”喜欢你拥有它或多个行,有行对每个产品的ID? – 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 

测试:

enter image description here