Lọc dữ liệu trong 3 cột (1 người xem)

  • Thread starter Thread starter adult
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

adult

Thành viên hoạt động
Tham gia
2/12/07
Bài viết
193
Được thích
30
Chào các bạn,
Mình có 1 file muốn khi chọn ngày ở ô E1 thì lệnh sẽ tìm ngày trong 3 cột E,F,G sau đó sẽ copy dữ liệu đó sang sheet mới hoặc bằng chính sheet đó cũng được.
Các bạn có thể xem file ví dụ để hiểu rõ hơn. Xin lỗi vì có thể mình diễn đạt không được tốt.
Công ty chặn upload file nên mình up lên google drive nhé https://drive.google.com/file/d/0BySAiYHOcNkLdDZzU3hBd2xjc2s/view?usp=sharing
Cảm ơn trước vì các bạn hỗ trợ
 
Chào các bạn,
Mình có 1 file muốn khi chọn ngày ở ô E1 thì lệnh sẽ tìm ngày trong 3 cột E,F,G sau đó sẽ copy dữ liệu đó sang sheet mới hoặc bằng chính sheet đó cũng được.
Các bạn có thể xem file ví dụ để hiểu rõ hơn. Xin lỗi vì có thể mình diễn đạt không được tốt.
Công ty chặn upload file nên mình up lên google drive nhé https://drive.google.com/file/d/0BySAiYHOcNkLdDZzU3hBd2xjc2s/view?usp=sharing
Cảm ơn trước vì các bạn hỗ trợ

bài này bạn ko cần phải lập trình mà sử dụng chức năng có sẵn của Excel:
- chọn vùng cần lọc
- menu Data - chọn Filter
- lọc các cột cần tìm (hoặc lọc kết hợp nhiều điều kiện)
 
Upvote 0
bài này bạn ko cần phải lập trình mà sử dụng chức năng có sẵn của Excel:
- chọn vùng cần lọc
- menu Data - chọn Filter
- lọc các cột cần tìm (hoặc lọc kết hợp nhiều điều kiện)

Bạn có thể hướng dẫn cách bạn nói không? Nếu lọc bình thường thì chỉ lọc từng cột chứ không thể lọc 1 lúc 3 cột được.
vì mình ví dụ chỉ 2 trường hợp nên chắc bạn chưa thấy cái vướng mắc.
 
Upvote 0
Chào các bạn,
Mình có 1 file muốn khi chọn ngày ở ô E1 thì lệnh sẽ tìm ngày trong 3 cột E,F,G sau đó sẽ copy dữ liệu đó sang sheet mới hoặc bằng chính sheet đó cũng được.
Các bạn có thể xem file ví dụ để hiểu rõ hơn. Xin lỗi vì có thể mình diễn đạt không được tốt.
Công ty chặn upload file nên mình up lên google drive nhé https://drive.google.com/file/d/0BySAiYHOcNkLdDZzU3hBd2xjc2s/view?usp=sharing
Cảm ơn trước vì các bạn hỗ trợ
Mình đang học viết code nên làm thử đúng không nha
 
Upvote 0
Upvote 0
Bạn đã làm đúng ý mình rồi và File bạn làm lệnh thực thi rất nhanh nhưng nó đã phát sinh lỗi khi mình đổ thử dữ liệu nhiều vô, bạn kiểm tra lại giúp mình xem lỗi này như thế nào nhé.
https://drive.google.com/file/d/0BySAiYHOcNkLVnpwcHdCSFg0Vjg/view?usp=sharing
cảm ơn bạn nhiều
PHP:
Sub Ngay()
Dim Sarr(), Darr(), i As Long, k As Long, TMP
With Sheet1
    TMP = .[E1]
    Sarr = .Range(.[A6], .[A65000].End(xlUp)).Resize(, 7).Value2
