返回列表 上一主題 發帖

[發問] 如何尋找相同資料並複製其他欄位

本帖最後由 hugh0620 於 2012-9-30 19:17 編輯

回復 1# cslinmiso

============================================
在使用時~ 可能要考量一下函數的意義與比對資料的方式~
您總共要比對三個欄位的資料~ 所以~ 用vlookup與match比較不適當~
vlookup用在同一欄進行比對~ 但您有三個欄位要比對~~ 寫法上不實用~ 且複雜~
可以更直覺的用if 判斷 abc三欄同一列的資料是否一樣~
============================================

個人的寫法是當您在sheet2中輸入資料~
要判斷
1. 是否在column1.2.3輸入資料
2.  column1.2.3資料是否輸入完整
3. 最後將sheet2新入輸的資料從sheet1的第一筆資料開始比對~ 找資料是否有與sheet1相符的~
    如果有就將資料抓取到sheet2

缺點: 當sheet1中有重覆的資料~ 就會被覆蓋~

提供給您參考~
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. A = Target.Column
  3. B = Target.Row
  4. If A > 3 Then Exit Sub

  5. Select Case A
  6. Case 1
  7.      If Target.Offset(0, 1) = "" And Target.Offset(0, 2) = "" Then Exit Sub
  8. Case 2
  9.      If Target.Offset(0, -1) = "" And Target.Offset(0, 1) = "" Then Exit Sub
  10. Case 3
  11.      If Target.Offset(0, -2) = "" Or Target.Offset(0, -1) = "" Then Exit Sub
  12. End Select
  13. I = 0
  14. Do Until Sheet1.Range("A" & 2 + I) = ""
  15.    If Sheet1.Range("A" & 2 + I) = Sheet2.Range("A" & B) And Sheet1.Range("B" & 2 + I) = Sheet2.Range("B" & B) And Sheet1.Range("C" & 2 + I) = Sheet2.Range("C" & B) Then
  16.       Sheet2.Range("D" & B) = Sheet1.Range("D" & 2 + I)
  17.       Sheet2.Range("E" & B) = Sheet1.Range("E" & 2 + I)
  18.       Sheet2.Range("F" & B) = Sheet1.Range("F" & 2 + I)
  19.    End If
  20. I = I + 1
  21. Loop

  22. End Sub
複製代碼
學習才能提升自己

TOP

回復 3# cslinmiso

要不要把您執行有誤的檔案PO上來~ 看看問題在哪~

原本我以為是版本的問題~  (我自己是用2003)
後來用2007執行也沒有問題~
學習才能提升自己

TOP

本帖最後由 hugh0620 於 2012-10-2 21:03 編輯

回復 7# cslinmiso


    噗~ 我有下載你的檔案~ 執行後~ 並未有您說的問題耶~ 呵呵~

   不過沒關係~ 有G大跟H大~ 幫你解決了~ 你的問題~ ^^

   其實不管是G大大的寫法或是H大大的寫法
   這個要看個人的使用習慣~  您都可以參考看看~~

   不過要提醒的是~ 資料輸入時日期或是時間的格式~ 通常都會造成~
   兩個不同SHEET在比對時~ 無法將資料正確比對~
學習才能提升自己

TOP

        靜思自在 : 信心、毅力、勇氣三者具備,則天下沒有做不成的事。
返回列表 上一主題