Tự Phân Chia dữ liệu khi nhập vào

Liên hệ QC

Gagas

Thành viên mới
Tham gia
1/5/20
Bài viết
16
Được thích
4
Dạ chào mấy anh , file excel gồm 3 bảng:
+ bảng 1 là bảng mặc định tải về từ hệ thống
+ bảng 2 là e tự cập nhật vào
+ bảng 3 là bảng dùng để in ra ... cho bộ phận giao hàng ký nhận
AC giúp e cách nào để khi e nhập dữ liệu ( mã đơn hàng ) vào bảng 2 , thì mã đơn hàng sẽ tự xuât vào bảng 3 đúng với đơn vị vận chuyển , dựa trên số liệu bảng 1 không ạ
E Xin Cảm ơn ạ !
 

File đính kèm

  • Help.png
    Help.png
    78.8 KB · Đọc: 22
  • help.xlsx
    10.2 KB · Đọc: 24
Dạ chào mấy anh , file excel gồm 3 bảng:
+ bảng 1 là bảng mặc định tải về từ hệ thống
+ bảng 2 là e tự cập nhật vào
+ bảng 3 là bảng dùng để in ra ... cho bộ phận giao hàng ký nhận
AC giúp e cách nào để khi e nhập dữ liệu ( mã đơn hàng ) vào bảng 2 , thì mã đơn hàng sẽ tự xuât vào bảng 3 đúng với đơn vị vận chuyển , dựa trên số liệu bảng 1 không ạ
E Xin Cảm ơn ạ !
Sheet cần in bạn add mẫu fom cần in đi,gửi file mình giúp nhé.
 
Upvote 0
Dạ chào mấy anh , file excel gồm 3 bảng:
+ bảng 1 là bảng mặc định tải về từ hệ thống
+ bảng 2 là e tự cập nhật vào
+ bảng 3 là bảng dùng để in ra ... cho bộ phận giao hàng ký nhận
AC giúp e cách nào để khi e nhập dữ liệu ( mã đơn hàng ) vào bảng 2 , thì mã đơn hàng sẽ tự xuât vào bảng 3 đúng với đơn vị vận chuyển , dựa trên số liệu bảng 1 không ạ
E Xin Cảm ơn ạ !
Thấy nickname sao quen quen, nhìn file 2 tên sheet dài dòng quá, mình làm thử công thức file đầu tiên trong cũng bảng tính
 

File đính kèm

  • help.xlsx
    11.5 KB · Đọc: 17
Upvote 0
Dạ chào mấy anh , file excel gồm 3 bảng:
+ bảng 1 là bảng mặc định tải về từ hệ thống
+ bảng 2 là e tự cập nhật vào
+ bảng 3 là bảng dùng để in ra ... cho bộ phận giao hàng ký nhận
AC giúp e cách nào để khi e nhập dữ liệu ( mã đơn hàng ) vào bảng 2 , thì mã đơn hàng sẽ tự xuât vào bảng 3 đúng với đơn vị vận chuyển , dựa trên số liệu bảng 1 không ạ
E Xin Cảm ơn ạ !

Bạn thử code này xem (hic! sao mà lắm for nhiều if vậy,liệu vậy có thừa gì không ta...)
Mã:
Option Explicit

Sub TapCode_PhieuXuat()
    Dim Bang1(), Bang2(), Bang3(), KQ()
    Dim i As Long, c As Long, j As Long, k As Long
    With ThisWorkbook.Worksheets("Sheet1")
        Bang1 = .Range("A5:F" & 10).Value
        Bang2 = .Range("C18:D23").Value
        Bang3 = .Range("I6:L6").Value
        ReDim KQ(1 To UBound(Bang2, 1), 1 To 4)
        For c = 1 To UBound(Bang1, 1)
            For i = 1 To UBound(Bang2, 1)
                If Bang2(i, 1) = Bang1(c, 1) Then
                    For j = 1 To 4
                        If Bang3(1, j) = Bang1(c, 6) Then
                            k = k + 1
                            KQ(k, j) = Bang2(i, 1)
                        End If
                    Next j
                End If
            Next i
        Next c
        .Range("I7:L20").Value = Empty
        .Range("I7").Resize(k, 4).Value = KQ
    End With
End Sub
 
Upvote 0
Bạn thử code này xem (hic! sao mà lắm for nhiều if vậy,liệu vậy có thừa gì không ta...)
Mã:
Option Explicit

Sub TapCode_PhieuXuat()
    Dim Bang1(), Bang2(), Bang3(), KQ()
    Dim i As Long, c As Long, j As Long, k As Long
    With ThisWorkbook.Worksheets("Sheet1")
        Bang1 = .Range("A5:F" & 10).Value
        Bang2 = .Range("C18:D23").Value
        Bang3 = .Range("I6:L6").Value
        ReDim KQ(1 To UBound(Bang2, 1), 1 To 4)
        For c = 1 To UBound(Bang1, 1)
            For i = 1 To UBound(Bang2, 1)
                If Bang2(i, 1) = Bang1(c, 1) Then
                    For j = 1 To 4
                        If Bang3(1, j) = Bang1(c, 6) Then
                            k = k + 1
                            KQ(k, j) = Bang2(i, 1)
                        End If
                    Next j
                End If
            Next i
        Next c
        .Range("I7:L20").Value = Empty
        .Range("I7").Resize(k, 4).Value = KQ
    End With