End With
ReDim Darr(1 To UBound(Sarr, 1), 1 To 7)
With Sheet2
For i = 1 To UBound(Sarr, 1)
    If Sarr(i, 5) <> "" Or Sarr(i, 6) <> "" Or Sarr(i, 7) <> "" Then
            If Sarr(i, 5) = TMP Or Sarr(i, 6) = TMP Or Sarr(i, 7) = TMP Then
                    k = k + 1
                    Darr(k, 1) = k
                    Darr(k, 2) = Sarr(i, 2)
                    Darr(k, 3) = Sarr(i, 3)
                    Darr(k, 4) = Sarr(i, 4)
                    Darr(k, 5) = Sarr(i, 5)
                    Darr(k, 6) = Sarr(i, 6)
                    Darr(k, 7) = Sarr(i, 7)
            End If
    End If
Next i
    .[A6:G50000].ClearContents
    .[A6].Resize(k, 7).Value = Darr
           
End With
End Sub
Bạn thử lại xem sao
 
Upvote 0
cho mình ý kiến ké 1 tí --=0, lệnh with sheet2 ... end with đặt như vậy là ko cần thiết, có lẽ phải như vậy:

Mã:
With sheet2
    .[A6:G50000].ClearContents
    .[A6].Resize(k, 7).Value = Darr
End With
Diễn đàn mà, có gì bạn cứ góp ý thẳng thắn , sai thì sửa thôi. thực ra mình nghĩ nó là cách viết thôi
 
Upvote 0
Bạn đã làm đúng ý mình rồi và File bạn làm lệnh thực thi rất nhanh nhưng nó đã phát sinh lỗi khi mình đổ thử dữ liệu nhiều vô, bạn kiểm tra lại giúp mình xem lỗi này như thế nào nhé.
https://drive.google.com/file/d/0BySAiYHOcNkLVnpwcHdCSFg0Vjg/view?usp=sharing
cảm ơn bạn nhiều
Theo code của lhthai

Cột "A" của sheet1 phải điền đầy đủ số thứ tự
Bổ sung thêm lệnh kiểm tra biến "K<>0"

Mã:
Public Sub Ngay()
Dim I, K, Arr(), Darr(), D

With Sheet1
D = .Cells(1, 5).Value
Arr = .Range(.[A6], .[A6].End(xlDown)).Resize(, 7).Value2
End With
ReDim Darr(1 To UBound(Arr, 1), 1 To 7)

For I = 1 To UBound(Arr, 1)
If Arr(I, 5) = D Or Arr(I, 6) = D Or Arr(I, 7) = D Then
K = K + 1
Darr(K, 1) = K
Darr(K, 2) = Arr(I, 2)
Darr(K, 3) = Arr(I, 3)
Darr(K, 4) = Arr(I, 4)
Darr(K, 5) = Arr(I, 5)
Darr(K, 6) = Arr(I, 6)
Darr(K, 7) = Arr(I, 7)
End If
Next

If K <> 0 Then
With Sheet2
.Range("A6:G5000").ClearContents
.Range("A6").Resize(K, 7).Value = Darr
End With
Else
MsgBox "Ngay Nay Khong Ton Tai"
End If

End Sub
 
Upvote 0
Cảm ơn các bạn đã giúp nhiều. Mình có 2 thắc mắc là
1. Trong code ở trên phần nào là đánh số thứ tự tự động vậy?
2. Với code như thế này tương ứng với 7 cột
Mã:
 Darr(K, 1) = KDarr(K, 2) = Arr(I, 2)
Darr(K, 3) = Arr(I, 3)
Darr(K, 4) = Arr(I, 4)
Darr(K, 5) = Arr(I, 5)
Darr(K, 6) = Arr(I, 6)
Darr(K, 7) = Arr(I, 7)
nếu có 30 môn thì phải làm đến 30 Darr(K,30)=Arr(I,30) luôn phải không? Có cách nào ngắn gọn hơn không các bạn?
Nếu khó quá thì thôi không sao, chỉ là hỏi thêm thôi.
 
Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn các bạn đã giúp nhiều. Mình có 2 thắc mắc là
1. Trong code ở trên phần nào là đánh số thứ tự tự động vậy?
2. Với code như thế này tương ứng với 7 cột
Mã:
 Darr(K, 1) = KDarr(K, 2) = Arr(I, 2)
