Copy dữ liêụ vào sheets Tương ứng

Liên hệ QC

lmtuyen

Thành viên chính thức
Tham gia
14/3/09
Bài viết
71
Được thích
12
Thân Chào Các Bạn
Mình đang làm file theo dõi năng lượng tiêu thụ của các thiết bị chính trong nhà máy thủ công:
1. Các bạn ghi nhận điện năng tiêu thụ hàng ngày qua chỉ số công tơ bằng smartphone dùng App "barcode to sheet"
2. Gửi File về cho bạn nhập liệu copy số liệu các thiết bi vào từng sheet.
3. Mong muốn giờ mình, dùng code VBA để copy số liệu này vào từng sheet tương ứng chỉ bằng 1 click chuột.
Mình sưu tầm vài đoạn code và kết hợp lại thử nó chỉ copy có 1 dòng đầu tiên.

Sub findsheet()
Dim strWSName As String
Dim i As Byte, n As Integer
For i = 6 To 17
strWSName = Cells(i, 2).Value
If SheetExists(strWSName) Then
Worksheets(strWSName).Activate
n = Range("c2000").End(xlUp).Offset(1, 0).Row
Range("A" & n, "C" & n).Value = Sheets("DATA_DAILY").Range("A" & i, "C" & i).Value
End If
Next i
End Sub
'-------------------------------
Function SheetExists(strWSName As String) As Boolean
Dim ws As Worksheet
On Error Resume Next
Set ws = Worksheets(strWSName)
If Not ws Is Nothing Then SheetExists = True
End Function
 

File đính kèm

  • Capture.PNG
    Capture.PNG
    165.4 KB · Đọc: 10
  • Energy_update.xlsm
    34 KB · Đọc: 10
Code findsheet() sai.

For i = 6 To 17
strWSName = Cells(i, 2).Value
If SheetExists(strWSName) Then
Worksheets(strWSName).Activate

Khi chạy lượt đầu (i = 6) thì cái chỗ tô đậm nó lấy Value từ ActiveSheet, tức là sheet chứa cái nút bấm.
Nhưng qua lượt thứ hai (i = 7) thì AciveSheet là cái chỗ tô đỏ, tức là sheet khác rồi. Cái chỗ tô đậm lấy dữ liệu sai !!!

Sửa lại:

Sub findsheet()
Dim strWSName As String
Dim i As Long, n As Long
Dim wsA As WorkSheet, wsB As WorkSheet
Set wsA = WorkSheets("DATA_DAILY")
For i = 6 To 17
strWSName = wsA.Cells(i, 2).Value
If SheetExists(strWSName) Then
Set wsB = Worksheets(strWSName)
n = wsB.Range("c2000").End(xlUp).Offset(1, 0).Row
wsB.Range("A" & n, "C" & n).Value = wsA.Range("A" & i, "C" & i).Value
End If
Next i
End Sub
'-------------------------------
Function SheetExists(strWSName As String) As Boolean
On Error Resume Next
SheetExists = Sheets(strWSName).Index > 0
End Function

Lưu ý là code sửa lại chỉ là theo đúng yêu cầu giải thuật của bạn là chép dữ liệu vào từng sheet tương ứng.
Giả thuật đúng đắn còn phải thêm phần tránh bấm nút 2 lần copy 2 lần.
Cám ơn Bạn Hoàng Tuấn, Mình đang làm file, chắc tuần sau hoàn chỉnh, chạy thử chắc sẻ có lỗi nhiều, sẻ có nhiều cơ hội học hỏi thêm.
 
Upvote 0
Cám ơn Bạn Hoàng Tuấn, Mình đang làm file, chắc tuần sau hoàn chỉnh, chạy thử chắc sẻ có lỗi nhiều, sẻ có nhiều cơ hội học hỏi thêm.
Mình cập nhật file mới trong đó có ràng buộc nhiều điều kiện. Các bạn xem qua, góp ý để hoàn thiện code hơn.
- File này dùng để copy data từ 1 file khác, ghi nhận điện năng tiêu thụ ( dùng chương trình barcode to sheet cài vào điện thoại).
- Người vận hành file này là Team trong ca, các bạn không rành về vi tính lắm , nên mình cố gắng tinh gọn qui trình hiện tại.
( ghi nhận vào sổ, từ sổ nhập vào file, rồi chạy công thức...., phức tạp so với khả năng các bạn, mất thời gian hơn)
 

File đính kèm

  • Energy_update.xlsm
    330.4 KB · Đọc: 9
Upvote 0
Mình cập nhật file mới trong đó có ràng buộc nhiều điều kiện. Các bạn xem qua, góp ý để hoàn thiện code hơn.
- File này dùng để copy data từ 1 file khác, ghi nhận điện năng tiêu thụ ( dùng chương trình barcode to sheet cài vào điện thoại).
- Người vận hành file này là Team trong ca, các bạn không rành về vi tính lắm , nên mình cố gắng tinh gọn qui trình hiện tại.
( ghi nhận vào sổ, từ sổ nhập vào file, rồi chạy công thức...., phức tạp so với khả năng các bạn, mất thời gian hơn)
Cảm ơn bạn đã phản hồi, rất tiếc với điều kiện như trên là ngoài khả năng của mình rồi, bạn vui lòng chờ bạn khác nhé,
 
Upvote 0
Web KT

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

Back
Top Bottom