[HELP] Chỉnh số dòng thực hiện code chạy công thức (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

hoangtrong_vbnd

Thành viên hoạt động
Tham gia
14/1/11
Bài viết
156
Được thích
7
Giới tính
Nam
Nhờ các bác giúp đỡ chỉnh độ dài chạy code. File của e chứa 2 sheet:
NKC: chứa dữ liệu nguồn
Socai: chạy kết quả lọc theo code dưới
E muốn chỉnh số dòng chạy công thức A10:I50010 (hiện đang để mặc đinh) về số dòng dữ liệu tối đa bên sheet NKC có thể biến động tối đa đến 60.000 dòng (ví dụ bên NKC là 10000 dòng thì số lượng chạy công thức là A10:I10000)
Các bác xem giúp e nhé. E cảm ơn !
Sub sc()Application.ScreenUpdating = False
Application.EnableEvents = False
Range("A10").Formula = "=IF($E10<>0,NKC!A7,0)"
Range("B10").Formula = "=IF($E10<>0,NKC!B7,0)"
Range("C10").Formula = "=IF($E10<>0,NKC!C7,0)"
Range("D10").Formula = "=IF($E10<>0,NKC!G7,0)"
Range("E10").Formula = "=IF(AND($B$4=LEFT(NKC!$H7,LEN($B$4)),$B$5=LEFT(NKC!$E7,LEN($B$5))),NKC!$I7,IF(AND($B$4=LEFT(NKC!$I7,LEN($B$4)),$B$5=LEFT(NKC!$E7,LEN($B$5))),NKC!$H7,0))"
Range("F10").Formula = "=IF(AND($E10<>0,OR($E10=NKC!$H7,$E10=NKC!$I7)),NKC!$E7,0)"
Range("G10").Formula = "=IF($E10<>0,IF(AND($B$4=LEFT(NKC!$H7,LEN($B$4)),$B$5=LEFT(NKC!$E7,LEN($B$5))),NKC!$J7,0))"
Range("H10").Formula = "=IF($E10<>0,IF(AND($B$4=LEFT(NKC!$I7,LEN($B$4)),$B$5=LEFT(NKC!$E7,LEN($B$5))),NKC!$J7,0))"
Range("I10").Formula = "=IF(SUM(G10:H10)<>0,1,0)"
Dim rng As Range
Set rng = Range("A10:I50010")
rng.AutoFilter
Range("A10:I10").Copy rng
rng.Value = rng.Value
Set rng = rng.Resize(rng.Rows.Count + 1).Offset(-1)
rng.AutoFilter 9, 1
rng.Columns(9).Hidden = True
Set rng = Nothing
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
 

File đính kèm

Nhờ các bác giúp đỡ chỉnh độ dài chạy code. File của e chứa 2 sheet:
NKC: chứa dữ liệu nguồn
Socai: chạy kết quả lọc theo code dưới
E muốn chỉnh số dòng chạy công thức A10:I50010 (hiện đang để mặc đinh) về số dòng dữ liệu tối đa bên sheet NKC có thể biến động tối đa đến 60.000 dòng (ví dụ bên NKC là 10000 dòng thì số lượng chạy công thức là A10:I10000)
Các bác xem giúp e nhé. E cảm ơn !

Làm kiểu khác, xem sheet GPE nhé.
Ô B5 trống rỗng không biết điều kiện ra sao nên không tính.
 

File đính kèm

Upvote 0
Bác ơi cho e hỏi chỉnh thế nào để ô bên số tiền ko về rỗng nữa mà về 0

Tìm mấy dòng giống cái này:
PHP:
If sArr(I, 8) Like TK & "*" Then
                dArr(K, 5) = sArr(I, 9): dArr(K, 7) = sArr(I, 10)
            Else
                dArr(K, 5) = sArr(I, 8): dArr(K, 8) = sArr(I, 10)
            End If
Thêm thành cái này:
PHP:
If sArr(I, 8) Like TK & "*" Then
                dArr(K, 5) = sArr(I, 9): dArr(K, 7) = sArr(I, 10): dArr(K, 8) = 0
            Else
                dArr(K, 5) = sArr(I, 8): dArr(K, 8) = sArr(I, 10): dArr(K, 7) = 0
            End If
 
Upvote 0
Mình cũng đang vướng vấn đề này, mình cũng mới đang nghiên cứu về VBA nên ban nãy đăng nhầm vào topic khác, nhờ bạn giúp mình file này với
 

File đính kèm

Upvote 0
Mình cũng đang vướng vấn đề này, mình cũng mới đang nghiên cứu về VBA nên ban nãy đăng nhầm vào topic khác, nhờ bạn giúp mình file này với
 

File đính kèm

Upvote 0
Mình cũng đang vướng vấn đề này, mình cũng mới đang nghiên cứu về VBA nên ban nãy đăng nhầm vào topic khác, nhờ bạn giúp mình file này với

Viết cho bạn 1 Sub, tuỳ bạn sử dụng nếu file bạn giống thật.
PHP:
Public Sub GPE()
Dim Arr(), Tem(), I As Long, J As Long, Rws As Long, K As Long
Tem = Range("C2:F2").FormulaR1C1
Rws = Range("A2").End(xlDown).Row
ReDim Arr(1 To Rws, 1 To 4)
For I = 3 To Rws
    K = K + 1
    For J = 1 To 4
        Arr(K, J) = Tem(1, J)
    Next J
Next I
Range("C3:F50000").ClearContents
Range("C3:F3").Resize(K) = Arr
Range("C3:F3").Resize(K).Value = Range("C3:F3").Resize(K).Value
End Sub
 
Upvote 0
hii cảm ơn Ba tê nhiều, mình sẽ dựa vào đoạn của bạn để triển khai theo ý của mình :)
 
