Auto update data

Liên hệ QC

Mèo_còm

Thành viên mới
Tham gia
30/12/08
Bài viết
2
Được thích
1
Mèo còm xin chào các anh chị.

Mèo còm đang gặp 1 vấn đề mà chưa biết giải quyết thế nào ạ.

Mèo còm sau khi xử lý dữ liệu xong thì kết quả ra được như sheet1 trong file đính kèm.
Mèo còm muốn là sau khi đã có data, Mèo còm chỉ việc ấn nút "Update" thì tự động copy sang sheet "Data". Mèo còm đã thử bằng cách record 1 macro, nhưng vấn đề là update data ngày hôm nay xong, hôm sau Mèo còm ấn vào "Update" nữa là nó đè lên data cũ.

Sheet "Data" chính là nơi Mèo còm lưu data cả tháng.

Các anh chị vui lòng giúp Mèo còm có cách nào để cho nó tự động dò tìm đến dòng cuối cùng, sau đó paste không ạ.

Mèo còm xin nói thêm là dữ liệu 1 ngày của Mèo còm khoảng 20.000 rows. Số cột thì không ổn định, mỗi tháng sẽ có yêu cầu khác nhau. Data gốc thì số cột là 43, nhưng sau khi chế biến thì tùy lúc số cột sẽ thay đổi. Tức là có thể lấy tối đa số cột là 43.

Với 20.000 rows, Mèo còm thử chạy cái macro mà Mèo còm record, máy treo luôn.

Rất cám ơn sự giúp đỡ của các anh chị.

P/s: Hiện tại Mèo còm đang sử dụng Office 2007 nên Mèo còm đã save dưới dạng 97-2003, tuy nhiên không hiểu sao file lớn lên rất nhiều, hơn 1 Mb, còn để nguyên dạng của 2007 thì dưới 1Mb. Các anh chị có biết tại sao không ạ?
 

File đính kèm

  • Auto update data.7z
    36.8 KB · Đọc: 229
  • Auto update data.zip
    22 bytes · Đọc: 217
Dùng macro dưới đây để gán cho nút UpDate của bạn.

PHP:
Sub UpDate_Click()
Const nData = "Data"
Dim sData As Worksheet, rData As Range
Dim rCopy As Range, sRow As Range, eRow As Range, sCol As Range
Dim cRow As Long
    Application.ScreenUpdating = False
    Set sRow = ActiveSheet.[A1].End(xlDown)
    Set sCol = sRow.End(xlToRight) ' Cot cuoi cung co chua du lieu '
    Set sRow = sRow.Offset(1, 0)  ' Do`ng dau tien, khong tinh tieu de '
    cRow = Cells.Rows.Count ' Kiem tra tong so dong '
    Set eRow = ActiveSheet.Cells(cRow, 1).End(xlUp) ' Do`ng cuoi cu`ng chua du lieu '
    Set rCopy = Range(sRow, eRow).Resize(, sCol.Column)  ' Vu`ng du lieu se copy sang data '
 
    Set sData = Sheets(nData)
    Set rData = sData.Cells(cRow, 1).End(xlUp).Offset(1, 0)
    ' Kiem tra dam bao copy '
    If rData.Row + eRow.Row - sRow.Row + 1 > cRow Then
        GoTo 1
    End If
 
    rCopy.Copy rData
 
    Application.ScreenUpdating = True
    MsgBox "Copied to Sheet(Data)!"
    Exit Sub
 
1:
    Application.ScreenUpdating = True
    MsgBox "Over!", vbCritical, "Data too large!"
End Sub

Chạy thử để kiểm tra và thông báo lại nếu có gì cần hiệu chỉnh nhé!
 
Lần chỉnh sửa cuối:
Cám ơn bạn nhiều nhé.

File chạy rất nhanh. Click 1 cái, chớp mắt 1 cái là xong rồi. Mèo Còm sẽ edit lại 1 chút nữa để có thể áp dụng được cho file khác nữa.

Cám ơn bạn lần nữa nhé.
 
Dùng macro dưới đây để gán cho nút UpDate của bạn.

PHP:
Sub UpDate_Click()
Const nData = "Data"
Dim sData As Worksheet, rData As Range
Dim rCopy As Range, sRow As Range, eRow As Range, sCol As Range
Dim cRow As Long
    Application.ScreenUpdating = False
    Set sRow = ActiveSheet.[A1].End(xlDown)
    Set sCol = sRow.End(xlToRight) ' Cot cuoi cung co chua du lieu '
    Set sRow = sRow.Offset(1, 0)  ' Do`ng dau tien, khong tinh tieu de '
    cRow = Cells.Rows.Count ' Kiem tra tong so dong '
    Set eRow = ActiveSheet.Cells(cRow, 1).End(xlUp) ' Do`ng cuoi cu`ng chua du lieu '
    Set rCopy = Range(sRow, eRow).Resize(, sCol.Column)  ' Vu`ng du lieu se copy sang data '
 
    Set sData = Sheets(nData)
    Set rData = sData.Cells(cRow, 1).End(xlUp).Offset(1, 0)
    ' Kiem tra dam bao copy '
    If rData.Row + eRow.Row - sRow.Row + 1 > cRow Then
        GoTo 1
    End If
 
    rCopy.Copy rData
 
    Application.ScreenUpdating = True
    MsgBox "Copied to Sheet(Data)!"
    Exit Sub
 
1:
    Application.ScreenUpdating = True
    MsgBox "Over!", vbCritical, "Data too large!"
End Sub

Chạy thử để kiểm tra và thông báo lại nếu có gì cần hiệu chỉnh nhé!

macro cua ban rat hay .nhung cho minh lieu chung ta co the dung macro de tu dong cap nhat du lieu giua 2 worksheet trong mang LAN khong nhi ?
mình có 1 vấn đề mong bạn giúp đỡ:mình có 1 file excel trên 1 máy tính trong mạng LAN dùng để ghi dữ liệu hàng ngày vào ,một máy tính khác chứa 1 file chỉ cập nhật số liệu mới nhất từ bảng tính kia .ban có thể chỉ mình cách nào đó để mỗi khi mình ghi dữ liệu vào file kia thi file bên máy này sẽ tự động cập nhật dữ liệu mới nhất vào hay không
 
Auto update data qua Lan

Bằng cách copy.... paste special-Link thì nó update đè lên(tất nhiên là sau khi đã kết nối lan ,share thành công)nhưng nó không thực hiện luôn như làm trên một máy như kiểu truyền hình thực tiếp , thế mới đau, có ai giúp tôi khi may1 save thì ở máy chủ đang mở workbook mà được paste link đến hiện kết quả trực tiếp như làm trên một máy duy nhất không. Thank các anh em
 
Web KT
Back
Top Bottom