Nhờ viết đoạn code IF, MAX

Liên hệ QC

anhtotbung35

Thành viên hoạt động
Tham gia
16/2/09
Bài viết
149
Được thích
26
Nghề nghiệp
Kế toán
Trong Excell mình có công thức như sau:
Cell B24 = IF(B23<MAX(M4:$M$300);B23+1;"")
Cell B25 = IF(B24<MAX(M5:$M$300);B24+1;"")
Cell B26 = IF(B25<MAX(M6:$M$300);B25+1;"")

Mình viết code trong VBA như sau:

Dim l, m As Integer
With Sheets("BKBR")
l = xlLastRow([BKBR!B:L]) 'dòng cuối của mảng tương ứng với dòng 23
m = xlLastRow([BKBR!M:M]) 'dòng cuối của cột tương ứng với dòng 300
.Range("B" & l + 1).FormulaR1C1 = "nhờ các bạn cho mình đoạn code chỗ này (mình đã làm rồi nhưng cứ báo lỗi hoài"
End With
 
Trong Excell mình có công thức như sau:
Cell B24 = IF(B23<MAX(M4:$M$300);B23+1;"")
Cell B25 = IF(B24<MAX(M5:$M$300);B24+1;"")
Cell B26 = IF(B25<MAX(M6:$M$300);B25+1;"")

Mình viết code trong VBA như sau:

Dim l, m As Integer
With Sheets("BKBR")
l = xlLastRow([BKBR!B:L]) 'dòng cuối của mảng tương ứng với dòng 23
m = xlLastRow([BKBR!M:M]) 'dòng cuối của cột tương ứng với dòng 300
.Range("B" & l + 1).FormulaR1C1 = "nhờ các bạn cho mình đoạn code chỗ này (mình đã làm rồi nhưng cứ báo lỗi hoài"
End With
Đưa 1 file giả lập lên đây cho tiện việc viết code! Nhìn thế này cảm thấy... lười quá!
 
Upvote 0
Đây là những gì mình hiểu & nhờ bộ thu

PHP:
Option Explicit
Sub GPE()
 Dim Jj As Byte, Ff As Integer
 
 For Jj = 24 To 26
   Ff = 24 - Jj
   Cells(Jj, "B").FormulaR1C1 = _
        "=IF(R[-1]C<MAX(R[" & -20 + Ff & "]C[11]:R[" & 276 + Ff & "]C[11]),R[-1]C+1,"""")"
 Next Jj
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
PHP:
Option Explicit
Sub GPE()
 Dim Jj As Byte, Ff As Integer
 
 For Jj = 24 To 26
   Ff = 24 - Jj
   Cells(Jj, "B").FormulaR1C1 = _
        "=IF(R[-1]C<MAX(R[" & -20 + Ff & "]C[11]:R[" & 276 + Ff & "]C[11]),R[-1]C+1,"""")"
 Next Jj
End Sub
Như em đã nói ở bài trước: đã dùng FormulaR1C1 thì không cần đến vòng lập đâu sư phụ à!---> Nó có khả năng gán công thức 1 lần cho toàn bộ vùng dữ liệu
Tuy nhiên, có file thì viết code sẽ chính xác hơn (đở mất công hỏi tới hỏi lui)
 
Upvote 0

File đính kèm

Upvote 0
Trong Excell mình có công thức như sau:
Cell B24 = IF(B23<MAX(M4:$M$300);B23+1;"")
Cell B25 = IF(B24<MAX(M5:$M$300);B24+1;"")
Cell B26 = IF(B25<MAX(M6:$M$300);B25+1;"")

Mình viết code trong VBA như sau:

Dim l, m As Integer
With Sheets("BKBR")
l = xlLastRow([BKBR!B:L]) 'dòng cuối của mảng tương ứng với dòng 23
m = xlLastRow([BKBR!M:M]) 'dòng cuối của cột tương ứng với dòng 300
.Range("B" & l + 1).FormulaR1C1 = "nhờ các bạn cho mình đoạn code chỗ này (mình đã làm rồi nhưng cứ báo lỗi hoài"
End With

PHP:
Option Explicit
Sub GPE()
Dim Jj As Byte, Ff As Integer
 