Upvote 0
HI, mình đã hiểu đoạn sub của Ba te, nhưng lại có vấn đề phát sinh đó là trường dữ liệu của mình không nằm cùng sheet với sheet tính toán đó, mình không xử lý được vấn đè này, bạn xem giúp mình thêm nhé
 

File đính kèm

Upvote 0
HI, mình đã hiểu đoạn sub của Ba te, nhưng lại có vấn đề phát sinh đó là trường dữ liệu của mình không nằm cùng sheet với sheet tính toán đó, mình không xử lý được vấn đè này, bạn xem giúp mình thêm nhé

Đưa file giống thật là xong rồi, sao lại "phát sinh"?
 

File đính kèm

Upvote 0
Mã:
Dim rng As Range
Dim lr As Long
lr = Sheets("NKC").Range("B100000").End(3).Row
Set rng = Range("A10:I" & lr)
Các bác cho e hỏi là khi dữ liệu thay đổi: số dòng lần nhập sau lớn hơn hoặc nhỏ hơn số dòng lần nhập trước thì làm sao để xoá số lượng dòng excel đã chạy lúc trước (làm mới số lượng dòng theo sheet đã chỉ định)
Code e đã sửa:
Private Sub WorkSheet_Change(ByVal Target As Range)If Not Intersect(Target, [B4:B5]) Is Nothing Then
Application.ScreenUpdating = False
Application.EnableEvents = False
Range ...
Dim rng As Range
Dim lr As Long
lr = Sheets("NKC").Range("J100000").End(3).Row
Set rng = Range("A8:J" & lr)

rng.AutoFilter
Range("A8:J8").Copy rng
rng.Value = rng.Value
rng.Borders.LineStyle = 1
Set rng = rng.Resize(rng.Rows.Count + 1).Offset(-1)
rng.AutoFilter 10, 1
rng.Columns(10).Hidden = True
Set rng = Nothing
End If
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
 
Upvote 0
hii các bạn xem thêm hộ mình cấu trúc hàm này với, mình thấy cũng ok rồi mà vẫn không chạy được và báo: sub or function not defined (và bị tô xanh ở chữ Range )
Cells(i, 16) = WorksheetFunction.SumProduct(Max(Sheet12.Range("A19:A500") = Cells(i, 1) * (Sheet12.Range("CG19:CG500"))))
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom