Cần so sánh và 2 sheet của 1 bảng tính (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

minhkhoimai

Thành viên mới
Tham gia
13/11/08
Bài viết
19
Được thích
1
chào các bạn hiện mình có 1 file cần so sánh từng dòng của sheet2 với từng dòng của sheet1 nếu dữ liệu 2 cột "Fisc_invoice_no" và "Art_no" là giống nhau thì lấy dữ liệu trên dòng đó của sheet1 qua sheet2. có kèm file mong các bạn giúp mình,rất cám ơn và mong tin

http://azsharing.com/qjrxp1qmgua8/SO_SANH_DATA.xls.html
 
Lần chỉnh sửa cuối:
Không tải được file bạn à!

--=0 --=0 --=0
 
Việc này dùng VB dễ thôi, nhưng bạn đưa file không rõ yêu cầu nói rõ hơn mình làm cho
 
Đúng là bạn đang lãng fí thời gian của bạn & của mọi người muốn giúp bạn, này nha:

Mình mới up được file, ban giúp mình nha, thanks nhiều!
Để tiếp chuyện với bạn ta quy ước S1 là trang Sheet1 & S2 là trang có dữ liệu còn lại;
Trên S2 ta có 2 vùng đó là Rc trước cột 'H' & vùng còn lại ta gọi là Rd;

(*) Vùng Rd có trường [DATE], nhưng bên S1 không có trường này; Tất nhiên bạn không thể nói rằng mọi người fải hiểu [. . .DATE] là trường [DATE] này, trừ fi bạn là Tổng thống.

Cũng như vậy với trường [FISC_INVOICE].

(*) Tại S1 tên trường của cột 'A' & 'G' trùng nhau, nhưng dữ liệu hoàn toàn khác nhau.

Hãy nghiêm túc với chính mình hơn bạn à, & đưa lại file vô #1 đi!

Thân ái!
 
Bạn chép code vào modul, xem lại dữ liệu ở 2 sheet, chuẩn ART_NOFISC_INVOICE_NO để so sánh. chúc vui!
Sub sosanh()
Dim i As Integer
Dim j As Integer
Dim a As Integer
i = 2
a = 1
With Sheets("Sheet2")
.Range("I2:O65000").ClearContents
End With
Do While Sheets("Sheet2").Cells(i, 2).Value <> ""
j = 2
Do While Sheets("Sheet1").Cells(j, 4).Value <> ""
If Sheets("Sheet2").Cells(i, 2).Value = Sheets("Sheet1").Cells(j, 4).Value And Sheets("Sheet2").Cells(i, 6).Value = Sheets("Sheet1").Cells(j, 1).Value Then
a = a + 1
With Sheets("Sheet2")
.Cells(a, 9).Value = Sheets("Sheet1").Cells(j, 4).Value
.Cells(a, 10).Value = Sheets("Sheet1").Cells(j, 5).Value
.Cells(a, 11).Value = Sheets("Sheet1").Cells(j, 6).Value
.Cells(a, 12).Value = Sheets("Sheet1").Cells(j, 1).Value
.Cells(a, 13).Value = Sheets("Sheet1").Cells(j, 9).Value
.Cells(a, 14).Value = Sheets("Sheet1").Cells(j, 10).Value
.Cells(a, 15).Value = Sheets("Sheet1").Cells(j, 11).Value
End With
End If
j = j + 1
Loop
i = i + 1
Loop
End Sub
 
So sánh Data

bạn dùng file này xem đáp ứng yêu cầu chưa.
 

File đính kèm

Bạn bảo dùng VB dễ thôi, nhưng rõ ràng không dễ chút nào, chỉ các bạn hàng "cao" mới làm và hiểu được.
Trong yêu cầu này mình nghĩ nên chọn cách chuyển dữ liệu vào Access thành 2 bảng sau đó dùng querry (selection) từ 2 bảng đã có thiết lập relationship giữa 2 trường mong muốn.
 
Rõ ràng là trình độ Gà mới xin các bạn giúp nếu pro thì đã ko làm mất thời gian các bạn rồi mình xin up lai file khác mong các bạn nào rãnh rỗi thì giúp đở ko phiền các bạn khác nhé!
 
Lần chỉnh sửa cuối:
vậy thì sửa code thành như ở dưới hoặc dùng file đính kèm nhé. chúc vui
Sub sosanh()
Dim i As Integer
Dim j As Integer
Dim ok As Boolean
i = 2
With Sheets("Sheet2")
.Range("H2:H65000").ClearContents
End With
Do While Sheets("Sheet2").Cells(i, 2).Value <> ""
j = 2
ok = False
Do While Sheets("Sheet1").Cells(j, 2).Value <> ""
If Sheets("Sheet2").Cells(i, 2).Value = Sheets("Sheet1").Cells(j, 2).Value And Sheets("Sheet2").Cells(i, 6).Value = Sheets("Sheet1").Cells(j, 6).Value Then
ok = True
End If
j = j + 1
Loop
If ok = True Then
Sheets("sheet2").Cells(i, 8).Value = "OK"
End If
i = i + 1
Loop
End Sub
 

File đính kèm

Chọn dữ liệu từ 2 bảng

chào các bạn hiện mình có 1 file cần so sánh từng dòng của sheet2 với từng dòng của sheet1 nếu dữ liệu 2 cột "Fisc_invoice_no" và "Art_no" là giống nhau thì lấy dữ liệu trên dòng đó của sheet1 qua sheet2. có kèm file mong các bạn giúp mình,rất cám ơn và mong tin

http://azsharing.com/qjrxp1qmgua8/SO_SANH_DATA.xls.html

Mình dùng chức năng SQL của Excel (Data>Get External Data>MS Query), chọn 2 bảng, tạo mối liên hệ 1-1 giữa 2 trường FISC_INVOICE_NO và , thì tạo lọc ra được 520 hàng có dữ liệu trùng khớp giữa 2 bảng.

Không biết đã đáp ứng được nhu cầu của bạn chưa
 
chào các bạn hiện mình có 1 file cần so sánh từng dòng của sheet2 với từng dòng của sheet1 nếu dữ liệu 2 cột "Fisc_invoice_no" và "Art_no" là giống nhau thì lấy dữ liệu trên dòng đó của sheet1 qua sheet2. có kèm file mong các bạn giúp mình,rất cám ơn và mong tin

http://azsharing.com/qjrxp1qmgua8/SO_SANH_DATA.xls.html


Dùng chức năng SQL của Excel để lọc (Data>Import External Data>New Query data),
tạo quan hệ 1-1 giữa 2 bảng (DL_NGUON và DL_SOSANH) với 2 trường cần so khớp.
Không biết có đáp ứng được yêu cầu của bạn chưa
 

File đính kèm

vậy thì sửa code thành như ở dưới hoặc dùng file đính kèm nhé. chúc vui
Sub sosanh()
Dim i As Integer
Dim j As Integer
Dim ok As Boolean
i = 2
With Sheets("Sheet2")
.Range("H2:H65000").ClearContents
End With
Do While Sheets("Sheet2").Cells(i, 2).Value <> ""
j = 2
ok = False
Do While Sheets("Sheet1").Cells(j, 2).Value <> ""
If Sheets("Sheet2").Cells(i, 2).Value = Sheets("Sheet1").Cells(j, 2).Value And Sheets("Sheet2").Cells(i, 6).Value = Sheets("Sheet1").Cells(j, 6).Value Then
ok = True
End If
j = j + 1
Loop
If ok = True Then
Sheets("sheet2").Cells(i, 8).Value = "OK"
End If
i = i + 1
Loop
End Sub

cám ơn bạn }}}}}thehungqnu }}}}}}}}}}rất nhiều rất xác thực với nhu cầu của mình! nhân tiện thì Còn câu trả lới của bạn "duyenhaipy" mình vẫn chưa hiểu lắm-+*/-+*/, nếu được xin bạn "duyenhaipy" hướng dẩn cụ thể dùm vì mình chưa biết làm sao. mặc dù đã xữ lý được theo cách bạn "thehungqnu " nhưng nếu biết thêm cách nửa thì rất cám ơn nhé !!--=0--=0
 