Darr(K, 3) = Arr(I, 3)
Darr(K, 4) = Arr(I, 4)
Darr(K, 5) = Arr(I, 5)
Darr(K, 6) = Arr(I, 6)
Darr(K, 7) = Arr(I, 7)
nếu có 30 môn thì phải làm đến 30 Darr(K,30)=Arr(I,30) luôn phải không? Có cách nào ngắn gọn hơn không các bạn?
Nếu khó quá thì thôi không sao, chỉ là hỏi thêm thôi.

Thêm biến c vào dòng này
Mã:
Dim I, K, Arr(), Darr(), D, c As Long

Thay thế đoạn này
Mã:
Darr(K, 2) = Arr(I, 2)
Darr(K, 3) = Arr(I, 3)
Darr(K, 4) = Arr(I, 4)
Darr(K, 5) = Arr(I, 5)
Darr(K, 6) = Arr(I, 6)
Darr(K, 7) = Arr(I, 7)

bằng đoạn này--->nhiều cột hơn vẫn chạy tốt
Mã:
For c = 2 To UBound(Arr, 2)
Darr(K, c) = Arr(I, c)
Next c
---
Lưu ý là giữ nguyên cái này ( Đây là đánh số thứ tự tại cột 1 )
Mã:
Darr(K, 1) = K
 
Upvote 0
Thêm biến c vào dòng này
Mã:
Dim I, K, Arr(), Darr(), D, c As Long

Thay thế đoạn này
Mã:
Darr(K, 2) = Arr(I, 2)
Darr(K, 3) = Arr(I, 3)
Darr(K, 4) = Arr(I, 4)
Darr(K, 5) = Arr(I, 5)
Darr(K, 6) = Arr(I, 6)
Darr(K, 7) = Arr(I, 7)

bằng đoạn này--->nhiều cột hơn vẫn chạy tốt
Mã:
For c = 2 To UBound(Arr, 2)
Darr(K, c) = Arr(I, c)
Next c
---
Lưu ý là giữ nguyên cái này ( Đây là đánh số thứ tự tại cột 1 )
Mã:
Darr(K, 1) = K
Cảm ơn bạn,
Cho mình hỏi đoạn code bên dưới của bạn nó sẽ hiểu có bao nhiêu cột nó lấy bấy nhiêu hay sao?
Mã:
For c = 2 To UBound(Arr, 2)Darr(K, c) = Arr(I, c)
Next c
 
Upvote 0
Cảm ơn bạn,
Cho mình hỏi đoạn code bên dưới của bạn nó sẽ hiểu có bao nhiêu cột nó lấy bấy nhiêu hay sao?
Mã:
For c = 2 To UBound(Arr, 2)Darr(K, c) = Arr(I, c)
Next c

Đúng vậy, mảng Arr() có bao nhiêu cột sẽ được lấy tất nhưng khi nạp dữ liệu cho mảng phải đầy đủ.
Câu lệnh này
Mã:
Arr = .Range(.[A6], .[A6].End(xlDown)).Resize(, 7).Value2

và câu lệnh này
.Range("A6").Resize(K, 7).Value = Darr

Nếu 30 cột thì Resize(, 30) tùy vùng cần tính
 
Upvote 0
Đúng vậy, mảng Arr() có bao nhiêu cột sẽ được lấy tất nhưng khi nạp dữ liệu cho mảng phải đầy đủ.
Câu lệnh này
Mã:
Arr = .Range(.[A6], .[A6].End(xlDown)).Resize(, 7).Value2

và câu lệnh này
.Range("A6").Resize(K, 7).Value = Darr

Nếu 30 cột thì Resize(, 30) tùy vùng cần tính
Cảm ơn bạn. Kiến thức của các bạn rất tốt, càng đi sâu càng thấy mình quá gà mờ. Bạn có thể giải thích giúp mình cái Value2 và Ubound ý nghĩa là gì được không?
 
