2016-03-24 6 views
-1

ここでプログラミング初心者です。VBA Excel:セル内の可変長の特定の部分を読み取る方法

データベースから情報を抽出する必要があります。つまり、データベースの各ログに与えられる各IDに対応する「説明」が必要です。 データベースは私にこのように必要なデータを与えます: データベース内の各IDについて、最初の列のセルを対応するデータで埋め込むExcelワークシートです。私は、各セルの記述の一部を取得し、どこで、まだ、方法でそれを保存する必要が

(Cell A1:) ID, "Project>Project Name","Date","Duration","Person",(....),"Description","Date Updated", (and so on) 

(Cell A2:) 12345, "VBAEXCELSTACKOVERFLOW123","2016-03-24","8hrs","j doe",(...),"finding a way to extract this sentence","2016-03-24 10:05:43", (and so on) 

(Cell A3:) 12346, "VBAEXCELSTACKOVERFLOW123","2016-03-24","6hrs","w smith",(...),"i need this one too","2016-03-24 10:06:20", (and so on) 

(Cell A4:) (....) 

それはこのようになります(括弧内のものは、実際にはデータの一部ではありません) IDに対応するので、別のスプレッドシートに貼り付けることができます。このスプレッドシートでは、IDのみが与えられます。

私は最大の手がかりは、記述部分が常にセル内のn番目のオブジェクトであると思います。それは常にID、 "..."、 "..."、 "..."、 "説明"、 "..."になります。 唯一の変数は、カッコ内の実際のコンテンツです。

私がしたいのは、 "Axesのカッコ内の5番目のエントリ"に対応するIDを保存する配列または辞書(またはVBAに相当するもの)です。

私はあなたからの抜け目のないコードを期待していません。私はちょっとしたヒントが必要ですgoogleが私に与えた唯一のことは、セルの単語を数えた人だけだった。しかし、それは確かに私の問題を解決しません。巨大

は、事前にあなたに感謝

+0

ここにデータベースデータをどのように取得しますか?ファイルをインポートしましたか?それはODBC経由の直接リンクですか?最初に、より良い形式でデータを取得できないかどうかを確認することが重要です。 – trincot

答えて

1

あなたは、これはあなたを与えるだろうとid区切り文字としてコンマを使用して線の配列、(「」範囲(「A1」)。値)の分割を使用することができますインデックス0になり、その後、あなたが欲しいものを決定することができ、たとえばから、あなたのキーとインデックスとしてインデックス0を追加したいのような4

何か(テストしていません)

dim strSplit() as string 
dim dicIDSandDesc as new scripting.dictionary 

strSplit=split(range("a1").value,",") 
dicIDSandDesc.add strSplit(0),strSplit(4) 
1

はこれを試してみてください。

Sub Split_String() 
    Dim WordArr() As String 
    Dim txt As String 
    CurrSheetRowCount = Sheets("Sheet1").Cells(Rows.Count, "A").End(xlUp).Row 
    For i = 2 To CurrSheetRowCount 
     txt = Cells(i, 1).Value 
     WordArr() = Split(txt, ",") 
     Cells(i, 2).Value = WordArr(1)  'here 2 is the column number where id will be displyed 
     Cells(i, 3).Value = WordArr(6)  'here 3 is the column number where description will be displyed 
    Next i 
End Sub 
関連する問題