Bạn xài con macro này sẽ tiết kiệm nữa thời gian so với con trên

PHP:
Option Explicit
Sub SoDuLieu()
 Dim Sh As Worksheet, Rng As Range, sRng As Range, Cls As Range
 Dim MyAdd As String:                     Dim Color_ As Byte
 
 Sheet2.Select:              Set Sh = Sheet1
 Set Rng = Sh.Range(Sh.[G1], Sh.[g65500].End(xlUp))
 For Each Cls In Range([G2], [g65500].End(xlUp))
   Set sRng = Rng.Find(Cls.Value, , xlFormulas, xlWhole)
   If Not sRng Is Nothing Then
      MyAdd = sRng.Address
      Do
         With sRng
            If .Offset(, -6).Value = Cls.Offset(, -6).Value And .Offset(, -5).Value = Cls.Offset(, -5).Value _
               And .Offset(, -4).Value = Cls.Offset(, -4).Value And .Offset(, -3).Value = Cls.Offset(, -3).Value _
               And .Offset(, -2).Value = Cls.Offset(, -2).Value And .Offset(, -1).Value = Cls.Offset(, -1).Value _
               Then
               Cls.Offset(, 1).Value = "OK":          Color_ = 34 + Cls.Row Mod 6
               Cls.Interior.ColorIndex = Color_:      sRng.Interior.ColorIndex = Color_
            End If
            Set sRng = Rng.FindNext(sRng)
         End With
      Loop While Not sRng Is Nothing And sRng.Address <> MyAdd
   End If
 Next Cls
End Sub
 
Vào chức năng SQL theo đường dẫn Data>Import External Data>New Query data rồi theo hướng dẫn từng bước trên màn hình, chắc bạn làm được mà. Hoặc chuyển dữ liệu vào Access rồi dùng Query, cũng làm tương tự.

Khi thiết lập mối quan hệ giữa 2 bảng, có thể lựa chọn kiểu 1-1, bên trái hoặc bên phải sao cho đáp ứng nhu cầu của mình. Cái này thấy có bài viết trong mục này khá kỹ.
 
Web KT

Bài viết mới nhất

Back
Top Bottom