Giúp em tìm mã trùng và gán giá trị

  • Thread starter NHOKLIPICE
  • Ngày gửi
N

NHOKLIPICE

Sơ cấp
26/2/10
19
0
0
43
BH
Em có 1 sheet excel, trong đó:
Cột B: mã số cố định.
Cột N: mã số do mình cung cấp.
Cột O: số lượng.
Có cách nào cho Excel tự động đối chiếu mã ở cột N với cột B, nếu mã cột N có ở cột B, thì - có 02 trường hợp:
1. Cắt số lượng ở cột O và gián vào cột J (như thế những mã ở cột J có mà cột B không có thì em biết đây là mã mới nhập và em sẽ nhập thủ công những mã đó vào cột b).
2. Nếu không cắt được số lượng ở cột O gián vào cột J thì copy qua cũng được, sau đó em sẽ tìm thủ công những mã côt J có mà cột B không có :( !
Rất mong nhận được sự giúp đỡ, xin cảm ơn !

Link file http://www.mediafire.com/?m25bf77fve4jz4x
 
Sửa lần cuối:
Khóa học Quản trị dòng tiền
H

hungdo87

Sơ cấp
22/5/10
11
0
0
Hồ Chí Minh
Trường hợp này bạn chỉ cần dùng hàm Vlookup và dò tìm bình thường thôi bạn à.
Mình đã xem giúp bạn và đưa ra công thức như sau:
J5 : =VLOOKUP(N5,$B$5:$O$7274,14,1)

Một số lỗi mình đoán là bạn mắc phải:
- Bạn đã hide một số cột, dẫn đến việc chọn cột dò tìm bị sai. Ở đây cột O là cột thứ 14, chứ không phải cột 7
- Khi chọn bảng dò nhớ đặt tên hoặc bấm F4 để cố định bảng.

P/s: Mình đã thử và cho kết quả chính xác. Chúc bạn thành công
 
N

NHOKLIPICE

Sơ cấp
26/2/10
19
0
0
43
BH
Em có sửa chút bài viết rồi, rất mong bạn giúp lại chút, có gì pm nick YH hoặc cho mình nick YH nhé, thx bạn, YM mình phaduho@yahoo.com !
 
S

SA_DQ

Thành viên Cố vấn - Webketoan Mentors
29/6/05
612
104
43
68
HCM city
Xem thêm trong file , nha!

Mã:
Option Explicit
[B]Sub TimMa()[/B]
 Dim Rng As Range, sRng As Range, Cls As Range
 Dim Rws As Long
 
 Set Rng = Range([B4], [B65500].End(xlUp))
 Columns("N:N").Interior.ColorIndex = 0
 [N4].Interior.ColorIndex = 38
 For Each Cls In Range([N5], [N65500].End(xlUp))
   Set sRng = Rng.Find(Cls.Value, , xlFormulas, xlWhole)
   If sRng Is Nothing Then
      Cls.Interior.ColorIndex = 39
   Else
      Cls.Interior.ColorIndex = 35
      Rws = sRng.Row
      sRng.Interior.ColorIndex = 34 + Rws Mod 8
      Cells(Rws, "J").Value = Cls.Offset(, 1).Value
   End If
 Next Cls
[B]End Sub[/B]

/-(ẹn gặp bạn tại GPE.COM
 

Đính kèm

  • GPEvt.rar
    257.1 KB · Lượt xem: 94
N

NHOKLIPICE

Sơ cấp
26/2/10
19
0
0
43
BH
Rất cảm ơn anh SA DQ đã giúp đỡ, nhưng em kiểm tra lại có gì đó chưa ổn, nếu có thời gian rảnh anh xem lai giúp em nha, cụ thể:
- Ở cột N, màu tím là những mã mới và số lượng chưa được nhập vào cột J, sau khi trừ số lượng của mã mới [màu tím ] thì số lượng cột O là 2055 nhưng cột J là 1994 [ lệch ]
- Sau khi trừ mã mới ở cột O, số mã còn lại nhập vào cột J là 228, nhưng mã nhập vào cột J chỉ còn 217 [ nghĩa là mã ở cột O đã có ở cột B sẽ được copy số lượng từ O qua J là 228 - nhưng chỉ copy qua có 217 ]

Nếu rảnh thì xem giúp em, còn không thì cũng không sao, rất cảm ơn đã giúp em trong những lần qua. Thân chào và chúc sức khỏe !
 
S

SA_DQ

Thành viên Cố vấn - Webketoan Mentors
29/6/05
612
104
43
68
HCM city
Bạn hãy chạy đoạn mã này & sẽ hiện số liệu tổng các ô thuộc cột 'O' ở 2 màu khác nhau của 'N'

Mã:
Option Explicit
Sub TimMa()
 Dim Rng As Range, sRng As Range, Cls As Range
 Dim Rws As Long, Tim As Long, Xanh As Long
 
 Set Rng = Range([B4], [B65500].End(xlUp))
 Columns("N:N").Interior.ColorIndex = 0
 [N4].Interior.ColorIndex = 38
 For Each Cls In Range([N5], [N65500].End(xlUp))
   Set sRng = Rng.Find(Cls.Value, , xlFormulas, xlWhole)
   If sRng Is Nothing Then
      Cls.Interior.ColorIndex = 39
   [B]   Tim = Tim + Cls.Offset(, 1).Value[/B]
   Else
      Cls.Interior.ColorIndex = 35
      Rws = sRng.Row
      sRng.Interior.ColorIndex = 34 + Rws Mod 8
      Cells(Rws, "J").Value = Cls.Offset(, 1).Value
   [B]   Xanh = Xanh + Cls.Offset(, 1).Value[/B]
   End If
 Next Cls
[B] [n1].Value = Tim:         [o1].Value = Xanh   [/B]
End Sub
 
N

NHOKLIPICE

Sơ cấp
26/2/10
19
0
0
43
BH
Em phải xác nhận anh SA DQ viết macro rất giỏi, muốn theo anh học nghề quá, có nhận đệ tử online không anh, em còn đang thất nghiệp, đang muốn tu luyện thêm ^^ !
Anh xem lại giúp em chút nha:
Cột N có 2 màu : xanh = 2055 và tím = 424
Màu xanh là những mã sẽ copy số lượng từ cột O qua cột J
Vậy: số phải nhập của màu xanh từ cột O qua cột J là 2055
Nhưng: bên cột J sau khi nhập số tổng chỉ là 1994 !
 
S

SA_DQ

Thành viên Cố vấn - Webketoan Mentors
29/6/05
612
104
43
68
HCM city
Dùng macro tìm lỗi giúp bạn đây

Mã:
Option Explicit
Sub TimMa()
 Dim Rng As Range, sRng As Range, Cls As Range
 Dim Rws As Long, Tim As Long, Xanh As Long, jJ As Byte
 Dim MyAdd As String
 
 Set Rng = Range([B4], [B65500].End(xlUp))
 Columns("N:N").Interior.ColorIndex = 0
 Columns("B:B").Interior.ColorIndex = 0
 [N4].Interior.ColorIndex = 38
 For Each Cls In Range([N5], [N65500].End(xlUp))
   Set sRng = Rng.Find(Cls.Value, , xlFormulas, xlWhole)
   If sRng Is Nothing Then
      Cls.Interior.ColorIndex = 39
      Tim = Tim + Cls.Offset(, 1).Value
   Else
      MyAdd = sRng.Address:               jJ = 0
      Xanh = Xanh + Cls.Offset(, 1).Value
      Cls.Interior.ColorIndex = 35
      Do
         jJ = jJ + 1
         Rws = sRng.Row
         sRng.Interior.ColorIndex = 34 + (Rws Mod 8)
         If jJ > 1 Then
            Cells(Rws, "C").Interior.ColorIndex = 3 + jJ
            MsgBox Rws
         End If
         Cells(Rws, "J").Value = Cls.Offset(, 1).Value
         Set sRng = Rng.FindNext(sRng)
      Loop While Not sRng Is Nothing And sRng.Address <> MyAdd
   End If
 Next Cls
 [n1].Value = Tim:         [o1].Value = Xanh
End Sub

Khi chạy macro này sẽ hiện ra 2 lần hộp thoại & 2 lần ấy hộp thoại có nội dung như nhau;
Điều đó có nghĩa là tại cột N ta có 2 mã trùng (cụ thể là N240 & N241) & tại cột 'B' cũng có chí ít 2 mã trùng nhau;

Và như vậy sẽ gây ra lệnh số lượng, như sau:

Khi tìm ra mã tại N240 có tại 'B', nó sẽ chép trị chứa trong O240 vô ô cùng dòng cột 'J' ;
(Chép 2 lần tại 'B' vì 2 mã trùng nói trên)
Tiếp sau đó đến fiên N241 nó lấy trị trong O241 chép đè lên 2 trị trước có ở cột 'J' tương ứng với hàng chứa mã trùng ở cột 'B'
còn trị 2055 bạn lấy đâu ra vậy; chứ như vậy nó chỉ lệch nhau chục "Miền tây" là cùng
 

Xem nhiều