[Cần giúp đỡ] Code update data vào file excel hàng ngày

Liên hệ QC

Datcdt2k9

Thành viên hoạt động
Tham gia
27/12/19
Bài viết
109
Được thích
11
Chào mọi người
Em đang gặp vấn đề nếu làm thủ công sẽ mất nhiều thời gian
Vì vậy em đăng lên diễn đàn nhờ mọi người giúp đỡ
Khi Paste data vào cột C (bảng trên )=> chạy code => Data sẽ ra như bảng dưới và khi update data mới dữ liệu sẽ update vào dòng kế tiếp( trong ví dụ data cũ update tới hàng 23, nếu update data mới khi run code update vào dòng 24 trở đi)
Các trường hợp có thể phát sinh em đã tổng hợp trong file
Mong các anh chị giúp đỡ. Em xin cảm ơn
1607769830534.png
 

File đính kèm

  • TEST FILL DOWN_V01.xlsm
    23.4 KB · Đọc: 9
Lần chỉnh sửa cuối:
Do tôi thấy bạn có thay đổi tên sheet xuất kết quả (mà bạn không biết nên sửa cả function), nên rong code tôi thêm đoạn này:
Mã:
Set Ws = Sheets("KQ")
Nếu bạn muốn thay đổi xuất kết quả sang sheet khác thì sửa tên sheet trong dấu ngoặc kép, còn lại không thay đổi gì
Uk cái này mình đã tùy biến thay tên sheet trong từng code và tạo button khi muốn xuất kết quả sang sheet cần.Nhưng bây giờ mình muốn add thêm cột mở rộng bên sheet nhaplieu để sau này có thể thêm trường dữ liệu nào đó, trong bài mình muốn mở rộng tới cột K
 
Upvote 0
Do tôi thấy bạn có thay đổi tên sheet xuất kết quả (mà bạn không biết nên sửa cả function), nên rong code tôi thêm đoạn này:
Mã:
Set Ws = Sheets("KQ")
Nếu bạn muốn thay đổi xuất kết quả sang sheet khác thì sửa tên sheet trong dấu ngoặc kép, còn lại không thay đổi gì
Bạn kiểm tra giúp mình, code không tách được dải( ví dụ VQ1902OFA100-102) => Run code báo lỗi bạn ạ. Dải đơn ví dụ VQ2002OFA302 thì tách ok.
 
Upvote 0
Bạn kiểm tra giúp mình, code không tách được dải( ví dụ VQ1902OFA100-102) => Run code báo lỗi bạn ạ. Dải đơn ví dụ VQ2002OFA302 thì tách ok.
Dữ liệu còn kiểu nào khác nữa không? lúc đầu bạn bảo liệt kê hết kiểu rồi, tôi không thấy có kiểu đơn như vậy
sửa chỗ này:
Mã:
    SL(I) = 1 - Evaluate(Rex(sChuoi, "\d{3}-\d{3}"))
Thành:
Mã:
On Error Resume Next
    SL(I) = 1
    SL(I) = 1 - Evaluate(Rex(sChuoi, "\d{3}-\d{3}"))
On Error GoTo 0
 
Upvote 0
Dữ liệu còn kiểu nào khác nữa không? lúc đầu bạn bảo liệt kê hết kiểu rồi, tôi không thấy có kiểu đơn như vậy
sửa chỗ này:
Mã:
    SL(I) = 1 - Evaluate(Rex(sChuoi, "\d{3}-\d{3}"))
Thành:
Mã:
On Error Resume Next
    SL(I) = 1
    SL(I) = 1 - Evaluate(Rex(sChuoi, "\d{3}-\d{3}"))
On Error GoTo 0
Từ đầu bài mình đăng là có
Dữ liệu còn kiểu nào khác nữa không? lúc đầu bạn bảo liệt kê hết kiểu rồi, tôi không thấy có kiểu đơn như vậy
sửa chỗ này:
Mã:
    SL(I) = 1 - Evaluate(Rex(sChuoi, "\d{3}-\d{3}"))
