2016-08-17 21 views
1

VBAにマクロを書き込んで、すべて同じ形式のアドレスを別々の列に分割しようとしています。だから、住所の列、郊外、郵便番号と州コードの列。アドレスすべてこの形式に従います。Excel VBAを使用して文字列を列に区切る

123フェイク・ストリート、郊外QLD 4123

は、私は、この使用してSQLに近づくことがしたいが、私はアドレスが中心となり、Excelワークブック内のこの機能を維持しようとしています。

私の計画的なアプローチは、そう...(アドレスが格納されている)D列の長さをカウントし、forループ

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

を書くことですし、それは後方どこ作業の標準的な手順をたどりますそれは、郵便番号(4桁)、次に状態コード(状態コードの配列)、次いで郊外(状態コードと区切り記号との間の文字列)を分離して書込み、最終的には残りが削除されて書き換えられた後に残っている文字列です。

私は、ストリートアドレスが変更されていて、情報の最後の3ビットが標準であるので、後方に働くのが最も良いと思います。

このようなマクロをVBAに書き込むことはできますか?特にSQLiteの仕組みを考えると、

答えて

0

Excelには、必要な機能を実現する機能が既に用意されています。唯一の要件は、データをディスクに保存して既存のファイルから開くことです。この関数はWorkbooks.OpenTextと呼ばれますが、指定されたパラメータに正確に固執していることに注意してください。たとえば、間違った区切り文字を指定すると、最後に間違った結果が得られるか、正しく分割されたファイルが開かれません。

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

これはスペース区切りテキストまたはCSVファイルを開き、多くの列に値を入れ、ワークブックオブジェクトを返しますが、さらに操作が展開することができました。

もう1つの方法は、テキストを線で読み取ってVBA文字列分割を使用して対応する行と列に「手動で」入力する方法です。データを操作して不要な文字を取り除くことができるという利点がありますオンザフライでファイルに保存する必要があります。あなたが望むなら、私はそれについても例を挙げることができます。

1

問題の記述で行くと、アドレス形式は、ここでは、同じままであることを仮定しては、一つのアプローチは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 
+0

を使用している私はあなたが念の郊外に郵便番号と状態コードのためARR2のUBOUNDを取る必要があると思います2つの言葉である – winghei

+0

部品のサイズが変わると、全体のコードがトスになります。 :)それは間違った結果を与えるでしょう。だからこそ、この文章の説明によると、アドレス形式は同じであると仮定しているのですが... ...何度かヘッジする必要があります:)しかしコメントに感謝します。 – cyboashu

関連する問題