Nối sheets và trích dữ liệu

  • Thread starter Thread starter Thbv
  • Ngày gửi Ngày gửi
Liên hệ QC

Thbv

Thành viên hoạt động
Tham gia
3/5/19
Bài viết
102
Được thích
10
Nhờ bạn giúp đỡ:

Code1
Copy nối dữ liệu tất cả các "sheets" có trong file vào sheet "Tonghop" trừ sheet "Chitiet"
Không giới hạn sheet vì mình chỉ ví dụ có 3 sheet
Lấy dữ liệu đến cột cuối cùng có dữ liệu các sheet
Dòng thì lấy dữ liệu đến dòng cuối cùng của cột A các sheet
Sheet đầu tiên copy sang sheet "Tonghop" giữ nguyên tiêu đề (tiêu đề đến hết dòng 15)
Các sheets khác copy từ dòng 16 đến dòng cuối cùng của cột A
Copy dữ liệu của sheet nào thì có tên của sheet đó ở cột đầu tiên

Code 2
Tại Ô B2 của sheet "Chitiet" đánh tên mã ở sheet "Tonghop" ra dữ liệu các tháng của mã đó
 

File đính kèm

Nhờ bạn giúp đỡ:

Code1
Copy nối dữ liệu tất cả các "sheets" có trong file vào sheet "Tonghop" trừ sheet "Chitiet"
Không giới hạn sheet vì mình chỉ ví dụ có 3 sheet
Lấy dữ liệu đến cột cuối cùng có dữ liệu các sheet
Dòng thì lấy dữ liệu đến dòng cuối cùng của cột A các sheet
Sheet đầu tiên copy sang sheet "Tonghop" giữ nguyên tiêu đề (tiêu đề đến hết dòng 15)
Các sheets khác copy từ dòng 16 đến dòng cuối cùng của cột A
Copy dữ liệu của sheet nào thì có tên của sheet đó ở cột đầu tiên

Code 2
Tại Ô B2 của sheet "Chitiet" đánh tên mã ở sheet "Tonghop" ra dữ liệu các tháng của mã đó
Bạn cho ví dụ khi chạy code xong được không.
 
Upvote 0
Ý mình là ở cột M, N và O của sheet tổng hợp nếu có số liệu thì xuất cả dòng sang sheet Chitiet và giữ nguyên tiêu đề bạn ạ?
Bài đã được tự động gộp:

Nếu 1 trong 3 cột M,N hoặc O chỉ 1 cột có số liệu thì xuất cả dòng sang sheet Chitiet và giữ nguyên tiêu đề như sheet tổng hợp
 
Upvote 0
Không phải, trong sheet tổng hợp ở cột M,N,Q (nếu 1 trong 3 cột đó có số liệu hoặc 1 cột hoặc 2 cột có số liệu) thì xuất cả dòng sang sheet chi tiết. Trong file của bạn sheet chi tiết 4 mã đầu ở tại cột N,N, Q không có số liệu nó vẫn lấy sang. Mục đích mình là lấy cả dòng những mã mà ở cột M hoặc N hoặc Q có số liệu hoặc cả 3 có số liệu hoặc 1 cột có số liệu hoặc 2 cột có số liệu thì lấy sang sheet chi tiết. Xem lại giúp mình nhé. xin cảm ơn
 
Upvote 0
Có 2 vấn đề:
- Trc đấy bạn đề cập là cột M, N, O, giờ bạn lại bảo M, N, Q. O và Q nó khác nhau mà.
- Không có số liệu và số liệu bằng 0 là khác nhau.

Bạn có thể sửa dòng code này để phù hợp với cái bạn muốn

If Cells(i, 13).Value <> "" Or Cells(i, 14).Value <> "" Or Cells(i, 15).Value <> "" Then


13, 14,15 là đang tương ứng với cột M, N, O.
 
Upvote 0
3 cái cột đó là có giá trị thì lấy. Mình không biết thay thế nào?
 
Upvote 0
Cột M,N,Q ở sheet Tổng hợp. Trong 3 cột đó tại dòng nào có số liệu thì lấy cả dòng sang sheet Chi tiết. Ví dụ: ở sheet tổng hợp N8 có số liệu là 15.520 thì lấy cả dòng đó sang sheet chi tiết, N10 và Q10 đều có số liệu là -4.091.741 thì lấy cả dòng đó sang sheet chi tiết liền sau dòng N8
 
Upvote 0
Giá trị các ô trong cột M, N, O bằng 0 thì bạn có coi là có dữ liệu không?
Bài đã được tự động gộp:

Tôi đang hiểu ko có dữ liệu tức là ko có gì cả bằng trống ""
Bài đã được tự động gộp:

