Gộp dữ liệu từ nhiều file excel sang 1 file excel có sẵn

Liên hệ QC

dinhquang042000

Thành viên chính thức
Tham gia
16/12/15
Bài viết
76
Được thích
4
Kính gửi các anh chị diễn đàn,

em muốn tổng hợp dữ liệu từ file excel sang 1 file excel có sẵn cụ thể như:
Trong Folder TONG HOP của e có nhiều file excel có tên khác nhau có cấu trúc giống nhau nhưng dữ liệu khác nhau.
Em muốn tổng hợp tất cả các dữ liệu từ các file này từ dòng A3 - M3 đến hết sang sheet TONG HOP của file TONG HOP.
Em tìm kiếm nhưng chưa tìm thấy code nào dùng được cho file này.
Mong nhận được sự trợ giúp của các anh chị. Em xin chân thành cảm ơn
 

File đính kèm

  • TONG HOP.rar
    37.2 KB · Đọc: 18
Kính gửi các anh chị diễn đàn,

em muốn tổng hợp dữ liệu từ file excel sang 1 file excel có sẵn cụ thể như:
Trong Folder TONG HOP của e có nhiều file excel có tên khác nhau có cấu trúc giống nhau nhưng dữ liệu khác nhau.
Em muốn tổng hợp tất cả các dữ liệu từ các file này từ dòng A3 - M3 đến hết sang sheet TONG HOP của file TONG HOP.
Em tìm kiếm nhưng chưa tìm thấy code nào dùng được cho file này.
Mong nhận được sự trợ giúp của các anh chị. Em xin chân thành cảm ơn
tổng hợp thế nào nhỉ bạn gộp từng dữ liệu lại theo thứ tự à
 
Upvote 0
tổng hợp thế nào nhỉ bạn gộp từng dữ liệu lại theo thứ tự à
Da em mtổng hợp theo thứ tự từng sheet, hết sheet này tới sheet khác ạ. hoặc nếu có thể cập nhật theo thứ tự dữ liệu có Ngày đăng ký (cột I) lớn tới nhỏ thì tốt ạ. Mong các anh chị giúp đỡ ạ
 
Upvote 0
Da em mtổng hợp theo thứ tự từng sheet, hết sheet này tới sheet khác ạ. hoặc nếu có thể cập nhật theo thứ tự dữ liệu có Ngày đăng ký (cột I) lớn tới nhỏ thì tốt ạ. Mong các anh chị giúp đỡ ạ
đây bạn xem nhé có gì để mình sửa lại
 

File đính kèm

  • TONG HOP.xlsm
    19.9 KB · Đọc: 25
Upvote 0
đây bạn xem nhé có gì để mình sửa lại

Em muốn thêm code VBA thay thế cho VLOOKUP cho sheet LIST SA LAN.
KHI paste dữ liệu vào cột B2- C của sheet LIST SA LAN thì các dữ liệu tương ứng từ cột D - L từ sheet TONG HOP sẽ tự động điền qua sheet
LIST SA LAN. Em tìm kiếm có 1 code tương ứng, Nhưng khi coppy vào và chỉnh sửa lại theo file của em thì không chạy.
Mong anh xem xét chỉ dẫn thêm cho em.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim d, I, Vung, Ws
Set d = CreateObject("scripting.dictionary")
Set Ws = Sheets("TONG HOP")
Vung = Ws.Range(Ws.[B3], Ws.[B10000].End(xlUp)).Resize(, 3)
If Not Intersect(Target, Range("B4:B1000")) Is Nothing Then
If Target.Count = 1 Then
For I = 1 To UBound(Vung)
d.Add Vung(I, 1), Array(Vung(I, 2), Vung(I, 3))
Next I
If d.exists(UCase(Target.Value)) Then
Target.Offset(, 1) = d.Item(UCase(Target.Value))(0)
Target.Offset(, 2) = d.Item(UCase(Target.Value))(1)
End If
End If
End If
End Sub
 

File đính kèm

  • TONG HOP.xlsm
    23.4 KB · Đọc: 15
