Lọc lấy ngày cuối tháng trong năm (1 người xem)

Liên hệ QC

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

binhlt001

Thành viên mới
Tham gia
9/2/15
Bài viết
18
Được thích
1
Mình có 2 ô gồm ô ngày và ô giá của nhiều năm của công ty Vinamilk. Mình muốn láy ngày cuối tháng của tất cả các tháng qua các năm làm chuẩn kèm theo giá. Bạn nào biết cách, Xin chỉ mình với ! Có file đính kèm. Mình xin cám ơn
 

File đính kèm

Mình có 2 ô gồm ô ngày và ô giá của nhiều năm của công ty Vinamilk. Mình muốn láy ngày cuối tháng của tất cả các tháng qua các năm làm chuẩn kèm theo giá. Bạn nào biết cách, Xin chỉ mình với ! Có file đính kèm. Mình xin cám ơn
Nếu dùng VBA thì chạy thử sub này
kết quả dán vào cột H

Mã:
Public Sub Loc_Ngay_Thang()
Dim DL, Tam, kq(), r As Long, i

DL = Sheet1.Range("C1").CurrentRegion
ReDim kq(1 To UBound(DL), 1 To 2)
kq(1, 1) = DL(1, 1): kq(1, 2) = DL(1, 2)
kq(2, 1) = DL(2, 1): kq(2, 2) = DL(2, 2)
i = 2

Tam = Left(DL(2, 1), 6)
For r = 3 To UBound(DL)
If Left(DL(r, 1), 6) <> Tam Then
i = i + 1
kq(i, 1) = DL(r, 1): kq(i, 2) = DL(r, 2)
Tam = Left(DL(r, 1), 6)
End If
Next r

Sheet1.Range("H1").Resize(i, 2).Value = kq
End Sub
 
Mình có 2 ô gồm ô ngày và ô giá của nhiều năm của công ty Vinamilk. Mình muốn láy ngày cuối tháng của tất cả các tháng qua các năm làm chuẩn kèm theo giá. Bạn nào biết cách, Xin chỉ mình với ! Có file đính kèm. Mình xin cám ơn

Dùng Hàm thì làm cách củ chuối này nhé
1. Lấy ngày cuối tháng
=EOMONTH(RIGHT(MID(A2,5,8),2)&"/"&MID(MID(A2,5,8),5,2)&"/"&LEFT(MID(A2,5,8),4),0)
2. Lấy đơn giá
=LEFT(SUBSTITUTE(MID(SUBSTITUTE(A2,",","#",4),FIND("#",SUBSTITUTE(A2,",","#",4),1)+1,10),",",REPT(" ",100)),10)
 
Nếu dùng VBA thì chạy thử sub này
kết quả dán vào cột H

Mã:
Public Sub Loc_Ngay_Thang()
Dim DL, Tam, kq(), r As Long, i

DL = Sheet1.Range("C1").CurrentRegion
ReDim kq(1 To UBound(DL), 1 To 2)
kq(1, 1) = DL(1, 1): kq(1, 2) = DL(1, 2)
kq(2, 1) = DL(2, 1): kq(2, 2) = DL(2, 2)
i = 2

Tam = Left(DL(2, 1), 6)
For r = 3 To UBound(DL)
If Left(DL(r, 1), 6) <> Tam Then
i = i + 1
kq(i, 1) = DL(r, 1): kq(i, 2) = DL(r, 2)
Tam = Left(DL(r, 1), 6)
End If
Next r

Sheet1.Range("H1").Resize(i, 2).Value = kq
End Sub
Anh ui, hình như code ko chạy
 
Bạn xóa các cột trước cột 'Date', để sao cho cột 'Date' này về tới cột 'C' là được.
Dạ, cái này em hiểu.
PHP:
DL = Sheet1.Range("C1").CurrentRegion
Đoạn này em thấy C lúc đầu ko có dữ liệu thì ko dùng CurrentRegion được. Có thể file test anh Hùng chuyển vùng này sang C. Nhưng em ko thấy ai phản hồi code nên hỏi lại anh Hùng thôi ah.
 
Các anh em chỉ cách nhưng mình vẫn không thể làm được như hướng dẫn vì mình không biết lập trình. Có thể cho mình cái file excel đó để mình làm công ty Vinamilk và các công ty khác. Đặc biệt dựa vào đó, mình áp dụng cho các năm tiếp theo trong tương lai. Thanks các mem nhiều
 
Các anh em chỉ cách nhưng mình vẫn không thể làm được như hướng dẫn vì mình không biết lập trình. Có thể cho mình cái file excel đó để mình làm công ty Vinamilk và các công ty khác. Đặc biệt dựa vào đó, mình áp dụng cho các năm tiếp theo trong tương lai. Thanks các mem nhiều
Có mấy cột thừa nên xóa--->khác file đầu bài.
sorry. Gửi bạn file đính kèm cho tiện kiểm tra.