End Sub
Kết quả chấp hành nghiêm túc giãn cách nCoV :p
 
Upvote 0
Thêm lệnh dò dòng cuối của bảng kết quả

Hết giãn cách, nhưng bỏ mảng Bác ạ :D
Bác chỉ giúp con cách giữ lại mảng với T_T

Mã:
Option Explicit

Sub TapCode_PhieuXuat_HetGianCach()
    Dim Bang1(), Bang2(), Bang3(), i As Long, c As Long, j As Long, k As Long
    With ThisWorkbook.Worksheets("Sheet1")
        Bang1 = .Range("A5:F" & 10).Value
        Bang2 = .Range("C18:D23").Value
        Bang3 = .Range("I6:L6").Value
                .Range("I7:L20").Value = Empty
        For c = 1 To UBound(Bang1, 1)
            For i = 1 To UBound(Bang2, 1)
                If Bang2(i, 1) = Bang1(c, 1) Then
                    For j = 1 To 4
                        If Bang3(1, j) = Bang1(c, 6) Then
                             k = .Range("H20").Offset(, j).End(xlUp).Row + 1
                            .Cells(k, 8 + j) = Bang2(i, 1)
                        End If
                    Next j
                End If
            Next i
        Next c
    End With
End Sub
 
Upvote 0
Hết giãn cách, nhưng bỏ mảng Bác ạ :D
Bác chỉ giúp con cách giữ lại mảng với T_T
Chơi chiêu với nó một chút!
PHP:
Option Explicit

Sub TapCode_PhieuXuat()
    Dim Bang1(), Bang2(), Bang3(), KQ()
    Dim i As Long, c As Long, j As Long, k As Long, MaxK As Long
    With ThisWorkbook.Worksheets("Sheet1")
        Bang1 = .Range("A5:F" & 10).Value
        Bang2 = .Range("C18:D23").Value
        Bang3 = .Range("I6:L6").Value
        ReDim KQ(1 To 1000, 1 To 4) '<======= lay so 1000 lam cui bap'
        For c = 1 To UBound(Bang1, 1)
            For i = 1 To UBound(Bang2, 1)
                If Bang2(i, 1) = Bang1(c, 1) Then
                    For j = 1 To 4
                        If Bang3(1, j) = Bang1(c, 6) Then
                            k = KQ(1000, j) + 1
                            KQ(k, j) = Bang2(i, 1)
                            KQ(1000, j) = k
                            If k > MaxK Then MaxK = k
                            Exit For    '===========Hong choi nua'
                        End If
                    Next j
                End If
            Next i
        Next c
        .Range("I7:L200").ClearContents
        .Range("I7").Resize(MaxK, 4).Value = KQ
    End With
End Sub
 
Upvote 0
Chơi chiêu với nó một chút!
PHP:
Option Explicit

Sub TapCode_PhieuXuat()
    Dim Bang1(), Bang2(), Bang3(), KQ()
    Dim i As Long, c As Long, j As Long, k As Long, MaxK As Long
    With ThisWorkbook.Worksheets("Sheet1")
        Bang1 = .Range("A5:F" & 10).Value
        Bang2 = .Range("C18:D23").Value
        Bang3 = .Range("I6:L6").Value
        ReDim KQ(1 To 1000, 1 To 4) '<======= lay so 1000 lam cui bap'
        For c = 1 To UBound(Bang1, 1)
            For i = 1 To UBound(Bang2, 1)
                If Bang2(i, 1) = Bang1(c, 1) Then
                    For j = 1 To 4
                        If Bang3(1, j) = Bang1(c, 6) Then
                            k = KQ(1000, j) + 1
                            KQ(k, j) = Bang2(i, 1)
                            KQ(1000, j) = k
                            If k > MaxK Then MaxK = k
                            Exit For    '===========Hong choi nua'
                        End If
                    Next j
                End If
            Next i
        Next c
        .Range("I7:L200").ClearContents
        .Range("I7").Resize(MaxK, 4).Value = KQ
    End With
End Sub
Hay quá Thầy ơi, khi nãy con cũng thử loay hoay mãi với cái Exit For rồi nhưng được mỗi cột đầu ạ.
Con cảm ơn Thầy đã chỉ dẫn ạ.
 
Upvote 0
Hay quá Thầy ơi, khi nãy con cũng thử loay hoay mãi với cái Exit For rồi nhưng được mỗi cột đầu ạ.
Con cảm ơn Thầy đã chỉ dẫn ạ.
Nếu dữ liệu chỉ bấy nhiêu thì 3 cái For chưa thấy gì.
Nếu dữ liệu bảng1 1000 dòng, bảng2 500 dòng, Bảng3 50 cột mới thấy "Hùm Beo".
 
Upvote 0
Web KT

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

Back
Top Bottom