Thành:
Mã:
On Error Resume Next
    SL(I) = 1
    SL(I) = 1 - Evaluate(Rex(sChuoi, "\d{3}-\d{3}"))
On Error GoTo 0
Ok mình check ok rồi bạn ạ, file lúc dầu mình gửi có mà nhỉ
 
Upvote 0
Dữ liệu còn kiểu nào khác nữa không? lúc đầu bạn bảo liệt kê hết kiểu rồi, tôi không thấy có kiểu đơn như vậy
sửa chỗ này:
Mã:
    SL(I) = 1 - Evaluate(Rex(sChuoi, "\d{3}-\d{3}"))
Thành:
Mã:
On Error Resume Next
    SL(I) = 1
    SL(I) = 1 - Evaluate(Rex(sChuoi, "\d{3}-\d{3}"))
On Error GoTo 0
mình nhờ bạn chút nhé, mình có file cần thống kê ra các giá trị NG khi sau khi filter mà hành động lần lượt, lọc giá trị NG lần lượt từng cột và copy giá trị sau khi lọc sang 1 sheet "KQ"=> mình có giải thích kĩ trong file rồi, bạn giúp mình với nhé
1608818332833.png
 

File đính kèm

  • filter NG.xlsm
    23.2 KB · Đọc: 4
Upvote 0
mình nhờ bạn chút nhé, mình có file cần thống kê ra các giá trị NG khi sau khi filter mà hành động lần lượt, lọc giá trị NG lần lượt từng cột và copy giá trị sau khi lọc sang 1 sheet "KQ"=> mình có giải thích kĩ trong file rồi, bạn giúp mình với nhé
View attachment 251776
Thử code này xem:
Mã:
Option Explicit
Sub NTKTNN()
Dim sArr(), dArr(), I&, J&, K&, N&, Txt$, U1&, U2&, ColName$
With Sheets("Data")
    sArr = .Range("R3:AH" & .Cells(.Rows.Count, "AH").End(xlUp).Row).Value
    U1 = UBound(sArr, 1): U2 = UBound(sArr, 2)
    ReDim dArr(1 To U1, 1 To U2 + 2)
    For I = 4 To U2
        For J = 1 To U1
            Txt = LCase(Trim(sArr(J, I)))
            If Txt = "ng" Then
                N = N + 1
                For K = 1 To U2
                    dArr(N, K + 1) = sArr(J, K)
                Next
                dArr(N, 1) = N
                ColName = WorksheetFunction.Substitute(.Cells(1, I + 17).Address(0, 0), 1, "")
                dArr(N, U2 + 2) = "Giá tri NG côt " & ColName
            End If
        Next
    Next
End With
With Sheets("KQ")
    .Range("A3:S10000").Clear
    .Range("A3").Resize(N, U2 + 2) = dArr
End With
End Sub
 
Upvote 0
Thử code này xem:
Mã:
Option Explicit
Sub NTKTNN()
Dim sArr(), dArr(), I&, J&, K&, N&, Txt$, U1&, U2&, ColName$
With Sheets("Data")
    sArr = .Range("R3:AH" & .Cells(.Rows.Count, "AH").End(xlUp).Row).Value
    U1 = UBound(sArr, 1): U2 = UBound(sArr, 2)
    ReDim dArr(1 To U1, 1 To U2 + 2)
    For I = 4 To U2
        For J = 1 To U1
            Txt = LCase(Trim(sArr(J, I)))
            If Txt = "ng" Then
                N = N + 1
                For K = 1 To U2
                    dArr(N, K + 1) = sArr(J, K)
                Next
                dArr(N, 1) = N
                ColName = WorksheetFunction.Substitute(.Cells(1, I + 17).Address(0, 0), 1, "")
                dArr(N, U2 + 2) = "Giá tri NG côt " & ColName
            End If
        Next
    Next
