Cập nhật dữ liệu tự động

Liên hệ QC

nbphong2019

Thành viên mới
Tham gia
18/1/19
Bài viết
7
Được thích
1
Chào các bạn!
Mình có 2 file excel: file 1 (bảng điểm cập nhật)chứa dữ liệu điểm của sinh viên thi lại; file 2 (HUNRE.KNM)chứa dữ liệu điểm của sinh viên thi lần 1, và cả sinh viên thi lại nhưng chưa có điểm
Mình muốn cập nhật tự động điểm của sinh viên thi lại file 1 vào file 2, vẫn giữ nguyên điểm của sinh viên thi lần 1
Diễn dàn giúp mình cách làm nhé. Thanks
 

File đính kèm

  • bảng điểm cập nhập.xls
    40.5 KB · Đọc: 9
  • HUNRE.KNM.xlsx
    437.9 KB · Đọc: 9
Chào các bạn!
Mình có 2 file excel: file 1 (bảng điểm cập nhật)chứa dữ liệu điểm của sinh viên thi lại; file 2 (HUNRE.KNM)chứa dữ liệu điểm của sinh viên thi lần 1, và cả sinh viên thi lại nhưng chưa có điểm
Mình muốn cập nhật tự động điểm của sinh viên thi lại file 1 vào file 2, vẫn giữ nguyên điểm của sinh viên thi lần 1
Diễn dàn giúp mình cách làm nhé. Cảm ơn
Bạn nói rõ xem nào.Vẫn giữ nguyên điểm lần 1 là sao.Mà sao không để trên cùng 1 file cập nhập cho rễ cần gì phải 2 file làm gì.
 
Bạn nói rõ xem nào.Vẫn giữ nguyên điểm lần 1 là sao.Mà sao không để trên cùng 1 file cập nhập cho rễ cần gì phải 2 file làm gì.
Khi thi lần 1, một số bạn trượt phải thi lần 2. Thi xong phải cập nhật điểm vào với các bạn thi lần 1, sau đó lọc ra các bạn thi lần 1,2 đều không qua để tổ chức học lại. Nhập thủ công thì rất lâu vì hàng ngàn SV
 
Khi thi lần 1, một số bạn trượt phải thi lần 2. Thi xong phải cập nhật điểm vào với các bạn thi lần 1, sau đó lọc ra các bạn thi lần 1,2 đều không qua để tổ chức học lại. Nhập thủ công thì rất lâu vì hàng ngàn SV
Vậy là cứ sinh viên nào có điểm thi lần 2 là chèn vào dữ liệu lần 1.À.
 
Đúng vậy, tìm theo mã sinh viên rồi chèn vào
Bạn xem code này nhé.Chọn file cần cập nhập kết quả.Có thể chọn được nhiều file nhé.
Mã:
Sub capnhapdiemlan2()
Dim arr, arr1, i As Long, j As Long, lr As Long, dic As Object, k, wb As Workbook, a As Long, dk As String
Application.ScreenUpdating = False
Application.AskToUpdateLinks = False
Application.DisplayAlerts = False
Set dic = CreateObject("scripting.dictionary")
With Sheets("sheet1")
     lr = .Range("B" & Rows.Count).End(xlUp).Row
     If lr < 3 Then Exit Sub
     arr = .Range("A1:M" & lr).Value
End With
With Application.FileDialog(msoFileDialogFilePicker)
     .AllowMultiSelect = True
     .Show
     For Each k In .SelectedItems
     Set wb = Workbooks.Open(k)
     a = wb.Sheets(1).Range("B" & Rows.Count).End(xlUp).Row
     If a > 4 Then
        arr1 = wb.Sheets(1).Range("A3:m" & a).Value
        For j = 6 To UBound(arr1, 2)
            If arr1(1, j) = Empty Then arr1(1, j) = arr1(1, j - 1)
               For i = 3 To UBound(arr1, 1)
                   dk = arr1(i, 2) & "#" & arr1(1, j)
                   If Len(arr1(i, j)) > 0 Then
                      dic.Item(dk) = arr1(i, j)
                   End If
               Next i
        Next j
    End If
    wb.Close False
    Next
End With
    For j = 6 To UBound(arr, 2)
            If arr(1, j) = Empty Then arr(1, j) = arr(1, j - 1)
               For i = 3 To UBound(arr, 1)
                   dk = arr(i, 2) & "#" & arr(1, j)
               If dic.exists(dk) Then
                  arr(i, j) = dic.Item(dk)
               End If
               Next i
    Next j
With Sheets("sheet1")
     .Range("A1:M" & lr).Value = arr
End With
Application.ScreenUpdating = True
Application.AskToUpdateLinks = True
Application.DisplayAlerts = True
End Sub
 

