Công thức lấy vùng dữ liệu tính từ ngày được cập nhật mới nhất

Liên hệ QC

congthanh6868

Thành viên thường trực
Tham gia
30/5/09
Bài viết
322
Được thích
63
Chào các bạn,
Trong file đình kèm, mình mong muốn ở Sheet "Vung du lieu tu ngay moi nhat" có được công thức lấy vùng dữ liệu từ ngày mới nhất là ngày 21 trờ về đến ngày 15 (7 cột) từ Sheet "Du lieu duoc cap nhat hang ngay"

Tương tự, khi dữ liệu ở Sheet "Du lieu duoc cap nhat hang ngay" được cập nhật dữ liệu sang ngày 22 thì tại Sheet "Vung du lieu tu ngay moi nhat" sẽ tự động lấy dữ liệu từ ngày 22 trở về đến ngày 16.

Tương tự, nếu ngày 23 thì tự động lấy từ 23 trở về 17
....

Mong nhận được sự giúp đỡ của các bạn.
Cám ơn rất nhiều.
 

File đính kèm

Bài này nếu dùng công thức có vẻ hơi mệt đấy. Tôi làm thế này:
1. Nhấn Ctrl+F3, định nghĩa 1 name động MoiNhat như sau:
Mã:
=OFFSET(INDIRECT("'Du lieu duoc cap nhat hang ngay'!"&ADDRESS(3,MATCH(9^99,'Du lieu duoc cap nhat hang ngay'!$3:$3,1))),-2,-6,MATCH(9^99,'Du lieu duoc cap nhat hang ngay'!$A:$A,1),7)
2. Trở lại ô A1 của sheet Vung du lieu tu ngay moi nhat, nhập công thức sau và copy cho toàn bộ vùng lưu dữ liệu:
Mã:
=IF(INDEX(MoiNhat,ROW(),COLUMN())="","",INDEX(MoiNhat,ROW(),COLUMN()))
Điều kiện áp dụng: Dữ liệu trên hàng 3 và trên cột A phải được nhập dạng số, trên hàng 3 không được để trống.
---------------------------------------------------
Bạn thử dùng cách khác đơn giản hơn nhiều: Click chuột phải vào tên sheet Vung du lieu tu ngay moi nhat, chọn view code và dán đoạn code sau vào khung soạn thảo bên phải:
PHP:
Private Sub Worksheet_Activate()
    [A1:G100].Value = Sheet1.[IV3].End(xlToLeft).Offset(-2, -6).Resize(100, 7).Value
End Sub
Số 100 trong code trên bạn có thể thay bởi số khác cho phù hợp với thực tế.
 
Lần chỉnh sửa cuối:
Bạn thử dùng cách khác đơn giản hơn nhiều: Click chuột phải vào tên sheet Vung du lieu tu ngay moi nhat, chọn view code và dán đoạn code sau vào khung soạn thảo bên phải:
PHP:
Private Sub Worksheet_Activate()
    [A1:G100].Value = Sheet1.[IV3].End(xlToLeft).Offset(-2, -6).Resize(100, 7).Value
End Sub
Số 100 trong code trên bạn có thể thay bởi số khác cho phù hợp với thực tế.

Cám ơn bạn nghiaphuc. Công thức bạn giúp rất hay. Mình đã áp dụng thành công cho file với dữ liệu cũ.
Nay, mình muốn áp dụng vào dữ liệu mới đồng thời có 1 chút thay đổi, cụ thể như sau:
Trong file đính kèm, mình muốn cập nhật:
- Sheet Dem TQ tu Sheet _TQ_
- Sheet Dem HO tu Sheet _HO_
- Số lượng cột cần cập nhật là: 10 cột

Mong tiếp tục nhận được sự giúp đỡ của bạn.
Nếu được, bạn giải thích chi tiết hơn để mình có thể tự tìm hiểu và tự áp dụng cho những trường hợp khác
Cám ơn bạn nhiều.
 

File đính kèm

Lần chỉnh sửa cuối:
Cám ơn bạn nghiaphuc. Công thức bạn giúp rất hay. Mình đã áp dụng thành công cho file với dữ liệu cũ.
Nay, mình muốn áp dụng vào dữ liệu mới đồng thời có 1 chút thay đổi, cụ thể như sau:
Trong file đính kèm, mình muốn cập nhật:
- Sheet Dem TQ tu Sheet _TQ_
- Sheet Dem HO tu Sheet _HO_
- Số lượng cột cần cập nhật là: 10 cột