End With
With Sheets("KQ")
    .Range("A3:S10000").Clear
    .Range("A3").Resize(N, U2 + 2) = dArr
End With
End Sub
Bạn giúp mình edit code sao cho giá trị "NG" sang sheet KQ được tô màu và tối ưu 1 chút cho mình cột KQ mong muốn bên sheet KQ ( lấy tên cột NG thực tế U1,V1...AH1 bên sheet Data. U1(The tich), V1(BGA)...AH(TT2).Mình xin gửi lại file chi tiết
 

File đính kèm

  • filter NG.xlsm
    27 KB · Đọc: 9
  • 1608975532130.png
    1608975532130.png
    273.1 KB · Đọc: 11
Upvote 0
Bạn giúp mình edit code sao cho giá trị "NG" sang sheet KQ được tô màu và tối ưu 1 chút cho mình cột KQ mong muốn bên sheet KQ ( lấy tên cột NG thực tế U1,V1...AH1 bên sheet Data. U1(The tich), V1(BGA)...AH(TT2).Mình xin gửi lại file chi tiết
Chạy thử
Mã:
Sub XYZ()
  Dim sArr(), aTD(), Res()
  Dim i&, j&, c&, k&, sRow&, sCol&, tmp$

  With Sheets("Data")
    aTD = .Range("R1:AH1").Value
    sArr = .Range("R3", .Range("AH" & Rows.Count).End(xlUp)).Value
    sRow = UBound(sArr, 1): sCol = UBound(sArr, 2)
    ReDim Res(1 To sRow, 1 To sCol + 2)
  End With
  For j = 4 To sCol
    For i = 1 To sRow
      tmp = LCase(sArr(i, j))
      If tmp = "ng" Then
        k = k + 1
        Res(k, 1) = k
        For c = 1 To sCol
          Res(k, c + 1) = sArr(i, c)
          sArr(i, c) = Empty
        Next c
        Res(k, sCol + 2) = "Giá tri NG côt " & aTD(1, j) & "=> Check " & aTD(1, j)
      End If
    Next i
  Next j
  With Sheets("KQ")
    .Range("A3:S10000").Clear
    .Range("A3").Resize(k, sCol + 2) = Res
  End With
End Sub
 
Upvote 0
Chạy thử
Mã:
Sub XYZ()
  Dim sArr(), aTD(), Res()
  Dim i&, j&, c&, k&, sRow&, sCol&, tmp$

  With Sheets("Data")
    aTD = .Range("R1:AH1").Value
    sArr = .Range("R3", .Range("AH" & Rows.Count).End(xlUp)).Value
    sRow = UBound(sArr, 1): sCol = UBound(sArr, 2)
    ReDim Res(1 To sRow, 1 To sCol + 2)
  End With
  For j = 4 To sCol
    For i = 1 To sRow
      tmp = LCase(sArr(i, j))
      If tmp = "ng" Then
        k = k + 1
        Res(k, 1) = k
        For c = 1 To sCol
          Res(k, c + 1) = sArr(i, c)
          sArr(i, c) = Empty
        Next c
        Res(k, sCol + 2) = "Giá tri NG côt " & aTD(1, j) & "=> Check " & aTD(1, j)
      End If
    Next i
  Next j
  With Sheets("KQ")
    .Range("A3:S10000").Clear
    .Range("A3").Resize(k, sCol + 2) = Res
  End With
End Sub
[/QUOTE]

Chạy thử
Mã:
Sub XYZ()
  Dim sArr(), aTD(), Res()
  Dim i&, j&, c&, k&, sRow&, sCol&, tmp$

  With Sheets("Data")
    aTD = .Range("R1:AH1").Value
    sArr = .Range("R3", .Range("AH" & Rows.Count).End(xlUp)).Value
    sRow = UBound(sArr, 1): sCol = UBound(sArr, 2)
    ReDim Res(1 To sRow, 1 To sCol + 2)
  End With
  For j = 4 To sCol
    For i = 1 To sRow
      tmp = LCase(sArr(i, j))
      If tmp = "ng" Then
        k = k + 1
        Res(k, 1) = k
        For c = 1 To sCol
          Res(k, c + 1) = sArr(i, c)
          sArr(i, c) = Empty
        Next c
        Res(k, sCol + 2) = "Giá tri NG côt " & aTD(1, j) & "=> Check " & aTD(1, j)
      End If
    Next i
  Next j
  With Sheets("KQ")
    .Range("A3:S10000").Clear
    .Range("A3").Resize(k, sCol + 2) = Res
  End With
End Sub
mình đã test thử, giá trị NG bên sheet KQ vẫn chưa được tô màu giống sheet data, với mình cần sheet Data có bao nhiêu giá trị NG sẽ xuất ra cần ấy giá trị trong sheet KQ .Trong ví dụ là 15 giá trị NG, code của bạn ra 9 giá trị do có giá trị NG nằm cùng hàng, mình cần tách riêng các giá trị này, mỗi giá trị NG là 1 hàng bạn ạ
 
Upvote 0
mình đã test thử, giá trị NG bên sheet KQ vẫn chưa được tô màu giống sheet data, với mình cần sheet Data có bao nhiêu giá trị NG sẽ xuất ra cần ấy giá trị trong sheet KQ .Trong ví dụ là 15 giá trị NG, code của bạn ra 9 giá trị do có giá trị NG nằm cùng hàng, mình cần tách riêng các giá trị này, mỗi giá trị NG là 1 hàng bạn ạ
Chỉnh lại
Mã:
Option Explicit
Option Compare Text

Sub XYZ()
  Dim sArr(), aTD(), Res(), Rng As Range
  Dim i&, j&, c&, k&, sRow&, sCol&, tmp$

With Sheets("Data")
  aTD = .Range("R1:AH1").Value
  sArr = .Range("R3", .Range("AH" & Rows.Count).End(xlUp)).Value
  sRow = UBound(sArr, 1): sCol = UBound(sArr, 2)
  ReDim Res(1 To sRow, 1 To sCol + 2)
End With
 
With Sheets("KQ")
  .Range("A3:S10000").Clear
  For j = 4 To sCol
    For i = 1 To sRow
      tmp = LCase(sArr(i, j))
      If sArr(i, j) = "ng" Then
        k = k + 1
        Res(k, 1) = k
        For c = 1 To 3
          Res(k, c + 1) = sArr(i, c)
        Next c
        For c = 4 To sCol
          Res(k, c + 1) = sArr(i, c)
          If sArr(i, c) = "ng" Then
            If Rng Is Nothing Then
              Set Rng = .Cells(k + 2, c + 1)
            Else
              Set Rng = Union(Rng, .Cells(k + 2, c + 1))
              If Rng.Count = 50 Then
                Rng.Interior.ColorIndex = 40
                Set Rng = Nothing
              End If
            End If
          End If
        Next c
        Res(k, sCol + 2) = "Giá tri NG côt " & aTD(1, j) & "=> Check " & aTD(1, j)
      End If
    Next i
  Next j
  If k Then .Range("A3").Resize(k, sCol + 2) = Res
  If Not Rng Is Nothing Then Rng.Interior.ColorIndex = 40
End With
End Sub
 
Upvote 0
Chỉnh lại
Mã:
Option Explicit
Option Compare Text

Sub XYZ()
  Dim sArr(), aTD(), Res(), Rng As Range
  Dim i&, j&, c&, k&, sRow&, sCol&, tmp$

With Sheets("Data")
  aTD = .Range("R1:AH1").Value
  sArr = .Range("R3", .Range("AH" & Rows.Count).End(xlUp)).Value
  sRow = UBound(sArr, 1): sCol = UBound(sArr, 2)
  ReDim Res(1 To sRow, 1 To sCol + 2)
End With

With Sheets("KQ")
  .Range("A3:S10000").Clear
  For j = 4 To sCol
    For i = 1 To sRow
      tmp = LCase(sArr(i, j))
      If sArr(i, j) = "ng" Then
        k = k + 1
        Res(k, 1) = k
        For c = 1 To 3
          Res(k, c + 1) = sArr(i, c)
        Next c
        For c = 4 To sCol
          Res(k, c + 1) = sArr(i, c)
          If sArr(i, c) = "ng" Then
            If Rng Is Nothing Then
              Set Rng = .Cells(k + 2, c + 1)
            Else
              Set Rng = Union(Rng, .Cells(k + 2, c + 1))
              If Rng.Count = 50 Then
                Rng.Interior.ColorIndex = 40
                Set Rng = Nothing
              End If
            End If
          End If
        Next c
        Res(k, sCol + 2) = "Giá tri NG côt " & aTD(1, j) & "=> Check " & aTD(1, j)
      End If
    Next i
  Next j
  If k Then .Range("A3").Resize(k, sCol + 2) = Res
  If Not Rng Is Nothing Then Rng.Interior.ColorIndex = 40
End With
End Sub
ok mình cảm ơn bạn. mình check ok rồi => Bạn giúp mình khi run xong đồng thời excel cũng tự động nhảy sang sheet KQ để minh view luôn kết quả bạn ạ
=> bên sheet KQ data tới đâu thì all boders giúp mình tới đó, sau này mình không phải thực hiện kẻ bảng nhiều lần
Đây là dữ liệu khi chạy code xong chưa được kẻ bảng

1609065560425.png
 
Lần chỉnh sửa cuối:
Upvote 0
Lần sau có trích dẫn thì trích dẫn bài của tôi, lỡ hỏi giúp đỡ gì tôi còn có thông báo, biết để vào xem lại cho bạn. Cả 2 bài #15 và #16 bạn đầu trích dẫn câu của bạn rồi trả lời, tôi đâu có biết. Rút kinh nghiệm cho những bài sau này nhé
Sau thời gian sử dụng mình gặp vấn đề dữ liệu update hàng ngày có 1 số dòng data định dạng khác trong code bạn viết, run sẽ báo lỗi và do quá nhiều dòng nên mình không tìm được dòng nào sai để sửa
=> bạn giúp mình thêm code phát hiện lỗi dòng nào sai để mình tìm sửa được không
=> Khi run code báo lỗi sẽ trả về số thứ tự dòng đang bị lỗi để mình tìm và sửa bạn ạ.Mình cảm ơn
 
Upvote 0
Dữ liệu còn kiểu nào khác nữa không? lúc đầu bạn bảo liệt kê hết kiểu rồi, tôi không thấy có kiểu đơn như vậy
sửa chỗ này:
Mã:
    SL(I) = 1 - Evaluate(Rex(sChuoi, "\d{3}-\d{3}"))
Thành:
Mã:
On Error Resume Next
    SL(I) = 1
    SL(I) = 1 - Evaluate(Rex(sChuoi, "\d{3}-\d{3}"))
On Error GoTo 0
Chào bạn, mình đang gặp vấn đề với file dữ liệu do dữ liệu của mình có thay đổi chút so với dữ liệu trước kia mình nhờ bạn viêt code nên lên đây tìm lại bài để nhờ bạn giúp mình, dữ liệu của mình có update thêm cột Run Jig (J) và cột ECN (K) nên khi tách, code tách sai dữ liệu, bạn giúp mình tách dữ liệu như hình dưới , bên dưới=> Khi run code nhấn K4 bên sheet NhapLieu => Data sẽ update Kết quả như sheet K4.Bạn giúp mình với
1611582103795.png
1611582414880.png
 

File đính kèm

  • 1611582297077.png
    1611582297077.png
    212.4 KB · Đọc: 4
  • TEST FILL DOWN_V003_25_01.xlsm
    44.2 KB · Đọc: 7
Upvote 0
Web KT

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

Back
Top Bottom