Board logo

標題: [發問] EXCEL 比對資料問題 [打印本頁]

作者: tmde987    時間: 2012-12-20 17:11     標題: EXCEL 比對資料問題

小弟參照網站上寫的程式修改
在此compareab_V3 的路徑裡面修改了一下
資料A和資料B ,設置一個按鈕更新前週和當週的資料自動開另二個EXCEL 2 & 3 的其中(B、C、L、O、)欄抓出來比對

但操作方面的程式碼太複雜....剛學VBA不太懂  (網路上抓的我只增加資料A和B的按鈕可以叫出資料來源)
是否有簡化的公式  :
我想要的是:
1.顏色差異性:比對在資料A和資料B  標出紅色差異性
2.比對後只留不同的資料出來,相同的資料不留 (因為是Parts管理,所以只會有ON Hand 數量會變 ,想讓它帶出來後知道此[Parts00X    ,品名,  ON Hand( 呈現的增加或減少)  ,     價格 ]
講白了就是:另一頁資料A  ON Hand數量為2  當 資料B變為 0時    比對在新的Sheet待出-2
                       另一頁資料A  ON Hand數量為2  當 資料B變為 4時   比對在新的Sheet待出+2 or 2      
是否有機會做到此功能

3.如我我更改我的資料A和資料B 設置一個按鈕更新前週和當週的資料自動開另二個EXCEL 2 & 3 的其中(B、C、L、O、P)欄抓出來比對
其中資料A和資料B 想見一個按鈕待出       單存比對O、P 完後的資料為
另一頁            資料A  ON Hand數量為2        當資料B安全庫存變為 1時    比對在新的Sheet待出-1   
                       另一頁資料A  ON Hand數量為2     當資料B安全庫存變為 4時   大於ON Hand 2 則不帶出來


是否有機會做到此功能
[attach]13641[/attach][attach]13639[/attach][attach]13640[/attach]
作者: GBKEE    時間: 2012-12-21 09:41

回復 1# tmde987
對於你的說明,不很了解,試看看是這方向嗎?
  1. Sub CommandButton4_Click()
  2.     With Workbooks.Open("C:\Documents and Settings\901755\桌面\捷徑(含manual)\2.xls")
  3.         .Sheets(1).Range("B:C,O:O").Copy Workbooks("compareab_v3.xls").Sheets("資料A").Range("A1")
  4.         .Sheets(1).Range("L:L").Copy Workbooks("compareab_v3.xls").Sheets("資料A").Range("D1")
  5.         .Close
  6.    End With
  7. End Sub
複製代碼
  1. Sub CommandButton5_Click()
  2.   'Workbooks.Open Filename:="C:\Documents and Settings\901755\桌面\捷徑(含manual)\3.xls"
  3.      With WorkbooksOpen("C:\Documents and Settings\901755\桌面\捷徑(含manual)\3.xls")
  4.         .Sheets(1).Range("B:C,O:O").Copy Workbooks("compareab_v3.xls").Sheets("資料B").Range("A1")
  5.         .Sheets(1).Range("L:L").Copy Workbooks("compareab_v3.xls").Sheets("資料B").Range("D1")
  6.         .Close
  7.    End With
  8. End Sub
複製代碼
  1. Option Explicit
  2. Sub Ex_資料比對()
  3.     Dim D As Object, Rng As Range, K As Variant, Msg As Boolean, xi As Integer
  4.     Set D = CreateObject("SCRIPTING.DICTIONARY")
  5.     Sheets("資料A").Cells.Font.ColorIndex = 0
  6.     Sheets("資料B").Cells.Font.ColorIndex = 0
  7.     Sheets("資料A缺少的").Cells.Clear
  8.     Sheets("資料B缺少的").Cells.Clear
  9.     Set Rng = Sheets("資料A").[A1]
  10.     Do While Rng <> ""
  11.         Set D(Rng & Rng(1, 2)) = Rng.Resize(, 4)
  12.         Set Rng = Rng.Offset(1)
  13.     Loop
  14.     Set Rng = Sheets("資料B").[A2]
  15.     Do While Rng <> ""
  16.         Msg = False
  17.        If D(Rng & Rng(1, 2)).Cells(3) <> Rng(1, 3) Then
  18.             Msg = True
  19.             D(Rng & Rng(1, 2)).Cells(3).Font.Color = vbRed
  20.             Rng(1, 3).Font.Color = vbRed
  21.         End If
  22.        If D(Rng & Rng(1, 2)).Cells(4) <> Rng(1, 4) Then
  23.             Msg = True
  24.             D(Rng & Rng(1, 2)).Cells(4).Font.Color = vbRed
  25.             Rng(1, 4).Font.Color = vbRed
  26.         End If
  27.         If Msg = True Then
  28.             xi = xi + 1
  29.             Sheets("資料A缺少的").Cells(xi, "a").Resize(1, 4) = D(Rng & Rng(1, 2)).Value
  30.             Sheets("資料B缺少的").Cells(xi, "a").Resize(1, 4) = Rng.Resize(1, 4).Value
  31.         Else
  32.             D.Remove (Rng & Rng(1, 2))
  33.         End If
  34.        Set Rng = Rng.Offset(1)
  35.     Loop
  36.     With Sheets("資料A與B都有的")
  37.         If D.Count > 0 Then
  38.             .Cells.Clear
  39.             xi = 1
  40.             For Each K In D.KEYS
  41.                .Cells(xi, "a").Resize(1, 4) = D(K).Value
  42.                xi = xi + 1
  43.             Next
  44.         End If
  45.     End With
  46. End Sub
複製代碼

作者: tmde987    時間: 2012-12-21 11:28

本帖最後由 tmde987 於 2012-12-21 11:30 編輯

感謝樓上幫我解第一個問題,另外可否改成 只帶出資料A與B差異性變顏色,資料A缺少的,資料B缺少的
而不帶出A與B都有的程式 (標示差異性顏色比對)

我重新敘述一下第二和第三個問題

第二個問題是希望能建立一個程式鈕,此鈕能在新的SHEET開啟比對
比對後只留不同的資料出來,相同的資料不留  假設會變動的只有欄C ON Hand
舉下面例子來說今天只有Part3 ON Hand 改變則比對A & B 後帶出如下紅字

  欄A             欄B            欄C               欄D
[Parts00X    ,品名,   ON Hand(B-A )  ,     價格 ]
當相同Parts3 在資料A ON Hand為3   在資料B ON Hand為1   相減有差異
則帶出比對差異性來標示為-2

當相同Parts5 在資料A ON Hand為6   在資料B ON Hand為6 相減為0差異
則不帶出來
[Parts3  ,鹵素杯燈, -2[Parts5 , 500]


第三個問題是說假設今天比對增加第E欄
稍微修改一下 資料B的 5的程式 讓她帶出  Excel 3 的其中(B、C、O、P、L)  原本只有帶出(B、C、O、L)
想建立一個比對鈕比對資料B 在一個新的SHeet
其出來的差異為下
欄A               欄B                        欄C                             欄D
PArts            品名        目前安全庫存-On HAND (資料B)     價格   

假設今天資料B的如下
Parts3  On HAND 7 目前安全庫存 5
Parts4  On HAND 1 目前安全庫存 1
Parts5  On HAND 2 目前安全庫存 6
則帶出比對資料在一個新的Sheet為
[Parts3   鹵素杯燈       2      $500   ]
[Parts5  FUSE 5A 250V  -4       $500     ]
※Part4相減為0無差異不被帶出
作者: tmde987    時間: 2012-12-22 14:06

上面的指令有人會嗎?請幫忙教一下 謝謝!!




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)