File đính kèm

  • HUNRE.KNM.xlsm
    437.7 KB · Đọc: 19
Bạn xem code này nhé.Chọn file cần cập nhập kết quả.Có thể chọn được nhiều file nhé.
Mã:
Sub capnhapdiemlan2()
Dim arr, arr1, i As Long, j As Long, lr As Long, dic As Object, k, wb As Workbook, a As Long, dk As String
Application.ScreenUpdating = False
Application.AskToUpdateLinks = False
Application.DisplayAlerts = False
Set dic = CreateObject("scripting.dictionary")
With Sheets("sheet1")
     lr = .Range("B" & Rows.Count).End(xlUp).Row
     If lr < 3 Then Exit Sub
     arr = .Range("A1:M" & lr).Value
End With
With Application.FileDialog(msoFileDialogFilePicker)
     .AllowMultiSelect = True
     .Show
     For Each k In .SelectedItems
     Set wb = Workbooks.Open(k)
     a = wb.Sheets(1).Range("B" & Rows.Count).End(xlUp).Row
     If a > 4 Then
        arr1 = wb.Sheets(1).Range("A3:m" & a).Value
        For j = 6 To UBound(arr1, 2)
            If arr1(1, j) = Empty Then arr1(1, j) = arr1(1, j - 1)
               For i = 3 To UBound(arr1, 1)
                   dk = arr1(i, 2) & "#" & arr1(1, j)
                   If Len(arr1(i, j)) > 0 Then
                      dic.Item(dk) = arr1(i, j)
                   End If
               Next i
        Next j
    End If
    wb.Close False
    Next
End With
    For j = 6 To UBound(arr, 2)
            If arr(1, j) = Empty Then arr(1, j) = arr(1, j - 1)
               For i = 3 To UBound(arr, 1)
                   dk = arr(i, 2) & "#" & arr(1, j)
               If dic.exists(dk) Then
                  arr(i, j) = dic.Item(dk)
               End If
               Next i
    Next j
With Sheets("sheet1")
     .Range("A1:M" & lr).Value = arr
End With
Application.ScreenUpdating = True
Application.AskToUpdateLinks = True
Application.DisplayAlerts = True
End Sub
Cám ơn bạn, để mình thử làm xem sao
 
Cám ơn bạn, để mình thử làm xem sao
Bạn chạy code này xem có nhanh hơn không nhé.
Mã:
Sub capnhapdiemlan2()
Dim arr, arr1, i As Long, j As Long, lr As Long, dic As Object, k, wb As Workbook, a As Long, dk As String, b As Long, c As Integer
Application.ScreenUpdating = False
Application.AskToUpdateLinks = False
Application.DisplayAlerts = False
Set dic = CreateObject("scripting.dictionary")
With Sheets("sheet1")
     lr = .Range("B" & Rows.Count).End(xlUp).Row
     If lr < 3 Then Exit Sub
     arr = .Range("A1:M" & lr).Value
     For i = 3 To UBound(arr, 1)
         dic.Item(arr(i, 2)) = i
     Next i
     For j = 6 To UBound(arr, 2)
         If arr(1, j) = Empty Then arr(1, j) = arr(1, j - 1) & "#"
         dic.Item(arr(1, j)) = j
     Next j
End With
With Application.FileDialog(msoFileDialogFilePicker)
     .AllowMultiSelect = True
     .Show
     For Each k In .SelectedItems
     Set wb = Workbooks.Open(k)
     a = wb.Sheets(1).Range("B" & Rows.Count).End(xlUp).Row
     If a > 4 Then
        arr1 = wb.Sheets(1).Range("A3:m" & a).Value
        For j = 6 To UBound(arr1, 2)
            If arr1(1, j) = Empty Then arr1(1, j) = arr1(1, j - 1) & "#"
               c = dic.Item(arr1(1, j))
               If c Then
                  For i = 3 To UBound(arr1, 1)
                      b = dic.Item(arr1(i, 2))
                      If b Then
                          If Len(arr1(i, j)) > 0 Then
                             arr(b, c) = arr1(i, j)
                          End If
                      End If
                  Next i
              End If
        Next j
    End If
    wb.Close False
    Next
End With
With Sheets("sheet1")
     .Range("A1:M" & lr).Value = arr
End With
Application.ScreenUpdating = True
Application.AskToUpdateLinks = True
Application.DisplayAlerts = True
End Sub
 

File đính kèm

  • HUNRE.KNM.xlsm
    437.7 KB · Đọc: 11