Upvote 0
Các bạn cho mình hỏi thêm mình muốn lọc ra theo điều kiện "từ ngày" - "đến ngày" trong 3 cột thì phải edit lại code như thế nào? Một lần nữa cảm ơn các bạn nhé
 
Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn bạn. Kiến thức của các bạn rất tốt, càng đi sâu càng thấy mình quá gà mờ. Bạn có thể giải thích giúp mình cái Value2 và Ubound ý nghĩa là gì được không?
Chỉ biết tàm tạm thế này
- Value2 tương tự như Value nhưng nghe nói là tốc độ nhanh hơn
- Ubound là cận dưới của mảng, Lbound là cận trên

-----
Các bạn cho mình hỏi thêm mình muốn lọc ra theo điều kiện "từ ngày" - "đến ngày" trong 3 cột thì phải edit lại code như thế nào? Một lần nữa cảm ơn các bạn nhé
Thêm và sửa mấy dòng điều kiện
Mã:
Public Sub Ngay()
Dim I, K, Arr(), Darr(), Dt, Ds, c As Long

With Sheet1
Dt = .Cells(1, 5).Value: Ds = .Cells(1, 6).Value
Arr = .Range(.[A6], .[A6].End(xlDown)).Resize(, 7).Value2
End With
ReDim Darr(1 To UBound(Arr, 1), 1 To 7)

For I = 1 To UBound(Arr, 1)
If Arr(I, 5) >= Dt Or Arr(I, 6) >= Dt Or Arr(I, 7) >= Dt Then
If Arr(I, 5) <= Ds Or Arr(I, 6) <= Ds Or Arr(I, 7) <= Ds Then
K = K + 1
Darr(K, 1) = K
For c = 2 To UBound(Arr, 2)
Darr(K, c) = Arr(I, c)
Next c
End If
End If
Next

If K <> 0 Then
With Sheet2
.Range("A6:G5000").ClearContents
.Range("A6").Resize(K, 7).Value = Darr
.Range("E6").Resize(K, 3).NumberFormat = "dd/mm/yyyy"
End With
Else
MsgBox "Ngay Nay Khong Ton Tai"
End If

End Sub
 

File đính kèm

Upvote 0
Chỉ biết tàm tạm thế này
- Value2 tương tự như Value nhưng nghe nói là tốc độ nhanh hơn
- Ubound là cận dưới của mảng, Lbound là cận trên
Đoạn này chắc viết nhanh nên hơi lộn tý anh nhỉ
Value2 khi áp vào mảng dữ liệu lớn tốc độ nhanh hơn value anh ah
 
Upvote 0
Chỉ biết tàm tạm thế này
- Value2 tương tự như Value nhưng nghe nói là tốc độ nhanh hơn
- Ubound là cận dưới của mảng, Lbound là cận trên
Đoạn này chắc viết nhanh nên hơi lộn tý anh nhỉ
Value2 khi áp vào mảng dữ liệu lớn tốc độ nhanh hơn value anh ah

Thì đúng là nói Value2 nhanh hơn Value kia mà
Chỗ đậm đậm ấy là nói về Value2 đấy chứ**~**
 
Upvote 0
Thử code này sẽ ra
Mã:
Sub TN()
Dim Arr(5 To 100, 10 To 100)
[a1] = LBound(Arr)
[b1] = UBound(Arr)
[c1] = LBound(Arr, 2)
[d1] = UBound(Arr, 2)
End Sub
Khi anh viết bài này thì em hiểu là hai anh em mình có cách sử dụng từ ngữ khác nhau thôi. Nhưng thường em thấy hay ghi ubound là trên hơn,
Ví dụ như link này chẳng hạn
http://www.giaiphapexcel.com/forum/showthread.php?22361-Lbound-và-UBound-là-gì
 
Lần chỉnh sửa cuối:
Upvote 0
Khi anh viết bài này thì em hiểu là hai anh em mình có cách sử dụng từ ngữ khác nhau thôi. Nhưng thường em thấy hay ghi ubound là trên hơn,