Nếu đúng như thế bạn có thể sửa thành như này
If Cells(i, 13).Value <> "" Or Cells(i, 14).Value <> "" Or Cells(i, 17).Value <> "" Cells(i, 13).Value <> 0 Or Cells(i, 14).Value <> 0 Or Cells(i, 17).Value <> 0 Then
 
Upvote 0
Bạn giúp mình so sánh 2 sheet này nhé? Nếu sheet A nhiều hơn sheet B dòng nào thì copy dòng đó sang sheet thừa, nếu sheet B nhiều hơn sheet A dòng nào thì copy dòng đó sang sheet thiếu. Tiêu chí so sánh là cột Mã
 

File đính kèm

Upvote 0
If Cells(i, 13).Value <> "" Or Cells(i, 14).Value <> "" Or Cells(i, 17).Value <> "" Cells(i, 13).Value <> 0 Or Cells(i, 14).Value <> 0 Or Cells(i, 17).Value <> 0 Then Đoạn này đưa vào code nó báo màu đỏ không chạy
 
Upvote 0
If Cells(i, 13).Value <> "" Or Cells(i, 14).Value <> "" Or Cells(i, 17).Value <> "" Cells(i, 13).Value <> 0 Or Cells(i, 14).Value <> 0 Or Cells(i, 17).Value <> 0 Then Đoạn này đưa vào code nó báo màu đỏ không chạy
If Cells(i, 13).Value <> "" Or Cells(i, 14).Value <> "" Or Cells(i, 17).Value <> "" Or Cells(i, 13).Value <> 0 Or Cells(i, 14).Value <> 0 Or Cells(i, 17).Value <> 0
 
Upvote 0
Bạn giúp mình so sánh 2 sheet này nhé? Nếu sheet A nhiều hơn sheet B dòng nào thì copy dòng đó sang sheet thừa, nếu sheet B nhiều hơn sheet A dòng nào thì copy dòng đó sang sheet thiếu. Tiêu chí so sánh là cột Mã
Bạn thử code này nhé.
Mã:
Sub kiemtra()
    Dim i As Long, dic As Object, lr As Long, arrA, thieu, thua, arrB, dk As String, a As Long, b As Long, j As Integer, dks As String
    Set dic = CreateObject("scripting.dictionary")
    With Sheets("B")
         lr = .Range("C" & Rows.Count).End(xlUp).Row
         arrB = .Range("A4:X" & lr).Value
         ReDim thua(1 To UBound(arrB), 1 To UBound(arrB, 2))
    End With
    With Sheets("A")
         lr = .Range("C" & Rows.Count).End(xlUp).Row
         arrA = .Range("A4:X" & lr).Value
         ReDim thieu(1 To UBound(arrA), 1 To UBound(arrA, 2))
    End With
         For i = 1 To UBound(arrA)
             dk = arrA(i, 3) & a
             dic.Item(dk) = i
         Next i
         For i = 1 To UBound(arrB)
             dk = arrB(i, 3) & a
             dks = arrB(i, 3) & b
             If Not dic.exists(dk) Then
                b = b + 1
                For j = 1 To UBound(arrB, 2)
                    thua(b, j) = arrB(i, j)
                Next j
             End If
             dic.Item(dks) = i
         Next i
         For i = 1 To UBound(arrA)
             dk = arrA(i, 3) & b
             If Not dic.exists(dk) Then
                a = a + 1
                For j = 1 To UBound(arrA, 2)
                    thieu(a, j) = arrA(i, j)
                Next j
             End If
         Next i
    With Sheets("thua")
         lr = .Range("C" & Rows.Count).End(xlUp).Row
         If lr > 1 Then .Range("A2:X" & lr).ClearContents
         If b Then .Range("A2:X2").Resize(b).Value = thua
    End With
    With Sheets("thieu")
         lr = .Range("C" & Rows.Count).End(xlUp).Row
         If lr > 1 Then .Range("A2:X" & lr).ClearContents
         If b Then .Range("A2:X2").Resize(b).Value = thieu
    End With
End Sub
 
Upvote 0
If Cells(i, 13).Value <> "" Or Cells(i, 14).Value <> "" Or Cells(i, 17).Value <> "" Or Cells(i, 13).Value <> 0 Or Cells(i, 14).Value <> 0 Or Cells(i, 17).Value <> 0
Bạn đặt giúp mình điều kiện ở trên là: >=5 và <=-5
Bài đã được tự động gộp:

Cho mình hỏi thêm ở file so sánh cột so sánh là cột mã cột C. Mình muốn thay đổi cột so sánh là cột khác thì sửa ở dòng nào? Cảm ơn bạn
 
Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn nguyentinhhn và snow25 đã nhiệt tình giúp đỡ
 
Upvote 0
Web KT

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

Back
Top Bottom