Bạn chạy code này xem có nhanh hơn không nhé.
Mã:
Sub capnhapdiemlan2()
Dim arr, arr1, i As Long, j As Long, lr As Long, dic As Object, k, wb As Workbook, a As Long, dk As String, b As Long, c As Integer
Application.ScreenUpdating = False
Application.AskToUpdateLinks = False
Application.DisplayAlerts = False
Set dic = CreateObject("scripting.dictionary")
With Sheets("sheet1")
     lr = .Range("B" & Rows.Count).End(xlUp).Row
     If lr < 3 Then Exit Sub
     arr = .Range("A1:M" & lr).Value
     For i = 3 To UBound(arr, 1)
         dic.Item(arr(i, 2)) = i
     Next i
     For j = 6 To UBound(arr, 2)
         If arr(1, j) = Empty Then arr(1, j) = arr(1, j - 1) & "#"
         dic.Item(arr(1, j)) = j
     Next j
End With
With Application.FileDialog(msoFileDialogFilePicker)
     .AllowMultiSelect = True
     .Show
     For Each k In .SelectedItems
     Set wb = Workbooks.Open(k)
     a = wb.Sheets(1).Range("B" & Rows.Count).End(xlUp).Row
     If a > 4 Then
        arr1 = wb.Sheets(1).Range("A3:m" & a).Value
        For j = 6 To UBound(arr1, 2)
            If arr1(1, j) = Empty Then arr1(1, j) = arr1(1, j - 1) & "#"
               c = dic.Item(arr1(1, j))
               If c Then
                  For i = 3 To UBound(arr1, 1)
                      b = dic.Item(arr1(i, 2))
                      If b Then
                          If Len(arr1(i, j)) > 0 Then
                             arr(b, c) = arr1(i, j)
                          End If
                      End If
                  Next i
              End If
        Next j
    End If
    wb.Close False
    Next
End With
With Sheets("sheet1")
     .Range("A1:M" & lr).Value = arr
End With
Application.ScreenUpdating = True
Application.AskToUpdateLinks = True
Application.DisplayAlerts = True
End Sub
Bài đã được tự động gộp:

Mình thử thì cả hai cột điểm được cập nhật mới đều dạng chữ, trong khi file cần cập nhật 1 cột là điểm số, 1 cột là điểm chữ bạn ạ
Bạn giúp mình nhé. Cám ơn bạn
 

File đính kèm

  • bảng điểm cập nhập.xls
    40.5 KB · Đọc: 11
  • HUNRE.KNM.xlsm
    437.7 KB · Đọc: 12
Lần chỉnh sửa cuối:
Bài đã được tự động gộp:

Mình thử thì cả hai cột điểm được cập nhật mới đều dạng chữ, trong khi file cần cập nhật 1 cột là điểm số, 1 cột là điểm chữ bạn ạ
Bạn giúp mình nhé. Cám ơn bạn
Code sau cập nhập đúng mà bạn 1 cột số 1 cột chữ mà.Bạn xem lại xem nào.
Bài đã được tự động gộp:

Bài đã được tự động gộp:

Mình thử thì cả hai cột điểm được cập nhật mới đều dạng chữ, trong khi file cần cập nhật 1 cột là điểm số, 1 cột là điểm chữ bạn ạ
Bạn giúp mình nhé. Cám ơn bạn
Đây bạn mình gửi code bài 1.
Mã:
Sub capnhapdiemlan21()
Dim arr, arr1, i As Long, j As Long, lr As Long, dic As Object, k, wb As Workbook, a As Long, dk As String
Application.ScreenUpdating = False
Application.AskToUpdateLinks = False
Application.DisplayAlerts = False
Set dic = CreateObject("scripting.dictionary")
With Sheets("sheet1")
     lr = .Range("B" & Rows.Count).End(xlUp).Row
     If lr < 3 Then Exit Sub
     arr = .Range("A1:M" & lr).Value
End With
With Application.FileDialog(msoFileDialogFilePicker)
     .AllowMultiSelect = True
     .Show
     For Each k In .SelectedItems
     Set wb = Workbooks.Open(k)
     a = wb.Sheets(1).Range("B" & Rows.Count).End(xlUp).Row
     If a > 4 Then
        arr1 = wb.Sheets(1).Range("A3:m" & a).Value
        For j = 6 To UBound(arr1, 2)
            If arr1(1, j) = Empty Then arr1(1, j) = arr1(1, j - 1) & "#"
               For i = 3 To UBound(arr1, 1)
                   dk = arr1(i, 2) & "#" & arr1(1, j)
                   If Len(arr1(i, j)) > 0 Then
                      dic.Item(dk) = arr1(i, j)
                   End If
               Next i
        Next j
    End If
    wb.Close False
    Next
End With
    For j = 6 To UBound(arr, 2)
            If arr(1, j) = Empty Then arr(1, j) = arr(1, j - 1) & "#"
               For i = 3 To UBound(arr, 1)
                   dk = arr(i, 2) & "#" & arr(1, j)
               If dic.exists(dk) Then
                  arr(i, j) = dic.Item(dk)
               End If
               Next i
    Next j