Có lẽ vậy, khi viết thường chỉ coi nếu step=1 là thuận, =-1 là nghịch cho dễ suy nghĩ, nên cũng không câu nệ lắm.
 
Upvote 0
Chỉ biết tàm tạm thế này
- Value2 tương tự như Value nhưng nghe nói là tốc độ nhanh hơn
- Ubound là cận dưới của mảng, Lbound là cận trên
Đoạn này chắc viết nhanh nên hơi lộn tý anh nhỉ
Value2 khi áp vào mảng dữ liệu lớn tốc độ nhanh hơn value anh ah
- Value khi chuyển vào array sẽ giữ nguyên định dạng của dữ liệu còn value2 sẽ tự động chuyển dữ liệu về dạng general.
Ví dụ: ô kiểu date chứa 1/1/2015 khi dùng value sẽ giữ nguyên như vậy (trong VBA dùng Isdate() sẽ ra TRUE) còn value2 sẽ thành 42005 (ISDATE()=FALSE), đây có thể là điểm lợi của Value; ô kiểu Currency khi dùng value sẽ tự động cắt bớt phần thập phân chỉ giữ lại 4 chữ số thập phân sau dấu phẩy (Ví dụ 1.123456789 định dạng Currency thì value sẽ được 1.1235, value2 giữ nguyên), đây là lợi thế của value2.
Tốc độ thì value2 nhanh hơn value.
- Ubound là cận trên (Upper), Lbound là cận dưới (Lower)
 
Upvote 0
- Value khi chuyển vào array sẽ giữ nguyên định dạng của dữ liệu còn value2 sẽ tự động chuyển dữ liệu về dạng general.
Ví dụ: ô kiểu date chứa 1/1/2015 khi dùng value sẽ giữ nguyên như vậy (trong VBA dùng Isdate() sẽ ra TRUE) còn value2 sẽ thành 42005 (ISDATE()=FALSE), đây có thể là điểm lợi của Value; ô kiểu Currency khi dùng value sẽ tự động cắt bớt phần thập phân chỉ giữ lại 4 chữ số thập phân sau dấu phẩy (Ví dụ 1.123456789 định dạng Currency thì value sẽ được 1.1235, value2 giữ nguyên), đây là lợi thế của value2.
Tốc độ thì value2 nhanh hơn value.
- Ubound là cận trên (Upper), Lbound là cận dưới (Lower)
Phải nói là anh rất "chắc" về VBA. Tôi thì thường dùng value.
 
Upvote 0
Chỉ biết tàm tạm thế này
- Value2 tương tự như Value nhưng nghe nói là tốc độ nhanh hơn
- Ubound là cận dưới của mảng, Lbound là cận trên

-----

Thêm và sửa mấy dòng điều kiện
Mã:
Public Sub Ngay()
Dim I, K, Arr(), Darr(), Dt, Ds, c As Long

With Sheet1
Dt = .Cells(1, 5).Value: Ds = .Cells(1, 6).Value
Arr = .Range(.[A6], .[A6].End(xlDown)).Resize(, 7).Value2
End With
ReDim Darr(1 To UBound(Arr, 1), 1 To 7)

For I = 1 To UBound(Arr, 1)
If Arr(I, 5) >= Dt Or Arr(I, 6) >= Dt Or Arr(I, 7) >= Dt Then
If Arr(I, 5) <= Ds Or Arr(I, 6) <= Ds Or Arr(I, 7) <= Ds Then
K = K + 1
Darr(K, 1) = K
For c = 2 To UBound(Arr, 2)
Darr(K, c) = Arr(I, c)
Next c
End If
End If
Next

If K <> 0 Then
With Sheet2
.Range("A6:G5000").ClearContents
.Range("A6").Resize(K, 7).Value = Darr
.Range("E6").Resize(K, 3).NumberFormat = "dd/mm/yyyy"
End With
Else
MsgBox "Ngay Nay Khong Ton Tai"
End If