Upvote 0
Em muốn thêm code VBA thay thế cho VLOOKUP cho sheet LIST SA LAN.
KHI paste dữ liệu vào cột B2- C của sheet LIST SA LAN thì các dữ liệu tương ứng từ cột D - L từ sheet TONG HOP sẽ tự động điền qua sheet
LIST SA LAN. Em tìm kiếm có 1 code tương ứng, Nhưng khi coppy vào và chỉnh sửa lại theo file của em thì không chạy.
Mong anh xem xét chỉ dẫn thêm cho em.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim d, I, Vung, Ws
Set d = CreateObject("scripting.dictionary")
Set Ws = Sheets("TONG HOP")
Vung = Ws.Range(Ws.[B3], Ws.[B10000].End(xlUp)).Resize(, 3)
If Not Intersect(Target, Range("B4:B1000")) Is Nothing Then
If Target.Count = 1 Then
For I = 1 To UBound(Vung)
d.Add Vung(I, 1), Array(Vung(I, 2), Vung(I, 3))
Next I
If d.exists(UCase(Target.Value)) Then
Target.Offset(, 1) = d.Item(UCase(Target.Value))(0)
Target.Offset(, 2) = d.Item(UCase(Target.Value))(1)
End If
End If
End If
End Sub
bạn thay bằng code này nhé
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim dic, I, Vung, Ws
    Set dic = CreateObject("scripting.dictionary")
    Set Ws = Sheets("TONG HOP")
    Vung = Ws.Range(Ws.[B3], Ws.[B10000].End(xlUp)).Resize(, 4)
        If Not Intersect(Target, Range("B2:B1000")) Is Nothing Then
            If Target.Count = 1 Then
                For I = 1 To UBound(Vung)
                    dic.Add UCase(Vung(I, 1)), Array(Vung(I, 2), Vung(I, 3), Vung(I, 4))
                Next I
                    If dic.exists(UCase(Target.Value)) Then
                        Target.Offset(, 1) = dic.Item(UCase(Target.Value))(0)
                        Target.Offset(, 2) = dic.Item(UCase(Target.Value))(1)
                        Target.Offset(, 5) = dic.Item(UCase(Target.Value))(2)
                    End If
            End If
         End If
End Sub
 
Upvote 0
bạn thay bằng code này nhé
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim dic, I, Vung, Ws
    Set dic = CreateObject("scripting.dictionary")
    Set Ws = Sheets("TONG HOP")
    Vung = Ws.Range(Ws.[B3], Ws.[B10000].End(xlUp)).Resize(, 4)
        If Not Intersect(Target, Range("B2:B1000")) Is Nothing Then
            If Target.Count = 1 Then
                For I = 1 To UBound(Vung)
                    dic.Add UCase(Vung(I, 1)), Array(Vung(I, 2), Vung(I, 3), Vung(I, 4))
                Next I
                    If dic.exists(UCase(Target.Value)) Then
                        Target.Offset(, 1) = dic.Item(UCase(Target.Value))(0)
                        Target.Offset(, 2) = dic.Item(UCase(Target.Value))(1)
                        Target.Offset(, 5) = dic.Item(UCase(Target.Value))(2)
                    End If
            End If
         End If
End Sub

Em coppy code này, nhưng khi coppy dữ liệu vào B2 - C bên sheet LIST SA LAN thì các giá trị từ cột D tới Cột L không cập nhật theo.
Anh xem lai giúp em với ạ.
 
Upvote 0
Em coppy code này, nhưng khi coppy dữ liệu vào B2 - C bên sheet LIST SA LAN thì các giá trị từ cột D tới Cột L không cập nhật theo.
Anh xem lai giúp em với ạ.
bạn muốn trả về những giá trị nào vậy hay là trả về toàn bộ bảng bên kia vậy
 
