2016-03-24 63 views
-1

因此,在這裏編程初學者。VBA Excel:如何讀取單元格中的可變長度的某些部分

我需要從數據庫中提取一些信息。也就是說,我需要與給每個數據庫日誌的每個ID相對應的「描述」。 該數據庫爲我提供了我需要的數據: 一個excel工作表,其中對於數據庫中的每個ID,它填充具有相應數據的第一列中的單元格。

它看起來像這樣(括號裏的東西是沒有實際數據的一部分):

(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,「...」,「...」,「...」,「描述」,「...」。 唯一可變的是圓括號中的實際內容。

所以我想要做的是製作一個數組或字典(或VBA等效),它保存了對應於「單元格Ax中圓括號中的第5個條目」的ID。

我不希望你有一個萬無一失的代碼。我只是需要一些提示,從哪裏開始,因爲我有點迷路。谷歌給我的唯一的東西就是那些只在一個單元格中統計單詞的人。但這當然不能解決我的問題。

巨大預先感謝您

+0

如何獲取那裏的數據庫數據?你輸入了一個文件嗎?它是通過ODBC的直接鏈接?首先檢查是否無法以更好的格式獲取數據,這一點很重要。 – trincot

回答

1

你可以使用分(範圍(「A1」)。價值「」),這會給你和使用逗號作爲分隔符行的陣列,那麼ID將在索引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 
相關問題