我每次收到這樣的文件
有辦法將文件裡欄位某些文字單獨複製出來貼到另一個sheet頁面嗎?
有VBA或者是巨集的指令可以這樣做嗎?
找的到邏輯就能寫得出VBA~
要先確定AC ADAPTER...那列的邏輯(不同key part你要它怎麼判定要抓整句中的哪部分作為代表,括號括起來的部分還是?)
抓的到的話就可以抓下一層的細節資料~
都是括號的部分我要怎麼用VBA寫出呢
用function就可以,把儲存格的資料丟進去~
Function FindStringinBracket(target As String) As String
binon = InStr(target, "(")
endon = InStr(target, ")")
If binon > 0 & endon > 0 & binon < endon Then
FindStringinBracket = Mid(target, binon + 1, endon - binon - 1)
Else
FindStringinBracket = "No Data"
End If
End Function
先DIM一個變數(陣列)負責抓「品項」
再DIM一個變數(陣列)負責抓「型號」
最後DIM一個變數(陣列)負責抓「訂單」
品項做外迴圈
型號做內迴圈
第一步:
先計算A欄最後一行為何?
第二步:
遍歷所有A欄,
只要背景是綠色的,以陣列的方式寫進變數「品項」。
如果是橘色的寫進變數「型號」。
以上都不是的寫進變數「單號」。
第三步:
創一個新sheet
第四步:(開始塞資料)
計算「品項」陣列長度,並塞進FOR迴圈,當外層。
計算「型號」陣列長度,並塞進FOR迴圈,當內層。
再寫一個計次,負責計算新sheet的筆數。
利用Cell()函數把值塞進ABCD欄,每遞層一個計次,
把「品項」「型號」「單號」依序塞進ABCD
結束,完成。
兩張工作表名稱分別是 data (拿回來的資料) , result.
拿回來的資料當由 a1 開始放.
建基於你放出來的資料特性的 vba
Sub test()
For i = 1 To Worksheets("data").[a1048576].End(xlUp).Row
If Worksheets("data").Cells(i, "a") <> "" Then
If InStr(Worksheets("data").Cells(i, "a"), "(") > 0 Then
pro_duct = WorksheetFunction.Trim(Replace(Split(Worksheets("data").Cells(i, "a"), "(")(1), ")", ""))
ElseIf Worksheets("data").Cells(i, "d") <> "" Then
Worksheets("result").[a1048576].End(xlUp).Offset(1, 0) = Worksheets("data").Cells(i, "d")
Worksheets("result").[a1048576].End(xlUp).Offset(0, 1) = pro_duct
Worksheets("result").[a1048576].End(xlUp).Offset(0, 2) = Worksheets("data").Cells(i, "g")
End If
Else
Exit For
End If
Next
End Sub