Upvote 0
dạ trả về toàn bộ bảng như tiêu đề bên LIST SA LAN từ cột D tới cột L tưng ứng với giá trị ở cột B ạ.
đây bạn nhé
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim dic, I, Vung, Ws
    Set dic = CreateObject("scripting.dictionary")
    Set Ws = Sheets("TONG HOP")
    Vung = Ws.Range(Ws.[B3], Ws.[B10000].End(xlUp)).Resize(, 10)
        If Not Intersect(Target, Range("B2:B1000")) Is Nothing Then
            If Target.Count = 1 Then
                For I = 1 To UBound(Vung)
                    dic.Add UCase(Vung(I, 1)), Array(Vung(I, 2), Vung(I, 3), Vung(I, 4), Vung(I, 5), Vung(I, 6), Vung(I, 7), Vung(I, 8), Vung(I, 9), Vung(I, 10))
                Next I
                    If dic.exists(UCase(Target.Value)) Then
                        Target.Offset(, 2) = dic.Item(UCase(Target.Value))(0)
                        Target.Offset(, 3) = dic.Item(UCase(Target.Value))(1)
                        Target.Offset(, 4) = dic.Item(UCase(Target.Value))(2)
                        Target.Offset(, 5) = dic.Item(UCase(Target.Value))(3)
                        Target.Offset(, 6) = dic.Item(UCase(Target.Value))(4)
                        Target.Offset(, 7) = dic.Item(UCase(Target.Value))(5)
                        Target.Offset(, 8) = dic.Item(UCase(Target.Value))(6)
                        Target.Offset(, 9) = dic.Item(UCase(Target.Value))(7)
                        Target.Offset(, 10) = dic.Item(UCase(Target.Value))(8)
                    End If
            End If
         End If
End Sub
 
Upvote 0
đây bạn nhé
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim dic, I, Vung, Ws
    Set dic = CreateObject("scripting.dictionary")
    Set Ws = Sheets("TONG HOP")
    Vung = Ws.Range(Ws.[B3], Ws.[B10000].End(xlUp)).Resize(, 10)
        If Not Intersect(Target, Range("B2:B1000")) Is Nothing Then
            If Target.Count = 1 Then
                For I = 1 To UBound(Vung)
                    dic.Add UCase(Vung(I, 1)), Array(Vung(I, 2), Vung(I, 3), Vung(I, 4), Vung(I, 5), Vung(I, 6), Vung(I, 7), Vung(I, 8), Vung(I, 9), Vung(I, 10))
                Next I
                    If dic.exists(UCase(Target.Value)) Then
                        Target.Offset(, 2) = dic.Item(UCase(Target.Value))(0)
                        Target.Offset(, 3) = dic.Item(UCase(Target.Value))(1)
                        Target.Offset(, 4) = dic.Item(UCase(Target.Value))(2)
                        Target.Offset(, 5) = dic.Item(UCase(Target.Value))(3)
                        Target.Offset(, 6) = dic.Item(UCase(Target.Value))(4)
                        Target.Offset(, 7) = dic.Item(UCase(Target.Value))(5)
                        Target.Offset(, 8) = dic.Item(UCase(Target.Value))(6)
                        Target.Offset(, 9) = dic.Item(UCase(Target.Value))(7)
                        Target.Offset(, 10) = dic.Item(UCase(Target.Value))(8)
                    End If
            End If
         End If
End Sub

Anh chạy thử thì thấy khi paste dữ liệu vào cột B2- C (nhiều dữ liệu) vào sheet LIST SA LAN. thì các giá trị cột D tới L không nhảy. cần phải kích vào từng ô một ở cột B thì các các cột kia mới nhảy. Anh xem giúp e có cách nào cho tự nhảy không ạ, Chỉ cần paste dữ liệu vào B2-C thì các cột kia tự động điền dữ liệu tương ứng. Cảm ơn anh ạ
 
