Board logo

標題: 在不同工作表中找尋底色相同的資料並刪除 [打印本頁]

作者: Changbanana    時間: 2016-8-22 12:49     標題: 在不同工作表中找尋底色相同的資料並刪除

各位大大~
想請教一個問題~

在工作表一id那欄找到一樣在工作表二中綠色底的id號碼後,再工作表一把綠色底的id資料刪除
[attach]25001[/attach]

#在工作表二中ID欄位(資料會增加減少,順序不會和工作表一的id一樣)綠色底的資料
[attach]25000[/attach]

想請問這樣vba要怎麼寫

結果想要呈現的樣子
[attach]25002[/attach]


有想到要用dictionary來做 但沒有寫過想請求各位幫忙,謝謝
作者: zyzzyva    時間: 2016-8-23 09:40

回復 1# Changbanana
試試看
  1. Dim myRow As Integer

  2. Sheets("sheet1").Activate
  3. Range("B2").Select
  4. Do While ActiveCell <> ""
  5.     myRow = WorksheetFunction.Match(ActiveCell, Sheets("sheet2").Range("A:A"), 0)
  6.     If Sheets("sheet2").Cells(myRow, "A").Interior.ColorIndex = 14 Then
  7.         Rows(ActiveCell.Row).Delete
  8.     Else
  9.         ActiveCell.Offset(1, 0).Select
  10.     End If
  11. Loop
複製代碼

作者: Changbanana    時間: 2016-8-23 10:23

回復 2# zyzzyva

z大~

把程式碼打進去後工作表都沒反應耶

不知道是那兒出了問題

附上檔案[attach]25019[/attach]
作者: Changbanana    時間: 2016-8-23 10:31

回復 2# zyzzyva


    顯示出的錯誤如圖
     
     [attach]25020[/attach]
作者: zyzzyva    時間: 2016-8-23 10:34

回復 3# Changbanana
顏色的問題,ColorIndex那邊要改成43。
可以簡單用msgbox檢查顏色對應的數字。
  1. mycolor = Sheets(2).Range("A2").Interior.ColorIndex
  2. MsgBox (mycolor)
複製代碼

作者: Changbanana    時間: 2016-8-23 10:39

回復 5# zyzzyva


    原來如此~已經沒問題了

    原來可以這樣查顏色~

    感謝你的解答 :)
作者: zyzzyva    時間: 2016-8-23 10:42

回復 6# Changbanana
不客氣。如果sheet1的id都會在sheet2出現,只是順序不一樣,那這樣就可以了;
如果不一定的話就要加上錯誤處理,不然match找不到的時候就會出現錯誤訊息。
作者: Changbanana    時間: 2016-8-23 10:51

回復 7# zyzzyva

對耶
   
因為剛剛在加資料後來又不行

正如同您所說"sheet1的id都會在sheet2出現",這是不一定的
        
sheet1的ID是當月全部資料

sheet2的ID是當月部份資料外加幾筆前幾個月的ID資料

那要該怎麼加上錯誤處理呢?

現在一直出現錯誤訊息0.0
作者: zyzzyva    時間: 2016-8-23 12:00

回復 8# Changbanana
試試看。
  1. Dim myRow As Integer

  2. Sheets("工作表1").Activate
  3. Range("B2").Select
  4. Do While ActiveCell <> ""
  5.     If IsError(Application.Match(ActiveCell, Sheets("工作表2").Range("A:A"), 0)) Then
  6.         ActiveCell.Offset(1, 0).Select
  7.     Else
  8.         myRow = WorksheetFunction.Match(ActiveCell, Sheets("工作表2").Range("A:A"), 0)
  9.         
  10.         If Sheets("工作表2").Cells(myRow, "A").Interior.ColorIndex = 43 Then
  11.         Rows(ActiveCell.Row).Delete
  12.         Else
  13.             ActiveCell.Offset(1, 0).Select
  14.         End If
  15.         
  16.     End If
  17.    
  18. Loop
複製代碼

作者: Changbanana    時間: 2016-8-23 13:35

回復 9# zyzzyva


    謝謝你~
   
    沒想到可以利用match來做
   
    又學到了一課~~~
作者: Changbanana    時間: 2016-9-5 17:42

回復 9# zyzzyva


若工作表一在ACCESS資料表裡

工作表二在EXCEL中

這樣的資料位置有可能使用VBA來達到相同的結果嗎?
作者: zyzzyva    時間: 2016-9-5 19:39

回復 11# Changbanana
跟Access不太熟耶,看其他前輩有沒有比較好的方法。
最簡單的話就用ADO把資料讀出來放到excel裡,處理完再把資料寫回去。




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