Tìm Code cho hàm IF

Liên hệ QC

Phương Phương mito

Thành viên thường trực
Tham gia
1/5/19
Bài viết
275
Được thích
65
Kính gửi Anh chị và các bạn trong diễn đàn,
Em có một câu hỏi tính toán biến Hàm IF thành Code nhờ diến đàn giúp ạ. Tại Cột I - Hoa hồng em tính hàm IF Nếu Tiền Bán tại Cột G>50 triệu đồng thì nhân với 5% hoa hồng (=IF(G4>50000000,G4*5%,""). Muốn tính đến đâu kéo hàm tới đó tại cột I. Tuy nhiên để tiện lợi và nhẹ File em muốn biến hàm thành Code, với điều kiện nó chỉ tính công thức IF này khi cột số hóa đơn từ vùng C4 trở xuống có số (Như hình là vùng C4:C15), còn lại nếu không có số hóa đơn (Như hình là từ vùng C15 trở xuống) thì nó không tính toán gì ạ. Nhờ diễn đàn trợ giúp.


216302
 
Kính gửi Anh chị và các bạn trong diễn đàn,
Em có một câu hỏi tính toán biến Hàm IF thành Code nhờ diến đàn giúp ạ. Tại Cột I - Hoa hồng em tính hàm IF Nếu Tiền Bán tại Cột G>50 triệu đồng thì nhân với 5% hoa hồng (=IF(G4>50000000,G4*5%,""). Muốn tính đến đâu kéo hàm tới đó tại cột I. Tuy nhiên để tiện lợi và nhẹ File em muốn biến hàm thành Code, với điều kiện nó chỉ tính công thức IF này khi cột số hóa đơn từ vùng C4 trở xuống có số (Như hình là vùng C4:C15), còn lại nếu không có số hóa đơn (Như hình là từ vùng C15 trở xuống) thì nó không tính toán gì ạ. Nhờ diễn đàn trợ giúp.


View attachment 216302
Bạn không đưa file xem thật sự nó thế nào, có thể đến bao nhiêu dòng...
Tạm thời code nó như vầy, bạn tùy nghi vận dụng:


PHP:
Public Sub sGpe()
Dim eRw As Long, R As Long
eRw = Range("C60000").End(xlUp).Row
For R = 4 To eRw
    Range("I" & R).Value = Empty
    If Len(Range("C" & R)) Then
        If Range("G" & R).Value > 5 * 10 ^ 7 Then Range("I" & R).Value = Range("G" & R).Value * 0.05
    End If
Next R
End Sub
 
Upvote 0
Bạn không đưa file xem thật sự nó thế nào, có thể đến bao nhiêu dòng...
Tạm thời code nó như vầy, bạn tùy nghi vận dụng:


PHP:
Public Sub sGpe()
Dim eRw As Long, R As Long
eRw = Range("C60000").End(xlUp).Row
For R = 4 To eRw
    Range("I" & R).Value = Empty
    If Len(Range("C" & R)) Then
        If Range("G" & R).Value > 5 * 10 ^ 7 Then Range("I" & R).Value = Range("G" & R).Value * 0.05
    End If
Next R
End Sub
Em cảm ơn anh Gạo Cội ạ. Nó chạy đúng rồi ạ !!!!!
 
Upvote 0
Ngon nhất trong trường hợp như vầy là tạo macro sự kiện tại các ô thuộc cột C & cột G; Còn chọn cột nào chứa macro sự kiện là tùy thuộc vô quá trình nhập nhập liệu:
A./ Nếu luôn nhập theo trình tự trái qua phải thì gán macro sự kiện vô cột [G] & ngược lại
B./ Nếu gán cùng lúc trên cột C lẫn cột G thì ta phải ra điều kiện.
1 khi đã có macro sự kiện rồi thì nhập đủ dự liệu 2 cột nói trên macro sẽ tính cho ta huê hồng ngay tấp lự
Chúc ngày nghỉ lễ thiệc vui vẻ!
 
Upvote 0
Bạn không đưa file xem thật sự nó thế nào, có thể đến bao nhiêu dòng...
Tạm thời code nó như vầy, bạn tùy nghi vận dụng:


PHP:
Public Sub sGpe()
Dim eRw As Long, R As Long
eRw = Range("C60000").End(xlUp).Row
For R = 4 To eRw
    Range("I" & R).Value = Empty
    If Len(Range("C" & R)) Then
        If Range("G" & R).Value > 5 * 10 ^ 7 Then Range("I" & R).Value = Range("G" & R).Value * 0.05
    End If
Next R
End Sub
Anh ơi,
Em thử áp dụng cái Code của anh vào quy đổi tiền tại Cột I em thấy nó chạy. Nhưng nếu File của em nó khoảng 30k dòng thì nó cứ đơ đơ, giật giật...mãi nó chỉ ra được khoảng 5000 dòng....anh xem giúp em với ạ.
 

File đính kèm

Upvote 0
Anh ơi,
Em thử áp dụng cái Code của anh vào quy đổi tiền tại Cột I em thấy nó chạy. Nhưng nếu File của em nó khoảng 30k dòng thì nó cứ đơ đơ, giật giật...mãi nó chỉ ra được khoảng 5000 dòng....anh xem giúp em với ạ.
Thử vậy xem đỡ hơn không?

Mã:
Sub b()
Dim eRw As Long, R As Long
Application.ScreenUpdating = False
Sheet1.Select
eRw = Range("B60000").End(xlUp).Row
For R = 4 To eRw
    Range("I" & R).Value = Empty
        If Len(Range("B" & R)) Then
        If Range("E" & R).Value = "VND" Then Range("I" & R).Value = Range("D" & R).Value / 1000000
        If Range("E" & R).Value = "USD" Then Range("I" & R).Value = Range("D" & R).Value * 20000 / 1000000
        If Range("E" & R).Value = "EUR" Then Range("I" & R).Value = Range("D" & R).Value * 22000 / 1000000
    End If
Next R
Application.ScreenUpdating = True
End Sub
Mà nhìn file với nick mới tạo nghi nghi quá ta ơi. kaka
 
Lần chỉnh sửa cuối:
Upvote 0
Anh ơi,
Em thử áp dụng cái Code của anh vào quy đổi tiền tại Cột I em thấy nó chạy. Nhưng nếu File của em nó khoảng 30k dòng thì nó cứ đơ đơ, giật giật...mãi nó chỉ ra được khoảng 5000 dòng....anh xem giúp em với ạ.
Thì tôi có nói trước, bạn không nói rõ tình trạng file của bạn thế nào nên code đơn giản như thế.
Nếu bạn nói trước là file bạn có thể đến 100.000 dòng thì code sẽ khác.
Bạn đưa file thực lên đi, bỏ hết Table, màu mè ... sẽ có người giúp bạn viết code trong mảng.
 
Lần chỉnh sửa cuối:
Upvote 0
Cũng bon chen 1 cái macro:
PHP:
Sub GPE()
Dim eRw As Long, R As Long, J As Long
Dim sArr():                                             Const Tr As Long = 1000000
Sheet1.Select
eRw = [b4].CurrentRegion.Rows.Count
sArr() = [b4].Resize(eRw, 4).Value
ReDim Arr(1 To eRw, 1 To 1) As Double
For R = 1 To UBound(sArr())
'    Range("I" & R).Value = Empty   '
    If Arr(R, 1) <> Space(0) Then
'        If Len(Range("B" & R)) Then    '
        If sArr(R, 4) = "VND" Then Arr(R, 1) = sArr(R, 3) / Tr
'        If Range("E" & R).Value = "VND" Then Range("I" & R).Value = Range("D" & R).Value / 1000000 '
        If sArr(R, 4) = "USD" Then Arr(R, 1) = sArr(R, 3) * 20000 / Tr
'        If Range("E" & R).Value = "USD" Then Range("I" & R).Value = Range("D" & R).Value * 20000 / 1000000 '
        If sArr(R, 4) = "EUR" Then Arr(R, 1) = sArr(R, 3) * 22000 / Tr
'        If Range("E" & R).Value = "EUR" Then Range("I" & R).Value = Range("D" & R).Value * 22000 / 1000000 '
    Else
        Exit For
    End If
Next R
[I4].Resize(R - 1).Value = Arr()
End Sub
 
Upvote 0
Thử vậy xem đỡ hơn không?

Mã:
Sub b()
Dim eRw As Long, R As Long
Application.ScreenUpdating = False
Sheet1.Select
eRw = Range("B60000").End(xlUp).Row
For R = 4 To eRw
    Range("I" & R).Value = Empty
        If Len(Range("B" & R)) Then
        If Range("E" & R).Value = "VND" Then Range("I" & R).Value = Range("D" & R).Value / 1000000
        If Range("E" & R).Value = "USD" Then Range("I" & R).Value = Range("D" & R).Value * 20000 / 1000000
        If Range("E" & R).Value = "EUR" Then Range("I" & R).Value = Range("D" & R).Value * 22000 / 1000000
    End If
Next R
Application.ScreenUpdating = True
End Sub
Mà nhìn file với nick mới tạo nghi nghi quá ta ơi. kaka
Đã bị phát giác.huhu. Cảm ơn Anh !
 
Upvote 0
Web KT

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

Back
Top Bottom