With Sheets("sheet1")
     .Range("A1:M" & lr).Value = arr
End With
Application.ScreenUpdating = True
Application.AskToUpdateLinks = True
Application.DisplayAlerts = True
End Sub
 
Code sau cập nhập đúng mà bạn 1 cột số 1 cột chữ mà.Bạn xem lại xem nào.
Bài đã được tự động gộp:


Đây bạn mình gửi code bài 1.
Mã:
Sub capnhapdiemlan21()
Dim arr, arr1, i As Long, j As Long, lr As Long, dic As Object, k, wb As Workbook, a As Long, dk As String
Application.ScreenUpdating = False
Application.AskToUpdateLinks = False
Application.DisplayAlerts = False
Set dic = CreateObject("scripting.dictionary")
With Sheets("sheet1")
     lr = .Range("B" & Rows.Count).End(xlUp).Row
     If lr < 3 Then Exit Sub
     arr = .Range("A1:M" & lr).Value
End With
With Application.FileDialog(msoFileDialogFilePicker)
     .AllowMultiSelect = True
     .Show
     For Each k In .SelectedItems
     Set wb = Workbooks.Open(k)
     a = wb.Sheets(1).Range("B" & Rows.Count).End(xlUp).Row
     If a > 4 Then
        arr1 = wb.Sheets(1).Range("A3:m" & a).Value
        For j = 6 To UBound(arr1, 2)
            If arr1(1, j) = Empty Then arr1(1, j) = arr1(1, j - 1) & "#"
               For i = 3 To UBound(arr1, 1)
                   dk = arr1(i, 2) & "#" & arr1(1, j)
                   If Len(arr1(i, j)) > 0 Then
                      dic.Item(dk) = arr1(i, j)
                   End If
               Next i
        Next j
    End If
    wb.Close False
    Next
End With
    For j = 6 To UBound(arr, 2)
            If arr(1, j) = Empty Then arr(1, j) = arr(1, j - 1) & "#"
               For i = 3 To UBound(arr, 1)
                   dk = arr(i, 2) & "#" & arr(1, j)
               If dic.exists(dk) Then
                  arr(i, j) = dic.Item(dk)
               End If
               Next i
    Next j
With Sheets("sheet1")
     .Range("A1:M" & lr).Value = arr
End With
Application.ScreenUpdating = True
Application.AskToUpdateLinks = True
Application.DisplayAlerts = True
End Sub
OK, rồi bạn. Cám ơn bạn đã nhiệt tình giúp đỡ. Các bước để tạo cái nút ấy làm thế nào vậy bạn, mình cũng biết sơ qua về Macro nhưng chưa làm bao giờ
 
OK, rồi bạn. Cám ơn bạn đã nhiệt tình giúp đỡ. Các bước để tạo cái nút ấy làm thế nào vậy bạn, mình cũng biết sơ qua về Macro nhưng chưa làm bao giờ
Góp ý cho bạn:
Nên sử dụng kết quả thi vào chung một File sẽ thuận tiên hơn,
Muốn cập nhật thì chỉ cần nhấn nút, việc tìm và chọn File lâu ngày không nhớ chọn nhằm File thì sẽ nguy hại.
 
Góp ý cho bạn:
Nên sử dụng kết quả thi vào chung một File sẽ thuận tiên hơn,
Muốn cập nhật thì chỉ cần nhấn nút, việc tìm và chọn File lâu ngày không nhớ chọn nhằm File thì sẽ nguy hại.
Cho mình hỏi chút, nếu để chung 1 file thì cập nhật thế nào vậy bạn, nút Macro mà bạn tạo có cho cập nhật dữ liệu trên cùng 1 file không
Bài đã được tự động gộp:

Góp ý cho bạn:
Nên sử dụng kết quả thi vào chung một File sẽ thuận tiên hơn,
Muốn cập nhật thì chỉ cần nhấn nút, việc tìm và chọn File lâu ngày không nhớ chọn nhằm File thì sẽ nguy hại.
Cho mình hỏi chút, nếu để chung 1 file thì cập nhật thế nào vậy bạn, nút Macro mà bạn tạo có cho cập nhật dữ liệu trên cùng 1 file không
 
Cho mình hỏi chút, nếu để chung 1 file thì cập nhật thế nào vậy bạn, nút Macro mà bạn tạo có cho cập nhật dữ liệu trên cùng 1 file không
Bài đã được tự động gộp:


Cho mình hỏi chút, nếu để chung 1 file thì cập nhật thế nào vậy bạn, nút Macro mà bạn tạo có cho cập nhật dữ liệu trên cùng 1 file không
Cập nhật ở đâu mà chẳng được, quan trong là cách làm sao cho nhanh, gọn.
 
Web KT
Back
Top Bottom