Upvote 0
Anh chạy thử thì thấy khi paste dữ liệu vào cột B2- C (nhiều dữ liệu) vào sheet LIST SA LAN. thì các giá trị cột D tới L không nhảy. cần phải kích vào từng ô một ở cột B thì các các cột kia mới nhảy. Anh xem giúp e có cách nào cho tự nhảy không ạ, Chỉ cần paste dữ liệu vào B2-C thì các cột kia tự động điền dữ liệu tương ứng. Cảm ơn anh ạ
đây bạn xem nhé
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim dic, I, Vung, Ws, arr, b As Long
    Set dic = CreateObject("scripting.dictionary")
    Set Ws = Sheets("TONG HOP")
    Vung = Ws.Range("b2:k" & Ws.Range("b" & Rows.Count).End(xlUp).Row).Value
    b = Sheet2.Range("b" & Rows.Count).End(xlUp).Row
    arr = Sheet2.Range("b2:l" & b).Value
    If b > 1 Then Sheet2.Range("b2:l" & b).ClearContents
        If Not Intersect(Target, Range("B2:B1000")) Is Nothing Then
           Application.EnableEvents = False
                For I = 1 To UBound(Vung)
                    dic.Add UCase(Vung(I, 1)), Array(Vung(I, 2), Vung(I, 3), Vung(I, 4), Vung(I, 5), Vung(I, 6), Vung(I, 7), Vung(I, 8), Vung(I, 9), Vung(I, 10))
                Next I
                For I = 1 To UBound(arr, 1)
                    If dic.exists(UCase(arr(I, 1))) Then
                         arr(I, 3) = dic.Item(UCase(arr(I, 1)))(0)
                         arr(I, 4) = dic.Item(UCase(arr(I, 1)))(1)
                         arr(I, 5) = dic.Item(UCase(arr(I, 1)))(2)
                         arr(I, 6) = dic.Item(UCase(arr(I, 1)))(3)
                         arr(I, 7) = dic.Item(UCase(arr(I, 1)))(4)
                         arr(I, 8) = dic.Item(UCase(arr(I, 1)))(5)
                         arr(I, 9) = dic.Item(UCase(arr(I, 1)))(6)
                         arr(I, 10) = dic.Item(UCase(arr(I, 1)))(7)
                         arr(I, 11) = dic.Item(UCase(arr(I, 1)))(8)
                    End If
               Next I
                Sheet2.Range("b2:l" & b).Value = arr
              Application.EnableEvents = True
         End If
End Sub
 
Upvote 0
đây bạn xem nhé
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim dic, I, Vung, Ws, arr, b As Long
    Set dic = CreateObject("scripting.dictionary")
    Set Ws = Sheets("TONG HOP")
    Vung = Ws.Range("b2:k" & Ws.Range("b" & Rows.Count).End(xlUp).Row).Value
    b = Sheet2.Range("b" & Rows.Count).End(xlUp).Row
    arr = Sheet2.Range("b2:l" & b).Value
    If b > 1 Then Sheet2.Range("b2:l" & b).ClearContents
        If Not Intersect(Target, Range("B2:B1000")) Is Nothing Then
           Application.EnableEvents = False
                For I = 1 To UBound(Vung)
                    dic.Add UCase(Vung(I, 1)), Array(Vung(I, 2), Vung(I, 3), Vung(I, 4), Vung(I, 5), Vung(I, 6), Vung(I, 7), Vung(I, 8), Vung(I, 9), Vung(I, 10))
                Next I
                For I = 1 To UBound(arr, 1)
                    If dic.exists(UCase(arr(I, 1))) Then
                         arr(I, 3) = dic.Item(UCase(arr(I, 1)))(0)
                         arr(I, 4) = dic.Item(UCase(arr(I, 1)))(1)
                         arr(I, 5) = dic.Item(UCase(arr(I, 1)))(2)
                         arr(I, 6) = dic.Item(UCase(arr(I, 1)))(3)
                         arr(I, 7) = dic.Item(UCase(arr(I, 1)))(4)
                         arr(I, 8) = dic.Item(UCase(arr(I, 1)))(5)
                         arr(I, 9) = dic.Item(UCase(arr(I, 1)))(6)
                         arr(I, 10) = dic.Item(UCase(arr(I, 1)))(7)
                         arr(I, 11) = dic.Item(UCase(arr(I, 1)))(8)
                    End If
               Next I
                Sheet2.Range("b2:l" & b).Value = arr
              Application.EnableEvents = True
         End If
End Sub
Dạ code này dùng tốt lắm ạ.
Em cảm ơn anh nhiệt tình giúp đỡ em ạ. :D
Chúc anh một buổi tối vui vẻ!
 