Đoạn này em thấy C lúc đầu ko có dữ liệu thì ko dùng CurrentRegion được. Có thể file test anh Hùng chuyển vùng này sang C. Nhưng em ko thấy ai phản hồi code nên hỏi lại anh Hùng thôi ah.
Cám ơn comet_1701 và HYen17
 

File đính kèm

Lần chỉnh sửa cuối:
Mình đã lấy file ra chọn ngày cuối tháng trong năm theo cách các bạn hướng dẫn nhưng vẫn không thể làm được. Bạn nào có thời gian, xin làm giúp file của mình với. Mình xin gởi file bên dưới.
 

File đính kèm

Mình đã lấy file ra chọn ngày cuối tháng trong năm theo cách các bạn hướng dẫn nhưng vẫn không thể làm được. Bạn nào có thời gian, xin làm giúp file của mình với. Mình xin gởi file bên dưới.
File bạn gửi không có thấy dữ liệu gì hết 1 file trắng với cái tên sheet "Thongke_01.01.2006_30.03.2015 -"
 
Mình có 2 ô gồm ô ngày và ô giá của nhiều năm của công ty Vinamilk. Mình muốn láy ngày cuối tháng của tất cả các tháng qua các năm làm chuẩn kèm theo giá. Bạn nào biết cách, Xin chỉ mình với ! Có file đính kèm. Mình xin cám ơn

Bài này liệu có thể làm = ADO?
 
đúng rồi bạn nhưng mình làm cái file thongke _01.01.2006... sau thì không biết làm sao
 
Mình sẽ chứng minh kết quả của Hai Lúa là sai, như sau:

Vậy kết quả có phải như file đính kèm mình làm ra là 111 dòng?

Ngày lớn nhất trong cột là 3/6/2015
Ngày nhỏ nhất là 12/02/2005
Vị chi số tháng sẽ là (3/6/2015 - 12/2/2005)/30.25 = 111.8 tháng;

Khoan vội thích thú với kết quả này 2 lúa à!

Vì trong này có những năm như 2014, 2013, 2011, 2010 không có tháng 10 & tháng 11 trong danh sách thay đổi giá 1 cách hoàn toàn!

(Kết luận của mình là bớt đi 7 hay 8 tháng gì đó!)
 
Chết. Các anh em, mình đang kẹt cái file cuối (Thongke_01.01.2006_30.03.2015 - Copy.rar ) mình gởi sau này nè vì số liệu đầy đủ hơn mà các anh em cứ lấy cái file thứ nhất ra dọc nó hoài là sao nhỉ. Tội nó lắm. Hihihihihi
 
Ngày lớn nhất trong cột là 3/6/2015
Ngày nhỏ nhất là 12/02/2005
Vị chi số tháng sẽ là (3/6/2015 - 12/2/2005)/30.25 = 111.8 tháng;

Khoan vội thích thú với kết quả này 2 lúa à!

Vì trong này có những năm như 2014, 2013, 2011, 2010 không có tháng 10 & tháng 11 trong danh sách thay đổi giá 1 cách hoàn toàn!

(Kết luận của mình là bớt đi 7 hay 8 tháng gì đó!)

Em tải dữ liệu bài 1 có số ngày nhỏ nhất là 19/01/2006 và ngày lớn nhất là 06/03/2015 dữ liệu có liên tục từ tháng 1 đến tháng 12 của mỗi năm 2006->2014 = 9 năm và 3 tháng của măm 2015
9 năm x 12 tháng = 108 + 3 = 111
Có thể em tính trên dữ liệu bài 1 khác với dữ liệu bác đang tính chăng?
 
Chết. Các anh em, mình đang kẹt cái file cuối (Thongke_01.01.2006_30.03.2015 - Copy.rar ) mình gởi sau này nè vì số liệu đầy đủ hơn.. . Hihihihihi

Với file dữ liệu này, thì vẫn chưa chỉnh; Ví dụ tại 1 ô trống nào đó trên trang tính, ta nhập hàm =Month(A2) sẽ cho ta lỗi ngay tấp lự!
Nên xài số liệu ngày tháng theo hệ Mẽo; Còn lại chỉ là vấn đề định dạng cho quen mắt người VN mà thôi.
 
Còn đây là macro cà tèng xử lí file bài #19

T~ 0.3 gy với máy để bàn cà tèng của mình (. . . )
 

File đính kèm