End Sub
Bạn ơi, sao mình gõ ngày nó cứ báo ngày không tồn tại trong khi ngày đó có trong dữ liệu.
Lỗi do mình chưa đánh hết số thứ tự, nhưng khi mình đánh đầy đủ rồi chọn ngày 12/03/2015 ở ô E1 và ngày 16/03/2015 ở ô E2 thì dữ liệu nó ra 02/10/2014 chứ không nằm trong khu ngày mình chọn. Bạn xem và sửa lại giúp mình với nhé. Cảm ơn
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn ơi, sao mình gõ ngày nó cứ báo ngày không tồn tại trong khi ngày đó có trong dữ liệu.
Lỗi do mình chưa đánh hết số thứ tự, nhưng khi mình đánh đầy đủ rồi chọn ngày 12/03/2015 ở ô E1 và ngày 16/03/2015 ở ô E2 thì dữ liệu nó ra 02/10/2014 chứ không nằm trong khu ngày mình chọn. Bạn xem và sửa lại giúp mình với nhé. Cảm ơn

Xem thử file này coi sao
 

File đính kèm

Upvote 0
Bạn ơi, sao mình gõ ngày nó cứ báo ngày không tồn tại trong khi ngày đó có trong dữ liệu.
Lỗi do mình chưa đánh hết số thứ tự, nhưng khi mình đánh đầy đủ rồi chọn ngày 12/03/2015 ở ô E1 và ngày 16/03/2015 ở ô E2 thì dữ liệu nó ra 02/10/2014 chứ không nằm trong khu ngày mình chọn. Bạn xem và sửa lại giúp mình với nhé. Cảm ơn

Thêm một vòng lặp cho lành
code trong module
Mã:
Public Sub Ngay()
Dim I, K, Arr(), Darr(), Dt, Ds, c As Long, cl As Long

With Sheet1
Dt = CDate(.Cells(1, 5).Value): Ds = CDate(.Cells(1, 6).Value)
Arr = .Range(.[A6], .[A6].End(xlDown)).Resize(, 7).Value2
End With
ReDim Darr(1 To UBound(Arr, 1), 1 To 7)

For cl = 5 To 7
For I = 1 To UBound(Arr, 1)
If Arr(I, cl) >= Dt And Arr(I, cl) <= Ds And Arr(I, cl) <> "x" And Arr(I, cl) <> "" Then
K = K + 1
Darr(K, 1) = K
For c = 2 To UBound(Arr, 2)
Darr(K, c) = Arr(I, c)
Next c
End If
Next
Next

If K <> 0 Then
With Sheet2
.Range("A6:G5000").ClearContents
.Range("A6").Resize(K, 7).Value = Darr
.Range("E6").Resize(K, 3).NumberFormat = "dd/mm/yyyy"
End With
Else
MsgBox "Ngay Nay Khong Ton Tai"
End If

End Sub
code trong sheet
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$E$1" Or Target.Address = "$F$1" Then Ngay
End Sub

Thứ tự nhập ngày tháng trong [E1] và [F1] phải phù hợp với dữ liệu của các cột "ngày..."
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn bạn đã hỗ trợ, file chạy cũng rất ổn, cho mình hỏi trong code của bạn mình xem qua thì không thấy chỗ nào nói đến tìm ở cột 5,6,7 mà sao nó vẫn hiểu. Bạn có thể chia sẻ thêm được không, để mình có thể áp dụng trong trường hợp khác luôn?
 
Upvote 0
Thêm một vòng lặp cho lành
code trong module
Mã:
Public Sub Ngay()
Dim I, K, Arr(), Darr(), Dt, Ds, c As Long, cl As Long

With Sheet1
Dt = CDate(.Cells(1, 5).Value): Ds = CDate(.Cells(1, 6).Value)
Arr = .Range(.[A6], .[A6].End(xlDown)).Resize(, 7).Value2
End With
ReDim Darr(1 To UBound(Arr, 1), 1 To 7)

