Nhờ code VBA: cách lấy kết quả nhiều lần tính từ 1 ô (2 người xem)

  • Thread starter Thread starter Kienpkp
  • Ngày gửi Ngày gửi
Liên hệ QC

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

Tôi tuân thủ nội quy khi đăng bài

Kienpkp

Thành viên mới
Tham gia
7/10/24
Bài viết
3
Được thích
0
Xin giúp đỡ code hoặc cách nào để mình có thể làm như sau: (Theo file đính kèm)
+ Ô F6 sẽ có kết quả sau mỗi lần tính từ 1 tới n,
+ Lần tính 1-> muốn lấy kết quả về ô B8, Lần tính 2 -> lấy kết quả về ô B9, Lần tính 3 -> lấy kết quả về ô B10 ....
(Cứ mỗi lần tính, kết quả tự động được lấy về các ô theo thứ tự từ B8 -> B9 -> B10 _. ... -> n)
Xin chân thành cảm ơn!
 

File đính kèm

Xin giúp đỡ code hoặc cách nào để mình có thể làm như sau: (Theo file đính kèm)
+ Ô F6 sẽ có kết quả sau mỗi lần tính từ 1 tới n,
+ Lần tính 1-> muốn lấy kết quả về ô B8, Lần tính 2 -> lấy kết quả về ô B9, Lần tính 3 -> lấy kết quả về ô B10 ....
(Cứ mỗi lần tính, kết quả tự động được lấy về các ô theo thứ tự từ B8 -> B9 -> B10 _. ... -> n)
Xin chân thành cảm ơn!
lần 2 ,3,.... thì F6 có thay đổi theo không?
nếu không thay đổi theo thì chỉ là copy F6 và paste value tiếp xuống dọc theo cột B (b8, B9,....)
nếu đúng vậy thì code có thể là thế này
Mã:
Sub PasteNhieuLan()
    Sheet1.Range("B" & Sheet1.Range("B" & Rows.Count).End(xlUp).Row + 1).Formula = "=$F$6"
End Sub
 
Upvote 0
lần 2 ,3,.... thì F6 có thay đổi theo không?
nếu không thay đổi theo thì chỉ là copy F6 và paste value tiếp xuống dọc theo cột B (b8, B9,....)
nếu đúng vậy thì code có thể là thế này
Mã:
Sub PasteNhieuLan()
    Sheet1.Range("B" & Sheet1.Range("B" & Rows.Count).End(xlUp).Row + 1).Formula = "=$F$6"
End Sub
Cảm ơn bạn nhé.
F6 thay đổi theo từng lần tính đó bạn.
Như ví dụ mình muốn làm trong file này (đính kèm):
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn bạn nhé.
F6 thay đổi theo từng lần tính đó bạn.
Như ví dụ mình muốn làm trong file này (đính kèm):
Kết quả ô F6 hoàn toàn tùy thuộc vào các sô ở các ô C3:C6.
Do vậy thì hỏi bạn là :
1/Nếu như vậy thì các số của các ô C3:C6 được lấy từ đâu vào : nhập tay các số tùy ý? , hay là kết quả của tính toán tự link vào?, hay là có quy luật gì?
2/Và n lần vậy thì n bằng bao nhiêu là tối đa và n này được tính toán hay cũng là số tùy thích bất kỳ?
Có phải bạn muốn thế này : khi nhập xong C3:C6 lúc này F6 đã có kết quả và mong muốn là kết quả này được tự động gán vào dòng cuối +1 của cột B.?
Hàng loạt số 0 phía sau của F6 có cần thiết không?
Tham khảo code sau:
code bắt sự kiện trong sheet1
Mã:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("C6")) Is Nothing Then
    If Application.WorksheetFunction.CountIf(Range("C3:C6"), "<>") = 4 Then
            Call CopyPaste
    End If
End If

End Sub
Code trong module1
Mã:
Option Explicit

Sub CopyPaste()
Dim Lr&
With Sheet1
    Lr = .Range("B" & Rows.Count).End(xlUp).Row + 1
    .Range("F6").Copy
    .Range("B" & Lr).Select
    Selection.PasteSpecial Paste:=xlPasteValues
    .Range("C3:C6").ClearContents
End With

End Sub
Hãy nhập lần lượt từ trên xuống trong vùng C3:C6, kết thúc bằng Enter hoặc nút mĩu tên để có kết quả. Sau đó C3:C6 sẽ được xóa để tiếp tục nhập cho lần tiếp theo.
Xem file đính kèm.
 

File đính kèm

Upvote 0
Dùng một cái Name để chứa số lần thay đổi F6. (Thế nào là "một lần thay đổi" thì bạn phải định nghĩa lấy)
Cứ mỗi lần thay thì dò số này, +1 và mò dòng trên cột B, chép vào.
Nhớ đổi trị của Name trước khi thoát.
 
Upvote 0
Kết quả ô F6 hoàn toàn tùy thuộc vào các sô ở các ô C3:C6.
Do vậy thì hỏi bạn là :
1/Nếu như vậy thì các số của các ô C3:C6 được lấy từ đâu vào : nhập tay các số tùy ý? , hay là kết quả của tính toán tự link vào?, hay là có quy luật gì?
2/Và n lần vậy thì n bằng bao nhiêu là tối đa và n này được tính toán hay cũng là số tùy thích bất kỳ?
Có phải bạn muốn thế này : khi nhập xong C3:C6 lúc này F6 đã có kết quả và mong muốn là kết quả này được tự động gán vào dòng cuối +1 của cột B.?
Hàng loạt số 0 phía sau của F6 có cần thiết không?
Tham khảo code sau:
code bắt sự kiện trong sheet1
Mã:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("C6")) Is Nothing Then
    If Application.WorksheetFunction.CountIf(Range("C3:C6"), "<>") = 4 Then
            Call CopyPaste
    End If
End If

End Sub
Code trong module1
Mã:
Option Explicit

Sub CopyPaste()
Dim Lr&
With Sheet1
    Lr = .Range("B" & Rows.Count).End(xlUp).Row + 1
    .Range("F6").Copy
    .Range("B" & Lr).Select
    Selection.PasteSpecial Paste:=xlPasteValues
    .Range("C3:C6").ClearContents
End With

End Sub
Hãy nhập lần lượt từ trên xuống trong vùng C3:C6, kết thúc bằng Enter hoặc nút mĩu tên để có kết quả. Sau đó C3:C6 sẽ được xóa để tiếp tục nhập cho lần tiếp theo.
Xem file đính kèm.
Cảm ơn bạn rất nhiều, để mình thử nhé.
Bài đã được tự động gộp:

Dùng một cái Name để chứa số lần thay đổi F6. (Thế nào là "một lần thay đổi" thì bạn phải định nghĩa lấy)
Cứ mỗi lần thay thì dò số này, +1 và mò dòng trên cột B, chép vào.
Nhớ đổi trị của Name trước khi thoát.
VBA mình đang gà quá, nhưng vẫn cảm ơn bạn đã chỉ cách, mình tìm tòi thêm
 
Upvote 0
Web KT

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

Back
Top Bottom