使用Excel VBA将string分隔成列

我试图在VBA中编写一个macros,将所有相同格式的地址分成不同的列。 所以街道地址栏,郊区,邮政编码和州代码栏。 这些地址都遵循这种格式:

123 Fake Street,Suburbia QLD 4123

我希望我能用SQL来解决这个问题,但是我试图把这个函数放在一个以工作簿为中心的excel工作簿中。

我计划的方法是写一个for循环,其中列D的长度(地址存储在哪里)…所以

For LngRow = 2 To Wksht.Range("D" & Wksht.Rows.Count).End(xlUp).Row //concate/parse here// Next 

然后它将按照一个标准的程序向后工作,在这里它将分开和写入邮政编码(4位数),然后是州代码(一个国家代码数组),然后是郊区(州代码和分隔逗号之间的string在街道地址之后),最后是剩下的已经被删除和重写的剩余string的街道地址。

我认为倒退是最好的,因为街道地址变化,而最后3位信息是标准的。

有没有可能在VBA中编写这样一个macros? 特别是如何看似SQLish。

通过问题中的描述并假设地址格式将保持相同,这里使用Split一种方法

 Private Sub tt() Dim strTest As String Dim arr1 Dim arr2 Dim arr3 Dim StreetAddress As String Dim Postcode As String Dim StateCode As String Dim SubUrb As String strTest = "123 Fake Street, Suburbia QLD 4123" arr1 = Split(strTest, ",") StreetAddress = arr1(0) arr2 = Split(Trim(arr1(1)), Space(1)) Postcode = arr2(2) StateCode = arr2(1) SubUrb = arr2(0) End Sub 

Excel已经提供了可以实现你想要的function。 唯一的要求是将数据保存到光盘并从现有文件中打开。 该函数被称为Workbooks.OpenText,但请注意,它确切地坚持给定的参数,如果您给错误的分​​隔符,例如它可能会给你错误的结果,或不会打开文件正确拆分。

 Workbooks.OpenText "filename", _ DataType:=XlTextParsingType.xlDelimited, Origin:=XlPlatform.xlWindows, _ Space:=True, TextQualifier:=XlTextQualifier.xlTextQualifierNone 

这将打开空间分隔的文本或CSV文件,并将值放入多个列,返回一个工作簿对象进一步的操作可以展开。

另一种方法是读取Line Linewise文本,并使用VBA String Split在相应的行和列中“手动”input它们,这样做的好处是可以操作数据并去除不想要的字符在飞行中的文件。 如果你想我也可以举一个例子。