Lọc ra giá cổ phiếu vào ngày giao dịch cuối cùng của mỗi tháng từ dữ liệu cơ sở bằng hàm hoặc viết code VBA

Liên hệ QC

iamtus1903

Thành viên mới
Tham gia
4/12/19
Bài viết
3
Được thích
2
Em chào anh/ chị ạ.
Em muốn lọc ra giá cổ phiếu vào ngày cuối cùng giao dịch của mỗi tháng từ dữ liệu. Ngày giao dịch cuối cùng khác với ngày cuối tháng ạ.
Mong anh chị giúp em với ạ. Có thể viết code VBA hoặc hàm gì được thì chỉ em với
File ví dụ:
 

File đính kèm

  • Lọc giá cổ phiếu vào ngày giao dịch cuối cùng của mỗi tháng.xlsx
    123.9 KB · Đọc: 17
Bạn xem thử nhé. Vì file của bạn cột ngày tháng đang là d/m/yyyy nên mình chỉnh tạm lại cho đúng config trên máy mình, mình add thêm cột period, mình chỉ lấy tạm một ít số liệu thôi. Bạn muốn add bao nhiêu thì cứ add vào. Kết quả thì qua sheet report bấm run để chạy code nhé.
 

File đính kèm

  • Lọc giá cổ phiếu vào ngày giao dịch cuối cùng của mỗi tháng.xlsb
    25.2 KB · Đọc: 22
Upvote 0
Chạy macro này trên file #2 cũng ra kết quả nè:
PHP:
Sub GPE()
Dim fDat As Date, lDat As Date, J As Long, Rws As Long
Dim WF As Object, Rng As Range, sRng As Range, Th As Integer, Ng As Integer, W As Integer, Nam As Integer, Col As Integer
Const MyColor As Integer = 34

Set WF = Application.WorksheetFunction
With Sheets("Data")
    Rws = .[A2].CurrentRegion.Rows.Count
    Set Rng = .[A3].Resize(Rws):            Col = .[A2].CurrentRegion.Columns.Count
    fDat = WF.Min(Rng):                         lDat = WF.Max(Rng)
    .[A1].Resize(, Col).Copy Destination:=Cells(16, 1)
End With
Nam = Year(lDat):                                  Range("A17").Resize(93, Col).Clear
For Th = Month(fDat) To Month(lDat)
    Ng = Day(DateSerial(Nam, Th + 1, 0))
    For W = Ng To 1 Step -1
        Set sRng = Rng.Find(DateSerial(Nam, Th, W), , xlFormulas, xlWhole)
        If Not sRng Is Nothing Then
            sRng.Resize(, Col).Copy Destination:=Range("A99").End(xlUp).Offset(1)
            Range("A99").End(xlUp).Interior.ColorIndex = MyColor + Th
            Exit For
        End If
    Next W
Next Th
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Nếu dữ liệu trong 'Data' trãi qua 2 hay nhiều năm thì ta thực hiện macro này:
PHP:
Sub ChungKhoan()
 Dim fDat As Date, lDat As Date, J As Long, Rws As Long, SoThang As Integer
 Dim WF As Object, Rng As Range, sRng As Range:      Const MyColor As Integer = 34
 Dim Th As Integer, Ng As Integer, W As Integer, Nam As Integer, Col As Integer
 
 Set WF = Application.WorksheetFunction
 With Sheets("Data")
    Rws = .[A2].CurrentRegion.Rows.Count
    Set Rng = .[A3].Resize(Rws):                                Col = .[A2].CurrentRegion.Columns.Count
    fDat = WF.Min(Rng):                                             lDat = WF.Max(Rng)
    .[A1].Resize(, Col).Copy Destination:=Cells(16, 1)
 End With
 Nam = Year(lDat):                                                      Range("A17").Resize(13, Col).Clear
 SoThang = (Nam - Year(fDat) + 1) * 12
 For Th = 0 To SoThang
    Ng = Day(DateSerial(Nam, Month(lDat) + 1 - Th, 0))
    For W = Ng To 1 Step -1
        Set sRng = Rng.Find(DateSerial(Nam, Th, W), , xlFormulas, xlWhole)
        If Not sRng Is Nothing Then
            sRng.Resize(, Col).Copy Destination:=Range("A99").End(xlUp).Offset(1)
            Range("A99").End(xlUp).Interior.ColorIndex = MyColor + Th
            Exit For
        End If
    Next W
 Next Th
End Sub
 
Upvote 0
Web KT
Back
Top Bottom