For Jj = 24 To 26
Ff = 24 - Jj
Cells(Jj, "B").FormulaR1C1 = _
"=IF(R[-1]C<MAX(R[" & -20 + Ff & "]C[11]:R[" & 276 + Ff & "]C[11]),R[-1]C+1,"""")"
Next Jj
End Sub
Trong công thức đó thì mình giả định dòng, chứ thực tế thì tùy thuộc vào dòng cuối cùng của cột B và cột M. Theo code thì từ dòng 24 đến dòng 26. Nếu nhiều hơn và dùng vòng lập mình e rằng xử lý hơi lâu.
 
Upvote 0
Vậy làm phiền bạn nhé. Mình có vùng dữ liệu và muốn cho ra kết quả như trong file.
Tôi không rành kế toán nên nhìn vào có chổ không hiểu
Vui lòng giải thích cell I12, tại sao có kết quả = 300000 mà không phải là 300150... Cell I13 tại sao có kết quả = 100000 mà không là 100050
 
Upvote 0
Tôi không rành kế toán nên nhìn vào có chổ không hiểu
Vui lòng giải thích cell I12, tại sao có kết quả = 300000 mà không phải là 300150... Cell I13 tại sao có kết quả = 100000 mà không là 100050
Mình giải thích thêm, TK Có 33311 là tài khoản thuế, nên số tiền này sẽ tổng ở cột thuế GTGT. Như vậy Cột doanh thu (cell I12=300.000) sẽ tổng số tiền mà "TK Có" khác với TK 33311, Cột thuế GTGT (cell K12=150) sẽ tổng số tiền mà "TK Có" là TK 33311. Tổng cell I12 và K12 sẽ bằng 300.150
 
Upvote 0
Mình giải thích thêm, TK Có 33311 là tài khoản thuế, nên số tiền này sẽ tổng ở cột thuế GTGT. Như vậy Cột doanh thu (cell I12=300.000) sẽ tổng số tiền mà "TK Có" khác với TK 33311, Cột thuế GTGT (cell K12=150) sẽ tổng số tiền mà "TK Có" là TK 33311. Tổng cell I12 và K12 sẽ bằng 300.150
Ôi.. thế thì bài toán này thuộc dạng trích lọc và tính tổng rồi ---> Nó rất phức tạp chứ đâu phải chỉ dòng code như bạn hỏi ở bài #1 đâu
Để xem cái đã!
----------------
Hỏi thêm:
- Dữ liệu thật của bạn y chang thế đúng không?
- Vùng dữ liệu nhập luôn nằm từ cột M đến cột Y?
- Phần trích lọc luôn bắt đầu từ cột B? (hay đặt tại 1 sheet khác?)
vân vân
 
Upvote 0
Ôi.. thế thì bài toán này thuộc dạng trích lọc và tính tổng rồi ---> Nó rất phức tạp chứ đâu phải chỉ dòng code như bạn hỏi ở bài #1 đâu
Để xem cái đã!
----------------
Hỏi thêm:
- Dữ liệu thật của bạn y chang thế đúng không?
- Vùng dữ liệu nhập luôn nằm từ cột M đến cột Y?
- Phần trích lọc luôn bắt đầu từ cột B? (hay đặt tại 1 sheet khác?)
vân vân
Có thể nói là như vậy, tại mình đã lọc dữ liệu cần thiết từ sheets Data và copy qua cột M . Bây giờ thì vùng dữ chỉ có từ cột M đến cột Y (hoặc từ cột N đến cột Z - số cột dữ liệu là cố định). Từ vùng dữ liệu này mới tổng hợp sang cột B đến cột L (hoặc cột A đến cột K - số cột cũng cố định). Phiền bạn giúp mình nhé.
Ở bài 1, thì ý định mình lấy dữ liệu ở cột số thứ tự, rồi từ đó vlookup cho các cột tiếp theo, còn cột Doanh thu và Thuế GTGT thì dùng SUMPRODUCT (điều kiệu là cùng thuế suất, cùng số hóa đơn, cùng LCT, TK có là 5111-Doanh thu hoặc 33311-Thuế). Nhưng lấy hoài số liệu ở cột số thứ tự thì cứ bị báo lỗi. Nên nhờ các bạn giúp đỡ.
 
Upvote 0
Web KT

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

Back
Top Bottom