返回列表 上一主題 發帖

[發問] 如何比對2個BOM表,並插入列並齊

[發問] 如何比對2個BOM表,並插入列並齊

請教各位先進
1.BOM有"設變"狀況,每次設變不是會新增子階料號,不然就是會減少子階料號
2.我現在是用手動的方式依序按照階層排列
3.當設變前與設變後比對BOM,設變後的BOM有多一子階,我在設變前的BOM就插入1列--> 如何用VBA幫忙自動判斷並插入列
4.當設變前與設變後比對BOM,設變前有多一子階,我在設變後的BOM就插1列--> 如何用VBA幫忙自動判斷並插入列



是否可以使用Excel VBA 幫忙協助判讀,A欄與G欄的差異,並自動插入一列,讓設變前/後是可以比照的
P.S會有不同的產品,故資料列範圍會有變化

感謝各位先進的教導!

比較2個BOM表.rar (39.66 KB)
Just do it.

本帖最後由 准提部林 於 2017-1-23 13:10 編輯

資料必須[排序]的:
  1. Sub TEST()
  2. Dim xArea As Range, xR As Range, xF As Range, xG As Range, G%
  3. Set xArea = Range([A3], Cells(Rows.Count, 1).End(xlUp))
  4. Application.ScreenUpdating = False
  5. For Each xR In xArea
  6.     If xR = "" Or xR = xR(1, 7) Then GoTo 101
  7.     Set xF = [G:G].Find(xR, Lookat:=xlWhole)
  8.     If xF Is Nothing Then GoTo 101
  9.     G = xR.Row - xF.Row
  10.     If G > 0 Then Set xG = xF Else Set xG = xR
  11.     xG.Resize(Abs(G), 5).Insert Shift:=xlDown
  12. 101: Next
  13. End Sub
複製代碼
Xl0000009.rar (29.67 KB)

TOP

回復 2# 准提部林


准提部林,真的太感激你了,解決了一大煩惱。
我會好好看一下你的語法,有問題再跟你請教。
Thank you very much !
Just do it.

TOP

回復 2# 准提部林

Dear 准提部林,我改過欄位編號後,並修改過程式碼,結果有異常,是否哪裡需做修訂?

Sub TEST()
Dim xArea As Range, xR As Range, xF As Range, xG As Range, I%
Set xArea = Range([A3], Cells(Rows.Count, 1).End(xlUp))
Application.ScreenUpdating = False
For Each xR In xArea
    If xR = "" Or xR = xR(1, 9) Then GoTo 101
    Set xF = [I:I].Find(xR, Lookat:=xlWhole)
    If xF Is Nothing Then GoTo 101
    I = xR.Row - xF.Row
    If I > 0 Then Set xG = xF Else Set xG = xR
    xG.Resize(Abs(I), 5).Insert Shift:=xlDown
101: Next
End Sub






EXCEL-TEST.zip (78.01 KB)
Just do it.

TOP

回復 4# jsc0518


A364 及 i331 兩格的 1.1 應是 1.10, 因不是[文字格式], 變成 1.1 與上面的重覆,
將A及I欄都設為[文字]格式, 然後重新檢查資料, 手動修正~~

TOP

回復 5# 准提部林


我已將A欄及I欄更改為文字格式
執行後畫面如下,在我"版本2" I3有階層1,但I4~I481完全沒資訊,而I482則是階層1,I483則是1.1.1   



Just do it.

TOP

本帖最後由 准提部林 於 2017-1-24 21:04 編輯

回復 6# jsc0518


只改為文字格式是不行的, 數字實際還是數值, 要重新輸入!
而且下面的 1.1 也要改為1.10
製作表格要根據需要事先製定儲存格格式, 免得輸入一堆資料後很難處理!

EXCEL-TEST-1.rar (35.86 KB)

TOP

回復 7# 准提部林


對不起,我再請教一個問題
一旦使用VBA執行後,設定格式化的條件的公式都會跑掉
這要如何設定?


=(A3<>"")*(A3<>G3)
=$A$3:$A$491


=(I3<>"")*(I3<>A3)
=$G$3:$G$491
Just do it.

TOP

回復 9# jsc0518

原來資料的格式有跑掉,
用第一格重新刷一次!

TOP

回復 10# 准提部林


好的,感謝您的教學
Just do it.

TOP

        靜思自在 : 一個人不怕錯,就怕不改過,改過並不難。
返回列表 上一主題