Upvote 0
đây bạn xem nhé
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim dic, I, Vung, Ws, arr, b As Long
    Set dic = CreateObject("scripting.dictionary")
    Set Ws = Sheets("TONG HOP")
    Vung = Ws.Range("b2:k" & Ws.Range("b" & Rows.Count).End(xlUp).Row).Value
    b = Sheet2.Range("b" & Rows.Count).End(xlUp).Row
    arr = Sheet2.Range("b2:l" & b).Value
    If b > 1 Then Sheet2.Range("b2:l" & b).ClearContents
        If Not Intersect(Target, Range("B2:B1000")) Is Nothing Then
           Application.EnableEvents = False
                For I = 1 To UBound(Vung)
                    dic.Add UCase(Vung(I, 1)), Array(Vung(I, 2), Vung(I, 3), Vung(I, 4), Vung(I, 5), Vung(I, 6), Vung(I, 7), Vung(I, 8), Vung(I, 9), Vung(I, 10))
                Next I
                For I = 1 To UBound(arr, 1)
                    If dic.exists(UCase(arr(I, 1))) Then
                         arr(I, 3) = dic.Item(UCase(arr(I, 1)))(0)
                         arr(I, 4) = dic.Item(UCase(arr(I, 1)))(1)
                         arr(I, 5) = dic.Item(UCase(arr(I, 1)))(2)
                         arr(I, 6) = dic.Item(UCase(arr(I, 1)))(3)
                         arr(I, 7) = dic.Item(UCase(arr(I, 1)))(4)
                         arr(I, 8) = dic.Item(UCase(arr(I, 1)))(5)
                         arr(I, 9) = dic.Item(UCase(arr(I, 1)))(6)
                         arr(I, 10) = dic.Item(UCase(arr(I, 1)))(7)
                         arr(I, 11) = dic.Item(UCase(arr(I, 1)))(8)
                    End If
               Next I
                Sheet2.Range("b2:l" & b).Value = arr
              Application.EnableEvents = True
         End If
End Sub

Em nhờ anh thêm xíu. Anh xem giúp em, có cách nào điều chỉnh code để những giá trị khi điền vào sheet LIST SA LAN mà không có thông tin bên Sheet TONGHOP sẽ trả về giá trị trắng "" thay cho báo lỗi #N/A và tô màu vàng cho những giá trị đó được không ạ.
Mong anh chỉ giáo thêm.
 
Upvote 0
Em nhờ anh thêm xíu. Anh xem giúp em, có cách nào điều chỉnh code để những giá trị khi điền vào sheet LIST SA LAN mà không có thông tin bên Sheet TONGHOP sẽ trả về giá trị trắng "" thay cho báo lỗi #N/A và tô màu vàng cho những giá trị đó được không ạ.
Mong anh chỉ giáo thêm.
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim dic, I, Vung, Ws, arr, b As Long, j As Long
    Set dic = CreateObject("scripting.dictionary")
    Set Ws = Sheets("TONG HOP")
    Vung = Ws.Range("b2:k" & Ws.Range("b" & Rows.Count).End(xlUp).Row).Value
    b = Sheet2.Range("b" & Rows.Count).End(xlUp).Row
    arr = Sheet2.Range("b2:l" & b).Value
    If b > 1 Then Sheet2.Range("b2:l" & b).ClearContents
        If Not Intersect(Target, Range("B2:B1000")) Is Nothing Then
           Application.EnableEvents = False
                For I = 1 To UBound(Vung)
                    dic.Add UCase(Vung(I, 1)), Array(Vung(I, 2), Vung(I, 3), Vung(I, 4), Vung(I, 5), Vung(I, 6), Vung(I, 7), Vung(I, 8), Vung(I, 9), Vung(I, 10))
                Next I
                For I = 1 To UBound(arr, 1)
                    If dic.exists(UCase(arr(I, 1))) Then
                         arr(I, 3) = dic.Item(UCase(arr(I, 1)))(0)
                         arr(I, 4) = dic.Item(UCase(arr(I, 1)))(1)
                         arr(I, 5) = dic.Item(UCase(arr(I, 1)))(2)
                         arr(I, 6) = dic.Item(UCase(arr(I, 1)))(3)
                         arr(I, 7) = dic.Item(UCase(arr(I, 1)))(4)
                         arr(I, 8) = dic.Item(UCase(arr(I, 1)))(5)
                         arr(I, 9) = dic.Item(UCase(arr(I, 1)))(6)
                         arr(I, 10) = dic.Item(UCase(arr(I, 1)))(7)
                         arr(I, 11) = dic.Item(UCase(arr(I, 1)))(8)
                    Else
                    For j = 1 To 9
                        arr(I, j) =Empty
                    Next j
                    End If
               Next I
                Sheet2.Range("b2:l" & b).Value = arr
              Application.EnableEvents = True
         End If