For cl = 5 To 7
For I = 1 To UBound(Arr, 1)
If Arr(I, cl) >= Dt And Arr(I, cl) <= Ds And Arr(I, cl) <> "x" And Arr(I, cl) <> "" Then
K = K + 1
Darr(K, 1) = K
For c = 2 To UBound(Arr, 2)
Darr(K, c) = Arr(I, c)
Next c
End If
Next
Next

If K <> 0 Then
With Sheet2
.Range("A6:G5000").ClearContents
.Range("A6").Resize(K, 7).Value = Darr
.Range("E6").Resize(K, 3).NumberFormat = "dd/mm/yyyy"
End With
Else
MsgBox "Ngay Nay Khong Ton Tai"
End If

End Sub
code trong sheet
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$E$1" Or Target.Address = "$F$1" Then Ngay
End Sub

Thứ tự nhập ngày tháng trong [E1] và [F1] phải phù hợp với dữ liệu của các cột "ngày..."
Bạn ơi, mình xem trong file của bạn làm có thêm 3 cột phụ I,J,K, nếu xóa đi có hoạt động không? Và khi mình nhập ngày 01/10/2014 vô ô E1 thì code báo lỗi.
Bạn xem và kiểm tra lại giúp mình nhé.

Thấy các bạn hỗ trợ mình nhiệt tình nhưng mình lại phản hồi hơi trễ mong các bạn thông cảm vì tính chất công việc mình phải chạy tới lui ra ngoài liên tục.
 
Upvote 0
Mình ngâm được sơ sơ cái code của bạn và hiểu được ngày mà bạn đem so sánh là chỉ tính từ cột thứ 5 trở về sau. Và cũng đã áp dụng được trong file khác rồi. Nhưng mình thấy code của bạn bị chậm nhiều so với code của các bạn ở trên làm. Không biết có cách nào để tăng tốc nó hơn không?
Cảm ơn các bạn nhiều
 
Upvote 0
Mình ngâm được sơ sơ cái code của bạn và hiểu được ngày mà bạn đem so sánh là chỉ tính từ cột thứ 5 trở về sau. Và cũng đã áp dụng được trong file khác rồi. Nhưng mình thấy code của bạn bị chậm nhiều so với code của các bạn ở trên làm. Không biết có cách nào để tăng tốc nó hơn không?
Cảm ơn các bạn nhiều

Khoái cái nào thì xài cái đó, mỗi người có cách viết riêng mà. Cũng như 1 bài toán có nhiều cách giải, vậy thôi.
 
Upvote 0
Khoái cái nào thì xài cái đó, mỗi người có cách viết riêng mà. Cũng như 1 bài toán có nhiều cách giải, vậy thôi.
Code của bạn có 1 cái hạn chế là, nếu sau cột 5,6,7 mà có dữ liệu thêm rồi đến cột 9 là ngày nữa thì code không tìm được cột 9. Còn code của bạn kia mình áp dụng vô file toàn báo lỗi nên không dùng được, hơi tiếc.
 
Upvote 0
Code của bạn có 1 cái hạn chế là, nếu sau cột 5,6,7 mà có dữ liệu thêm rồi đến cột 9 là ngày nữa thì code không tìm được cột 9. Còn code của bạn kia mình áp dụng vô file toàn báo lỗi nên không dùng được, hơi tiếc.

Nói chung là dữ liệu thế nào, yêu cầu thế nào, thì viết code như thế đó, những cái nếu "trong tương lai" thì không ai viết code dự trù được các tình huống này.
..............Chạy bỏ luôn dép còn sướng hơn. adult.
 
Lần chỉnh sửa cuối:
Upvote 0
Nói chung là dữ liệu thế nào, yêu cầu thế nào, thì viết code như thế đó, những cái nếu "trong tương lai" thì không ai viết code dự trù được các tình huống này.
..............Chạy bỏ luôn dép còn sướng hơn. adult.
Hì, mình chỉ nhận xét thêm thôi chứ các bạn đã giúp mình đúng ý là được rồi. Cảm ơn các bạn lần nữa nhé
 
Upvote 0

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

Back
Top Bottom