Mong tiếp tục nhận được sự giúp đỡ của bạn.
Nếu được, bạn giải thích chi tiết hơn để mình có thể tự tìm hiểu và tự áp dụng cho những trường hợp khác
Cám ơn bạn nhiều.

Bạn Nghiaphuc ơi, rất mong nhận được sự giúp đỡ của bạn.

Và cả Anh Chị Em trên diễn đàn nữa, ai có thể thì giúp mình với.

Cám ơn Anh Chị Em rất nhiều.
 
Bài này nếu dùng công thức có vẻ hơi mệt đấy. Tôi làm thế này:
1. Nhấn Ctrl+F3, định nghĩa 1 name động MoiNhat như sau:
Mã:
=OFFSET(INDIRECT("'Du lieu duoc cap nhat hang ngay'!"&ADDRESS(3,MATCH(9^99,'Du lieu duoc cap nhat hang ngay'!$3:$3,1))),-2,-6,MATCH(9^99,'Du lieu duoc cap nhat hang ngay'!$A:$A,1),7)
2. Trở lại ô A1 của sheet Vung du lieu tu ngay moi nhat, nhập công thức sau và copy cho toàn bộ vùng lưu dữ liệu:
Mã:
=IF(INDEX(MoiNhat,ROW(),COLUMN())="","",INDEX(MoiNhat,ROW(),COLUMN()))
Điều kiện áp dụng: Dữ liệu trên hàng 3 và trên cột A phải được nhập dạng số, trên hàng 3 không được để trống.
---------------------------------------------------
Bạn thử dùng cách khác đơn giản hơn nhiều: Click chuột phải vào tên sheet Vung du lieu tu ngay moi nhat, chọn view code và dán đoạn code sau vào khung soạn thảo bên phải:
PHP:
Private Sub Worksheet_Activate()
    [A1:G100].Value = Sheet1.[IV3].End(xlToLeft).Offset(-2, -6).Resize(100, 7).Value
End Sub
Số 100 trong code trên bạn có thể thay bởi số khác cho phù hợp với thực tế.

Cho mình hỏi, khi mình áp dụng cách 2: dán đoạn code, ở P3 và Q3 mình muốn dùng công thức (nếu P2 & G2 là ô trắng thì trả về ô trắng), tuy nhiên, khi P3 & Q3 lấy được trả về ô trắng thì tại Sheet "Vung du lieu tu ngay moi nhat" vẫn tự động cập nhật cả ngày 26 & 27 (ngày có công thức ở P3 & Q3).
Vậy, có thể khắc phục vấn đề này được không?

Ở file đính kèm mình chỉ có thể gửi file không dán code, vì nếu dán thì file nặng lên đến gần 3 Mb.
 

File đính kèm

Cho mình hỏi, khi mình áp dụng cách 2: dán đoạn code, ở P3 và Q3 mình muốn dùng công thức (nếu P2 & G2 là ô trắng thì trả về ô trắng), tuy nhiên, khi P3 & Q3 lấy được trả về ô trắng thì tại Sheet "Vung du lieu tu ngay moi nhat" vẫn tự động cập nhật cả ngày 26 & 27 (ngày có công thức ở P3 & Q3).
Vậy, có thể khắc phục vấn đề này được không?

Ở file đính kèm mình chỉ có thể gửi file không dán code, vì nếu dán thì file nặng lên đến gần 3 Mb.
Thử với code này xem:
PHP:
Public Sub GPE()
Dim Cll As Range, I As Long, N As Long
With Sheet1
    For I = 250 To 1 Step -1
        If .Cells(3, I).Value <> "" Then
            N = I
            Exit For
        End If
    Next I
        Sheet2.[A1].Resize(100, 7).Value = .Cells(1, N - 6).Resize(100, 7).Value
        Sheet2.Rows("2:2").ClearContents
End With
End Sub
 

File đính kèm

Thử với code này xem:
PHP:
Public Sub GPE()
Dim Cll As Range, I As Long, N As Long
With Sheet1
    For I = 250 To 1 Step -1
        If .Cells(3, I).Value <> "" Then
            N = I
            Exit For
        End If
    Next I
        Sheet2.[A1].Resize(100, 7).Value = .Cells(1, N - 6).Resize(100, 7).Value
        Sheet2.Rows("2:2").ClearContents