End Sub
bạn gắn vào nhé chưa tô màu.giá trị trả về sẽ không thể hiện gì mình chưa test nhé bạn test đi :D
 
Upvote 0
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim dic, I, Vung, Ws, arr, b As Long, j As Long
    Set dic = CreateObject("scripting.dictionary")
    Set Ws = Sheets("TONG HOP")
    Vung = Ws.Range("b2:k" & Ws.Range("b" & Rows.Count).End(xlUp).Row).Value
    b = Sheet2.Range("b" & Rows.Count).End(xlUp).Row
    arr = Sheet2.Range("b2:l" & b).Value
    If b > 1 Then Sheet2.Range("b2:l" & b).ClearContents
        If Not Intersect(Target, Range("B2:B1000")) Is Nothing Then
           Application.EnableEvents = False
                For I = 1 To UBound(Vung)
                    dic.Add UCase(Vung(I, 1)), Array(Vung(I, 2), Vung(I, 3), Vung(I, 4), Vung(I, 5), Vung(I, 6), Vung(I, 7), Vung(I, 8), Vung(I, 9), Vung(I, 10))
                Next I
                For I = 1 To UBound(arr, 1)
                    If dic.exists(UCase(arr(I, 1))) Then
                         arr(I, 3) = dic.Item(UCase(arr(I, 1)))(0)
                         arr(I, 4) = dic.Item(UCase(arr(I, 1)))(1)
                         arr(I, 5) = dic.Item(UCase(arr(I, 1)))(2)
                         arr(I, 6) = dic.Item(UCase(arr(I, 1)))(3)
                         arr(I, 7) = dic.Item(UCase(arr(I, 1)))(4)
                         arr(I, 8) = dic.Item(UCase(arr(I, 1)))(5)
                         arr(I, 9) = dic.Item(UCase(arr(I, 1)))(6)
                         arr(I, 10) = dic.Item(UCase(arr(I, 1)))(7)
                         arr(I, 11) = dic.Item(UCase(arr(I, 1)))(8)
                    Else
                    For j = 1 To 9
                        arr(I, j) =Empty
                    Next j
                    End If
               Next I
                Sheet2.Range("b2:l" & b).Value = arr
              Application.EnableEvents = True
         End If
End Sub
bạn gắn vào nhé chưa tô màu.giá trị trả về sẽ không thể hiện gì mình chưa test nhé bạn test đi :D

Anh chỉnh lại giúp em với. em cần là Nếu khi điền giá trị vào cột B tại sheet LIST SA LAN mà giá trị này không có bên sheet TONG HOP thi các giá trị trả về từ cột D tới L cho bên sheet LIST SA LAN bằng khoảng trắng "". còn giá trị tại cột B tại sheet LIST SA LAN vẫn giữ nguyên ạ. (VD file dính kèm)
CODE trên anh gửi là chỉ lấy giá trị có tìm được, những giá trị không tìm được xóa luôn. Anh xem lại giúp em với ạ
 

File đính kèm

  • Untitled.png
    Untitled.png
    43.2 KB · Đọc: 2
Upvote 0
Anh chỉnh lại giúp em với. em cần là Nếu khi điền giá trị vào cột B tại sheet LIST SA LAN mà giá trị này không có bên sheet TONG HOP thi các giá trị trả về từ cột D tới L cho bên sheet LIST SA LAN bằng khoảng trắng "". còn giá trị tại cột B tại sheet LIST SA LAN vẫn giữ nguyên ạ. (VD file dính kèm)
CODE trên anh gửi là chỉ lấy giá trị có tìm được, những giá trị không tìm được xóa luôn. Anh xem lại giúp em với ạ
bạn chỉnh lại for j từ 3 to 11 nhé
 
Upvote 0
Web KT
Back
Top Bottom