Excel将单个数组拆分为多个单元格

我使用的应用程序在一个单元格的数组中导出数据串,如下所示:

"data1"= value1; "data2"= value2; "data3"= value3; "data4"= value4; "data5"= value5; 

我想要一个方程式或macros,或者可以像这样分割的东西:

 ---------------------------------------------------------------- | | data0 | data1 | data2 | data3 | data4 | data5 | ---------------------------------------------------------------- | 1 | ARRAY | value1 | value2 | value3 | value4 | value5 | ---------------------------------------------------------------- | 2 | ARRAY | value1 | value2 | value3 | value4 | value5 | ---------------------------------------------------------------- | 3 | ARRAY | value1 | value2 | value3 | value4 | value5 | ---------------------------------------------------------------- . . . . and so on. 

这可能吗?

这是来自文档的一个string:

 "search-terms1" = Chinese jade; "search-terms2" = Chinese archers; "search-terms3" = Antique jade; "search-terms4" = Asian jade; "search-terms5" = China history; 

它始终是search-terms1 – search-terms5,但是每个行的“值”将会不同。

Windows XP上的Excel 2003

这将在A2中开始,并下降了多less行有数据。 它将数值分解到右侧的列中。

 Sub SplitSearch() Dim vaTerms As Variant Dim vaSearch As Variant Dim rCell As Range Dim vaOutput As Variant Dim i As Long For Each rCell In Sheet1.Range("A2", Sheet1.Cells(Sheet1.Rows.Count, 1).End(xlUp)).Cells vaSearch = Split(rCell.Value, ";") ReDim vaOutput(1 To 1, 1 To UBound(vaSearch)) For i = LBound(vaSearch) To UBound(vaSearch) vaTerms = Split(vaSearch(i), "=") If UBound(vaTerms) > -1 Then vaOutput(1, i + 1) = Trim(vaTerms(UBound(vaTerms))) End If Next i rCell.Offset(0, 1).Resize(1, UBound(vaOutput, 2)).Value = vaOutput Next rCell End Sub 

你可能应该做一个search和replace完整的数组string,用换行符replace分号,\ n或vbCrLf 数组string被带入Excel 之前 ,因为单元格string的大小限制可能会导致您的内容被截断,如果你正在拉动string中的大量数据。 ( 东西可能会被切断,你不会知道

如果less了,可能无法正确导入您正在处理的所有结果。

一旦用换行符replace了分号,就可以导入文本,或者以'='作为分隔符来打开文件

先将string拆分为“;”,而不是“=”。 下面的代码可以让你开始:

 Dim s As String Dim parts As Variant s = """data1""= value1; ""data2""= value2;" parts = Split(s, ";") For i = 0 To UBound(parts) Debug.Print parts(i) ' TODO: Split part along "=" and insert into cell Next i