End With
End Sub

Cám ơn Bạn,

Mình tải file của bạn về thì chạy ngon lành. Tuy nhiên, khi dán đoạn code của Bạn vào file của mình không thấy chạy được (file đính kèm).
Bạn vui lòng giúp mình nguyên nhân và cách khắc phục với. Nhân tiện cho mình hỏi, trường hợp mình muốn hỏi cách làm đối với:
- Dữ liệu mới: Hàng ngày 2 và ở Cập nhật 2, kết quả cập nhật là 10 cột chứ không phải 7
- Đối với cả 2 dữ liệu: số hàng cần cập nhật lớn hơn: lên đến 50,000 thay cho 100
Ngoài ra cho mình hỏi, tại sao xem code của bản lại chỉ thấy GPE (thay cho cả đoạn code dài)
 

File đính kèm

Cám ơn Bạn,

Mình tải file của bạn về thì chạy ngon lành. Tuy nhiên, khi dán đoạn code của Bạn vào file của mình không thấy chạy được (file đính kèm).
Bạn vui lòng giúp mình nguyên nhân và cách khắc phục với. Nhân tiện cho mình hỏi, trường hợp mình muốn hỏi cách làm đối với:
- Dữ liệu mới: Hàng ngày 2 và ở Cập nhật 2, kết quả cập nhật là 10 cột chứ không phải 7
- Đối với cả 2 dữ liệu: số hàng cần cập nhật lớn hơn: lên đến 50,000 thay cho 100
Ngoài ra cho mình hỏi, tại sao xem code của bản lại chỉ thấy GPE (thay cho cả đoạn code dài)
- Các Code chính đều nằm trong Module, tuỳ theo sự kiện của sheet nào thì cho chạy code đó thôi.
- Dòng 3 của các sheet Hang ngay 1, Hang ngay 2 không được để trống và ẩn dòng theo kiểu của bạn được.
- Số liệu của bạn là gì mà mỗi cell là 1 chuỗi dài lê thê vậy? Nếu có liên quan đến số đề đóm gì đó thì mình sẽ không tiếp tục với Topic này nữa đâu nhé.
 

File đính kèm

1 file có 3 sheet cần cập nhật 7 ngày

Tất nhiên là dữ liệu của mình không liên quan đến đề đóm rồi. Tuy nhiên bạn cũng gợi ý cho mình 1 cách kiếm tiền tốt đây, khi nào rảnh mình sẽ thử xem sao.

Bạn Bate cho mình hỏi, trường hợp mình muốn áp dụng công thức cập nhật 7 ngày cho 3 sheet cần cập nhật trong 1 file thì làm như thế nào?

Cám ơn bạn nhiều.
 

File đính kèm

Tất nhiên là dữ liệu của mình không liên quan đến đề đóm rồi. Tuy nhiên bạn cũng gợi ý cho mình 1 cách kiếm tiền tốt đây, khi nào rảnh mình sẽ thử xem sao.
Bạn Bate cho mình hỏi, trường hợp mình muốn áp dụng công thức cập nhật 7 ngày cho 3 sheet cần cập nhật trong 1 file thì làm như thế nào?
Cám ơn bạn nhiều.
Do mỗi sheet lấy dữ liệu ở 1 sheet khác nhau nên phải dùng mỗi sheet một Sub riêng thôi.
Sub này là của sheet "Cap nhat 1_7 ngay":
PHP:
Private Sub Worksheet_Activate()
Dim Cll As Range, I As Long, N As Long, D As Long
With Sheets("Hang ngay 1")
    D = .[A65536].End(xlUp).Row
    For I = 250 To 1 Step -1
        If .Cells(3, I).Value <> "" Then
            N = I
            Exit For
        End If
    Next I
End With
        With Sheets("Cap nhat 1_7 ngay")
            .[A1].Resize(D, 7).Value = Sheets("Hang ngay 1").Cells(1, N - 6).Resize(D, 7).Value
            .Rows("2:2").ClearContents
        End With
End Sub
Copy Sub này vào các sheet khác rồi bạn tự sửa lại các tên Sheet có trong Sub lại cho phù hợp là được:
 
khó thật. mình đang cần cái này, search Google thì ra mà ko làm theo đc, thôi mình nhập tay luôn, hehe
 
Web KT

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

Back
Top Bottom