Hỏi Cách chuyển 1 hàm công thức cho toàn bộ 1 cột, bằng cách dùng VBA (2 người xem)

Liên hệ QC

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

chidung2009

Thành viên hoạt động
Tham gia
12/9/12
Bài viết
123
Được thích
8
Tại cột P7 có hàm
=IF(N7="";"";IF($C$4=1;INDEX(DanSu;MATCH(N7;DS_TK;1);6);INDEX(DanSu;MATCH(N7;DS_GQ;1);6)))

Giờ minh muốn chuyển hàm này cho toàn bộ cột P, sang VBA thì phải làm thế nào?

Trong đó cột $C$4=1 là cố định (Sau này sẽ có hàm IF ở đây)
Cột N7 thay đổ tăng dần từ trên xuống

Mình mới tìm hiều VBA nên con gà lắm. Mong anh chị giúp đỡ em với
 
Tại cột P7 có hàm
=IF(N7="";"";IF($C$4=1;INDEX(DanSu;MATCH(N7;DS_TK;1);6);INDEX(DanSu;MATCH(N7;DS_GQ;1);6)))

Giờ minh muốn chuyển hàm này cho toàn bộ cột P, sang VBA thì phải làm thế nào?

Trong đó cột $C$4=1 là cố định (Sau này sẽ có hàm IF ở đây)
Cột N7 thay đổ tăng dần từ trên xuống

Mình mới tìm hiều VBA nên con gà lắm. Mong anh chị giúp đỡ em với
Bạn sử dụng chức năng Record Macro rồi xem kết quả, bạn sẽ biết được cách chuyển từ công thức trên sheet thành lệnh VBA ra sao. Tôi đã học VBA bằng cách này đấy.
 
Lần chỉnh sửa cuối:
QL an.xls Do mình tải nhầm file lên, giờ minh tải lại mong anh chị giúp minh với
 
QL an.xls Do mình tải nhầm file lên, giờ minh tải lại mong anh chị giúp minh với.
 
Cảm ơn bạn để minh tìm hiểu thêm
 
Bạn sử dụng chức năng Record Macro rồi xem kết quả, bạn sẽ biết được cách chuyển từ công thức trên sheet thành lệnh VBA ra sao. Tôi đã học VBA bằng cách này đấy.

Mình đã làm như bạn nói nhưng khi chạy Mudun nó không ra thế nhỉ. bạn giúp mình với


Sub TenDuongSu()
'
' TenDuongSu Macro
' Macro recorded 12/08/2016 by phamchidung@hotmail.com
'

'
ActiveCell.FormulaR1C1 = _
"=IF(RC[-2]="""","""",IF(R4C3=1,INDEX(DanSu,MATCH(RC[-2],DS_TK,1),6),INDEX(DanSu,MATCH(RC[-2],DS_GQ,1),6)))"
Range("P7").Select
Selection.AutoFill Destination:=Range("P7:P999"), Type:=xlFillDefault
Range("P7:P329").Select
End Sub
 
chạy thử code thu bằng Macro, có sửa công thứ cho gọn

Sub Macro1()
Range("P7").Select
ActiveCell.FormulaR1C1 = _
"=IF(RC14="""","""",INDEX(DanSu,MATCH(RC14,IF(R4C3=1,DS_TK,DS_GQ),),COLUMN()-10))"
Range("P7").Select
Selection.AutoFill Destination:=Range("P7:V7"), Type:=xlFillDefault
Range("P7:V7").Select
Selection.AutoFill Destination:=Range("P7:V999"), Type:=xlFillDefault
Range("P7:V17").Select
End Sub
 
Có cách nào làm ẩn công thức hàm đi khi chạy macro. Khi nào có dữ liệu thì nó mới đưa ra dữ liệu
 
Có cách nào làm ẩn công thức hàm đi khi chạy macro. Khi nào có dữ liệu thì nó mới đưa ra dữ liệu. Bạn làm luôn code cho minh học hỏi vs
 
Mình đã làm như bạn nói nhưng khi chạy Mudun nó không ra thế nhỉ. bạn giúp mình với


Sub TenDuongSu()
'
' TenDuongSu Macro
' Macro recorded 12/08/2016 by phamchidung@hotmail.com
'

'
ActiveCell.FormulaR1C1 = _
"=IF(RC[-2]="""","""",IF(R4C3=1,INDEX(DanSu,MATCH(RC[-2],DS_TK,1),6),INDEX(DanSu,MATCH(RC[-2],DS_GQ,1),6)))"
Range("P7").Select
Selection.AutoFill Destination:=Range("P7:P999"), Type:=xlFillDefault
Range("P7:P329").Select
End Sub
Thử thế này xem
Mã:
Sub Macro1()
Range("P7").Formula = "=IF(N7=" & """"",""""" & ",IF($C$4=1,INDEX(DanSu,MATCH(N7,DS_TK,1),6),INDEX(DanSu,MATCH(N7,DS_GQ,1),6)))"
Range("P7:P329").FillDown
End Sub
 
Có cách nào làm ẩn công thức hàm đi khi chạy macro. Khi nào có dữ liệu thì nó mới đưa ra dữ liệu
bạn dùng vòng lập For ... Next để copy công thức cho từng dòng
dùng hàm if ĐK then ... để xác định có dữ liệu thì copy nếu sai thì cho ="" , hoặc tìm đọc trên diễn đàn cách xác định dòng cuối của For ...Next để copy
Nếu biết dòng cuối thì bạn dùng AutoFill cho lẹ
 
Có cách nào làm ẩn công thức hàm đi khi chạy macro. Khi nào có dữ liệu thì nó mới đưa ra dữ liệu. Bạn làm luôn code cho minh học hỏi vs
Bạn thêm đoạn này:
PHP:
    Dim LR As Long
    LR = Range("O" & Rows.Count).End(3).Row
     ' Code bài #7
 Range("p7:v" & LR).Value = Range("p7:v" & LR).Value
 
Có cách nào làm ẩn công thức hàm đi khi chạy macro. Khi nào có dữ liệu thì nó mới đưa ra dữ liệu. Bạn làm luôn code cho minh học hỏi vs
Bạn cho value là đc
Mã:
Sub Macro1()
Range("P7").Formula = "=IF(N7=" & """"",""""" & ",IF($C$4=1,INDEX(DanSu,MATCH(N7,DS_TK,1),6),INDEX(DanSu,MATCH(N7,DS_GQ,1),6)))"
Range("P7:P329").FillDown
[COLOR=#ff0000]Range("P7:P329").Value = Range("P7:P329").Value[/COLOR]
End Sub
 
Web KT

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

Back
Top Bottom