Xin giúp em code VBA tính toán

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

happyghost2000

Thành viên chính thức
Tham gia
24/5/08
Bài viết
70
Được thích
6
Em có 2 bảng số liệu
Bảng 1 : từ ( A4 : D... ) Chưa xác định
Bảng 2 : từ ( G1 : V2 )
Em muốn tính ra kết quả gắn vào bảng từ ( G4 : V....) chưa xác định

Với điều kiện tổng (A4:C4) > 0 mới tính
do D4 = V1 nên V4 = tổng (A4:C4)
U4 : V4/V2
T4 : U4/U2
S4 …......
R4…..............
…......
Cho đến G4
Với điều kiện tổng (A5:C5) > 0 mới tính
do D5 = M1 nên M5 = tổng (A5:C5)
L4 : M5/M2
K4 : L5/L2
J5 …......
I5…..............
…......
Cho đến G4
.....
Tương tự chạy hết mãng số liệu ( A: D )

Em không biết diễn giải sau cho hết ý . Các Anh , Chị xem file đính kèm
Giúp em ạ.

Cám ơn Anh, Chị rất nhiều .
 

File đính kèm

  • Book1.xlsx
    49.4 KB · Đọc: 5
Có cần phải VBA không, khi chỉ cần 1 công thức là đủ?
G4 copy cho cả bảng:
Mã:
=IF(OR(G$1>$D4,SUM($A4:$C4)=0),"",IF(G$1=$D4,SUM($A4:$C4),H4/H$2))
 

File đính kèm

  • Book1 (2).xlsx
    678.6 KB · Đọc: 4
Upvote 0
Có cần phải VBA không, khi chỉ cần 1 công thức là đủ?
G4 copy cho cả bảng:
Mã:
=IF(OR(G$1>$D4,SUM($A4:$C4)=0),"",IF(G$1=$D4,SUM($A4:$C4),H4/H$2))

Dạ do bảng tính của em có nhiều số liệu có khi lên đến 30 hoặc 40 nghìn dòng.
Nếu em gắn công thức vào file. File sẽ rẩt nặng.
Nên em xin giúp đỡ bằng VBA để file được nhẹ hơn .

Mong giúp em với ạ .
 
Upvote 0
Muốn code thì code:
PHP:
Option Explicit
Sub congdoan()
Dim lr&, i&, j&, data, result, arr(), dieukien, tong
lr = Cells(Rows.Count, "D").End(xlUp).Row
data = Range("A4:D" & lr).Value
result = Range("G4:V" & lr).Value
dieukien = Range("G2:V2").Value
For i = 1 To UBound(data)
    tong = data(i, 1) + data(i, 2) + data(i, 3)
    If tong > 0 Then
        For j = UBound(result, 2) To 1 Step -1
            Select Case j
                Case Is > data(i, 4)
                Case Is = data(i, 4)
                    result(i, j) = tong
                Case Else
                    If j < UBound(result, 2) Then result(i, j) = result(i, j + 1) / dieukien(1, j)
            End Select
        Next
    End If
Next
Range("G4:V100000").ClearContents
Range("G4").Resize(UBound(result), UBound(result, 2)).Value = result
End Sub
 

File đính kèm

  • Book1 (2).xlsm
    401.6 KB · Đọc: 11
Upvote 0
Muốn code thì code:
PHP:
Option Explicit
Sub congdoan()
Dim lr&, i&, j&, data, result, arr(), dieukien, tong
lr = Cells(Rows.Count, "D").End(xlUp).Row
data = Range("A4:D" & lr).Value
result = Range("G4:V" & lr).Value
dieukien = Range("G2:V2").Value
For i = 1 To UBound(data)
    tong = data(i, 1) + data(i, 2) + data(i, 3)
    If tong > 0 Then
        For j = UBound(result, 2) To 1 Step -1
            Select Case j
                Case Is > data(i, 4)
                Case Is = data(i, 4)
                    result(i, j) = tong
                Case Else
                    If j < UBound(result, 2) Then result(i, j) = result(i, j + 1) / dieukien(1, j)
            End Select
        Next
    End If
Next
Range("G4:V100000").ClearContents
Range("G4").Resize(UBound(result), UBound(result, 2)).Value = result
End Sub
Thật là tuyệt vời. Cám ơn bác nhiều lắm .
 
Upvote 0
Web KT

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

Back
Top Bottom