Code đánh stt ở cột mong muốn

Trạng thái
Không mở trả lời sau này.

mingde2k

Yêu THVBA
em muốn đánh stt ở cột G dựa trên dữ liệu ở cột H
Cột H có dòng có dữ liệu thì cột G mới đánh stt ( có dòng trống)

em không biết chèn hình ảnh hay file excelở chỗ nào nên mấy bác thông cảm
 
V

vothanhthu

Guest
@mingde2k
Bạn có thể bớt chút thời gian để trình bày lại cho dễ hiểu không ạ?
  • Nếu bạn không biết cách upload ảnh lên diễn đàn, bạn vui lòng tham khảo topic sau: .
  • Nếu có Code, bạn phải sử dụng thẻ Code khi viết code trên forum. Xin xem mục 4 trong .
  • Bạn nên nói rõ Input là gì? Output muốn ra sao?
  • Bạn nên có file demo. Bạn có thể upload file lên google drive hoặc mediafire.com rồi dẫn link về diễn đàn.
Một bài viết trình bày dễ hiểu là một bài viết sử dụng hình minh họa trực quan. Một bài viết chỉ toàn chữ sẽ khiến người khác không muốn đọc.

Một bài viết dễ hiểu sẽ giảm thiểu thời gian đọc hiểu cho người khác, bạn sẽ nhanh chóng nhận được hỗ trợ nếu bài viết của bạn là một bài viết dễ hiểu.
Chúng tôi mong bạn hiểu và hợp tác.
 

mingde2k

Yêu THVBA
Bạn cần đăng nhập để thấy hình ảnh

này là link bbcode em làm theo hướng dẫn đây ạ
 

mingde2k

Yêu THVBA
Em cần code VBA để làm bài ấy ạ
hiện tại em cần code để chạy cột Number day
khi cột VND Fund có thay đổi thì cột ngoài cùng sẽ đánh dấu 1
em cần code để đếm stt ở cột G(number day) dựa trên dữ liệu cột H những hàng có đánh dấu 1 ấy ạ
Bạn cần đăng nhập để thấy hình ảnh
 
V

vothanhthu

Guest
@mingde2k có phải bạn đang cần đếm có bao nhiêu số 1 trong cột H đúng không ?. Vẽ hình Demo thì sẽ dễ hiểu hơn bạn nhé !

Và đây là kết quả mà bạn mong muốn ra có phải không?

Bạn cần đăng nhập để thấy hình ảnh
 
V

vothanhthu

Guest
Nếu xác nhận của mình là đúng. Bạn có thể dùng công thức sau đặt tại ô G3 kéo thẳng xuống là OK nhé.
Mã:
=IF(H3<>"",COUNTA(H$3:H3),"")
Công thức này sẽ có công dụng là đánh số TT cho các ô không rỗng bên cột H, bắt đầu từ H3.
 

mingde2k

Yêu THVBA
Nếu xác nhận của mình là đúng. Bạn có thể dùng công thức sau đặt tại ô G3 kéo thẳng xuống là OK nhé.
Mã:
=IF(H3<>"",COUNTA(H$3:H3),"")
Công thức này sẽ có công dụng là đánh số TT cho các ô không rỗng bên cột H, bắt đầu từ H3.
dạ tại em cần code để chạy VBA á anh vì có 5000 dữ liệu lần
 

vbano1

SMod
Thành viên BQT
Mã:
Sub tuhocvba()
    Dim rend    As Long, i As Long, cnt As Long
    Dim arr, brr
    Const cotH      As Integer = 8
    Const cotG      As Integer = 7
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    rend = ThisWorkbook.ActiveSheet.Cells(Rows.Count, cotH).End(xlUp).Row
    arr = ThisWorkbook.ActiveSheet.Range(Cells(2, cotH), Cells(rend, cotH)).Value
    ReDim brr(1 To rend - 1, 1 To 1)
    cnt = 0
    For i = LBound(arr, 1) To UBound(arr, 1) Step 1
        If CStr(arr(i, 1)) <> "" Then
            cnt = cnt + 1
            brr(i, 1) = cnt
        End If
    Next i
    
    ThisWorkbook.ActiveSheet.Range(Cells(2, cotG), Cells(rend, cotG)).Value = brr
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
End Sub
 

giaiphapvba

Administrator
Thành viên BQT
Không sao. Bạn chia sẻ link diễn đàn lên facebook cá nhân của bạn giúp bọn mình nhé!
 

mingde2k