Mình viết thử = ADO như sau, bạn test thử nhé.
PHP:
Sub LayDuLieu()
    Dim cn As Object, rst As Object
    Dim Tmr As Double
    Dim strSQL As String
    Tmr = Timer()
    Set cn = CreateObject("ADODB.Connection")
    cn.Open ("Provider=Microsoft.Jet.OLEDB.4.0;" & _
             "Data Source=" & ThisWorkbook.FullName & _
             ";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"";")
    strSQL = ""
    strSQL = strSQL & "SELECT [Thongke_01$].* " & vbCrLf
    strSQL = strSQL & "FROM (SELECT Year([Ngày]) AS Nam, Month([Ngày]) AS Thang, Max(Day([Ngày])) AS Ngay, DateSerial(Year([Ngày]),Month([Ngày]),Max(Day([Ngày]))) AS MaxDate " & vbCrLf
    strSQL = strSQL & "FROM [Thongke_01$] " & vbCrLf
    strSQL = strSQL & "GROUP BY Year([Ngày]), Month([Ngày]))  AS Lay_Ngay INNER JOIN [Thongke_01$] ON Lay_Ngay.MaxDate = [Thongke_01$].Ngày"
    Set rst = cn.Execute(strSQL)
    With Sheet2
        .[A2:K150].ClearContents
        .[A2].CopyFromRecordset rst
        .[L1].Value = Timer() - Tmr
    End With
    rst.Close: cn.Close
    Set rst = Nothing: Set cn = Nothing
    
End Sub
 

File đính kèm

Mình lấy cái file của Hai Lúa Miền Tây làm và thực hiện được rồi. Nhưng:
1/Mình chuyển tất cả ngày tháng năm giống như trong file 3/30/2015 thành 30/03/2015 hoặc 30/3/2015 thì nó không lọc được ngày cuối tháng và thông báo bị lỗi là sao hả các anh em, làm cách nào cho nó vẫn lọc được ngày cuối tháng.
2/Giả sử mình muốn chuyển ngày tháng năm giống như trong file 3/30/2015 thành 30/03/2015 hoặc 30/3/2015 trước khi lọc ngày cuối tháng thì có được không? mình làm thế nào?Mình mò mẩm từ hôm qua đến sáng nay thì khuất phục, không tài nào làm được kể cả seach trên google.
 
Lần chỉnh sửa cuối:
Mình lấy cái file của Hai Lúa Miền Tây làm và thực hiện được rồi. Nhưng:
1/Mình chuyển tất cả ngày tháng năm giống như trong file 3/30/2015 thành 30/03/2015 hoặc 30/3/2015 thì nó không lọc được ngày cuối tháng và thông báo bị lỗi là sao hả các anh em, làm cách nào cho nó vẫn lọc được ngày cuối tháng.
2/Giả sử mình muốn chuyển ngày tháng năm giống như trong file 3/30/2015 thành 30/03/2015 hoặc 30/3/2015 trước khi lọc ngày cuối tháng thì có được không? mình làm thế nào?

Tôi đoán bạn đang cố chuyển kiểu ngày tháng không đúng với định dạng chuẩn của máy tính của bạn. Bạn nên kiểm tra lại nhé.
 
mình không thể tải file excel lên được để các bạn xem, trang web báo lỗi hoài. chán thiêt
Mã:
Sub thongke()
On Error Resume Next
Set s = Sheets("Thongke_01.01.2006_30.03.2015 -").UsedRange
w = s.Columns.Count
h = s.Rows.Count
ReDim a(h, w)
For Each cell In s.Columns(1).Cells
If Month(cell) <> Month(cell.Offset(-1)) Then
    For j = 0 To w - 1
        a(i, j) = s.Cells(cell.Row - s.Row + 1, j + 1)
    Next
    i = i + 1
End If
Next
Sheets.Add
[A1].Resize(i + 1, w) = a
End Sub
 
Vậy là chuyển tất cả ngày tháng năm giống như 3/30/2015 trong file của Hai Lúa Miền Tây đã làm giúp mình, thành 30/03/2015 hoặc 30/3/2015 trước khi lọc ngày cuối tháng là không thể chuyển được hả các bạn. Mình vào máy tính chỉnh lại chế độ ngày tháng đủ kiểu rồi mà chỉ có một số ngày tháng năm nhúc nhích còn lại thì im ru. Nản kinh.
 
Lần chỉnh sửa cuối:
Mã:
Sub thongke()
On Error Resume Next
Set s = Sheets("Thongke_01.01.2006_30.03.2015 -").UsedRange
w = s.Columns.Count
h = s.Rows.Count
ReDim a(h, w)
For Each cell In s.Columns(1).Cells
If Month(cell) <> Month(cell.Offset(-1)) Then
    For j = 0 To w - 1
        a(i, j) = s.Cells(cell.Row - s.Row + 1, j + 1)
    Next
    i = i + 1
End If
Next
Sheets.Add
[A1].Resize(i + 1, w) = a
End Sub
Cái này là gì thế bạn?
 
Vậy là chuyển tất cả ngày tháng năm giống như 3/30/2015 trong file của Hai Lúa Miền Tây đã làm giúp mình, thành 30/03/2015 hoặc 30/3/2015 trước khi lọc ngày cuối tháng là không thể chuyển được hả các bạn. Mình vào máy tính chỉnh lại chế độ ngày tháng đủ kiểu rồi mà chỉ có một số ngày tháng năm nhúc nhích còn lại thì im ru. Nản kinh.

Vậy cái chuổi ngày tháng từ bài 1 thì sao hả bạn: 20150326 (yyyymmdd)? Nếu là dạng này thì sẽ không gặp khó khăn cho lắm.
 

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

Back
Top Bottom