Yêu THVBA
em còn vấn đề trong cột USD Trading nữa thì em có thể hỏi ở đây luôn không ạ? hay phải lập ra bài mới ạ
 

giaiphapvba

Administrator
Thành viên BQT
Bài của bạn đã được tôi di chuyển sang Box Thành Viên Tự Giúp Nhau.
Nay BQT không hỗ trợ topic này nữa. Bạn tùy ý diễn đạt thông tin để nhận được trợ giúp từ thành viên khác.
 

mingde2k

Yêu THVBA
Đây hiện tại là mã code của em hiện có

Vấn đề của em hiện tại của em ở Cột USD trading mua vô bán ra cho có lời ( VND Fund >0, USD Fund >=0)
và ý tưởng của em là ở Phần For j = 3

Ý tưởng là mua ở ngày đầu tiên xong bán ra khi Price cao hơn, và mua lại ngay vào ngày tiếp theo để đợi ngày cao hơn nữa để bán
nhưng có vẻ khi viết If nó đã bị mâu thuẫn khi USD trading < 0 ( Cells(j, 5) <0 ) là em mua lại ngay vào ngày hôm sau dù bất cứ giá nào với việc là áp dụng so sánh Price ngày trước vs ngày sau để buôn bán
mong mọi người chỉ em cách khắc phục phần bị mâu thuẫn này, nếu không khắc phục được thì có phương án nào hợp lý hơn không ạ.
nếu theo ý tưởng của em là sẽ được kết quả như hình (em làm đánh tay phần Usd trading để mẫu thử ạ nhưng yêu cầu là dùng VBA)

Với em không hiểu sao không lưu được code vô excel để đăng đính kèm, ai đó chỉ em cách lưu với ạ.

Em xin cảm ơn mọi người đã giúp đỡ.

Nếu em có lỗi nào trong quá trình đăng bài mong mọi người chỉ ra để em rút kinh nghiệm cải thiện hơn.
Mã:
Sub exchange()
    Dim rows As LongLong
    Dim i, j As LongLong
    rows = Range("A2").End(xlDown).Row

    Cells(2, 3).Value = 10000000
    Cells(2, 4).Value = 0
    Cells(2, 6).Value = 0
    Cells(2, 5).Value = Cells(2, 3) \ Cells(2, 2)

    For j = 3 To rows

        If Cells(j, 2).Value > Cells(j-1, 2).Value Then
           Cells(j, 5) = Cells(j, 4)
        Else
           Cells(j, 5) = 0
        End If
        If Cells(j, 5).Value < 0 Then
           Cells(j + 1, 5).Value = Cells(j, 4).Value
        End If
    Next

    For i = 3 To rows
        If Cells(i, 3) - Cells(i - 1, 3) <> 0 Then
            Cells(i, 3).Value = Cells(i - 1, 3).Value - Cells(i - 1, 2).Value * Cells(i - 1, 5).Value ' VND Fund
            Cells(i, 4).Value = Cells(i - 1, 4).Value + Cells(i - 1, 5).Value ' USD Fund
            Cells(i, 6).Value = Cells(i - 1, 2).Value * Cells(i - 1, 5).Value ' Volume
        Else
            Cells(i, 3).Value = Cells(i - 1, 3).Value - Cells(i - 1, 2).Value * Cells(i - 1, 5).Value ' VND Fund
            Cells(i, 4).Value = Cells(i - 1, 4).Value + Cells(i - 1, 5).Value ' USD Fund
            Cells(i, 6).Value = Cells(i - 1, 2).Value * Cells(i - 1, 5).Value ' Volume
        End If
        If Cells(i - 1, 5) <> 0 Then
            Cells(i, 8).Value = 1
        Else
            Cells(i, 8).Value = ""
        End If
    Next
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
        Dim rangeToChange As Range
        Set rangeToChange = Range("H:H")
        Dim k As Integer, STT As Integer
        STT = 1
        If Not Application.Intersect(rangeToChange, Range(Target.Address)) Is Nothing Then
         Range("G2:G" & rows.Count).ClearContents
    For k = 2 To Range("H" & rows.Count).End(xlUp).Row
        If Range("H" & k).Value <> "" Then
            Range("G" & k).Value2 = STT
            STT = STT + 1
        End If
            Next k
        End If
End Sub
Bạn cần đăng nhập để thấy hình ảnh
 
Sửa lần cuối bởi điều hành viên:
Trạng thái
Không mở trả lời sau này.
Top