Code tự động điền dữ liệu trong khoảng cho phép (1 người xem)

Liên hệ QC

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

Hoàng Nhật Phương

Thành viên gắn bó
Tham gia
5/11/15
Bài viết
1,895
Được thích
1,219
Xin chào các bạn,
Phiền các bạn tạo giúp tôi một đoạn code tự động điền dữ liệu theo mong muốn trong file đính kèm với ạ?
Xin cảm ơn các bạn rất nhiều.
 

File đính kèm

Macro của bạn đây & mình tin là bạn biết cho nó chạy:
PHP:
Option Explicit
Sub DienSoTuDong()
 Dim Tmp As Double, Rw As Long, Col As Byte
 Randomize
 For Rw = 14 To 19 Step 2   'Chay Theo Ḍòng'
    For Col = 4 To 13       'Chay Theo Cot'
        Tmp = Rnd() / 10
        Cells(Rw, Col).Value = Tmp * (-1) ^ (1 + 9 * Rnd() \ 1) + Choose(Rw - 13, 10, 13, 15, 17, 18)
    Next Col
 Next Rw
End Sub
 
Upvote 0
Macro của bạn đây & mình tin là bạn biết cho nó chạy:
PHP:
Option Explicit
Sub DienSoTuDong()
 Dim Tmp As Double, Rw As Long, Col As Byte
 Randomize
 For Rw = 14 To 19 Step 2   'Chay Theo Ḍòng'
    For Col = 4 To 13       'Chay Theo Cot'
        Tmp = Rnd() / 10
        Cells(Rw, Col).Value = Tmp * (-1) ^ (1 + 9 * Rnd() \ 1) + Choose(Rw - 13, 10, 13, 15, 17, 18)
    Next Col
 Next Rw
End Sub

Woa! (^_-)!!! Thật kỳ diệu bạn ah.
Tôi biết cho chạy bạn ạ (đó cũng là điều duy nhất mà tôi biết làm) : tạo một cái nút rồi chuột phải vào nút đó sau đó assing macro rồi pase đoạn code vào và nhấn đúng không bạn haha...
Cảm ơn bạn thật là nhiều, tôi chúc bạn nhiều sức khỏe - nhiều niềm vui!!
A! đồng ý kết bạn với tôi Bạn nhé! hihihi :-=
 
Upvote 0
Macro của bạn đây & mình tin là bạn biết cho nó chạy:
PHP:
Option Explicit
Sub DienSoTuDong()
 Dim Tmp As Double, Rw As Long, Col As Byte
 Randomize
 For Rw = 14 To 19 Step 2   'Chay Theo Ḍòng'
    For Col = 4 To 13       'Chay Theo Cot'
        Tmp = Rnd() / 10
        Cells(Rw, Col).Value = Tmp * (-1) ^ (1 + 9 * Rnd() \ 1) + Choose(Rw - 13, 10, 13, 15, 17, 18)
    Next Col
 Next Rw
End Sub

Ah bạn cho hỏi vùng màu vàng trong file đính kèm liên quan đến các chỉ số nào trong đoạn code vậy ạ.
Giả sử trong trường hợp tôi muốn sửa đổi dữ liệu vùng màu vàng di chuyển xa hơn cái bảng dữ liệu thêm vài cột nữa chẳng hạn thì tôi dựa vào đâu để xử lý ạ.
Phiền bạn code thể giải thích kỹ hơn 1 chút các dòng code còn lại như 2 dòng bạn đã chú thích được không ạ.
Cảm ơn bạn thật nhiều.
 
Lần chỉnh sửa cuối:
Upvote 0
Ah bạn cho hỏi vùng màu vàng trong file đính kèm liên quan đến các chỉ số nào trong đoạn code vậy ạ.
Giả sử trong trường hợp tôi muốn sửa đổi dữ liệu vùng màu vàng di chuyển xa hơn cái bảng dữ liệu thêm vài cột nữa chẳng hạn thì tôi dựa vào đâu để xử lý ạ.
Phiền bạn code thể giải thích kỹ hơn 1 chút các dòng code còn lại như 2 dòng bạn đã chú thích được không ạ.
Cảm ơn bạn thật nhiều.
Code đó chưa lấy dữ liệu vùng màu vàng. Thử code này xem sao.
PHP:
Sub DienSo()
Dim i As Long, j As Long, Min As Double, Tmp As Double
Randomize
For i = 14 To 19 Step 2
    Min = Cells(i, 15).Value + Cells(i + 1, 16).Value
    Tmp = Cells(i, 16).Value - Cells(i + 1, 16).Value
    For j = 4 To 13
        Cells(i, j).Value = Min + Tmp * Rnd()
    Next
Next
End Sub
 
Upvote 0
Code đó chưa lấy dữ liệu vùng màu vàng. Thử code này xem sao.
PHP:
Sub DienSo()
Dim i As Long, j As Long, Min As Double, Tmp As Double
Randomize
For i = 14 To 19 Step 2
    Min = Cells(i, 15).Value + Cells(i + 1, 16).Value
    Tmp = Cells(i, 16).Value - Cells(i + 1, 16).Value
    For j = 4 To 13
        Cells(i, j).Value = Min + Tmp * Rnd()
    Next
Next
End Sub

Code này tôi có thể tùy biến theo ý mình được rồi.
Cảm ơn bạn nhiều lắm!
 
Lần chỉnh sửa cuối:
Upvote 0
Ah! Tôi hiểu rồi, tôi xin lỗi có thể ví dụ minh họa tối gửi kèm hơi sơ sài và đơn giản nên khiến bạn hiểu nhầm
Dữ liệu thực tế của tôi nhiều hơn vi dụ minh họa và vùng màu vàng các dung sai cũng không hoàn toàn giống nhau bạn ah.
Ý tôi là làm sao có thê dựa vào vùng màu vàng trong file đính kèm để dữ liệu tự động cập nhật vào bảng bên đó bạn ah.
Bạn xem lại file kèm bạn nhé.
Hix, phiền các bạn thêm một lần nữa ạ.
Xin cảm ơn các bạn rất nhiều

Ủa. Code bài #5 không xài được sao bạn?
 
Upvote 0
Ủa. Code bài #5 không xài được sao bạn?

Tôi xin lỗi, bạn trả lời nhanh quá!Tôi gởi bài xong thì mới thấy bài của bạn, tôi không xóa được nữa.
Khi xem bài 5 xong tôi không còn gì để thắc mắc nữa.
Các bạn giỏi quá, lần nào tôi gặp khó khăn đều được các bạn nhiệt tình giúp đỡ.
Xin cảm ơn bạn nhiều nhé!!
 
Lần chỉnh sửa cuối:
Upvote 0
các sự huynh cho em hỏi. em ở cột A1 của em là phép tính, bây giờ em muốn ô B1 là kết quả của phép tính của ô A1. các huynh cho em xin code với ạ. em cảm ơn nhiều
 
Upvote 0
các sự huynh cho em hỏi. em ở cột A1 của em là phép tính, bây giờ em muốn ô B1 là kết quả của phép tính của ô A1. các huynh cho em xin code với ạ. em cảm ơn nhiều

Bạn bị lỗi xen ngang bài vì đề tài của bạn không trùng với đề tài mọi người đang thảo luận!


,,,,,,,,,,,,,,,,,,,,,,,,,

PHP:
Tmp = Rnd() / 10
Lấy giá trị từ hàm ngẫu cho (từ 0.00000001 - 0.99999999999) đem chia cho 10; Lúc đó số nhận được trong khoảng (0.010000001- 0.099999999999)
PHP:
        Cells(Rw, Col).Value = Tmp * (-1) ^ (1 + 9 * Rnd() \ 1) + Choose(Rw - 13, 10, 13, 15, 17, 18)
Biểu thức: (-1) ^ (1 + 9 * Rnd() \ 1) sẽ cho ta trị -1 hay 1 một cách ngẫu nhiên
Biểu thức này được đem nhân với trị trong biến Tmp (như trên ta đã xét)

Hàm Choose(Rw - 13, 10, 13, 15, 17, 18) này cũng giống như trong Excel thôi;
Nhưng ở đây các trị 13 & 17 chen vô để lắp chổ trống mà thôi; Còn tại sao fải làm vậy thì ta fải xét đến vòng lặp theo bước nhãy cùa Rw
 
Upvote 0
PHP:
Tmp = Rnd() / 10
Lấy giá trị từ hàm ngẫu cho (từ 0.00000001 - 0.99999999999) đem chia cho 10; Lúc đó số nhận được trong khoảng (0.010000001- 0.099999999999)
PHP:
        Cells(Rw, Col).Value = Tmp * (-1) ^ (1 + 9 * Rnd() \ 1) + Choose(Rw - 13, 10, 13, 15, 17, 18)
Biểu thức: (-1) ^ (1 + 9 * Rnd() \ 1) sẽ cho ta trị -1 hay 1 một cách ngẫu nhiên
Biểu thức này được đem nhân với trị trong biến Tmp (như trên ta đã xét)

Hàm Choose(Rw - 13, 10, 13, 15, 17, 18) này cũng giống như trong Excel thôi;
Nhưng ở đây các trị 13 & 17 chen vô để lắp chổ trống mà thôi; Còn tại sao fải làm vậy thì ta fải xét đến vòng lặp theo bước nhãy cùa Rw

Cảm ơn bạn nhiều vì đã quay trở lại.
Nói thật lòng đúng là bạn có giải thích rất chi tiết nhưng có thể do kiến thức của tôi quá kém nên tôi có đọc lại vài lần nhưng vẫn thấy còn rất ngu ngơ,gọi là chỉ có thể hình dung sơ sơ một chút được thuật toán của bạn thôi.
Giải thích kiểu này không hề thừa đối với những người kém cỏi như tôi.
Rất mong sau này tôi lại được bạn tận tình chỉ bảo thêm ạ.
Trân trọng !
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn bị lỗi xen ngang bài vì đề tài của bạn không trùng với đề tài mọi người đang thảo luận!


,,,,,,,,,,,,,,,,,,,,,,,,,


PHP:
Tmp = Rnd() / 10
Lấy giá trị từ hàm ngẫu cho (từ 0.00000001 - 0.99999999999) đem chia cho 10; Lúc đó số nhận được trong khoảng (0.010000001- 0.099999999999)
PHP:
        Cells(Rw, Col).Value = Tmp * (-1) ^ (1 + 9 * Rnd() \ 1) + Choose(Rw - 13, 10, 13, 15, 17, 18)
Biểu thức: (-1) ^ (1 + 9 * Rnd() \ 1) sẽ cho ta trị -1 hay 1 một cách ngẫu nhiên
Biểu thức này được đem nhân với trị trong biến Tmp (như trên ta đã xét)

Hàm Choose(Rw - 13, 10, 13, 15, 17, 18) này cũng giống như trong Excel thôi;
Nhưng ở đây các trị 13 & 17 chen vô để lắp chổ trống mà thôi; Còn tại sao fải làm vậy thì ta fải xét đến vòng lặp theo bước nhãy cùa Rw
mình xin lỗi. các huynh biết giúp đệ với
 

File đính kèm

Upvote 0
Xin chào tất cả các bạn,
Các bạn sửa giúp tôi đoạn code của bài #5 cho phù hợp với dữ liệu trong file đính kèm này với ạ
Xin cảm ơn các bạn rất nhiều
 
Lần chỉnh sửa cuối:
Upvote 0
Tôi loay hoay suốt mà không được, không thể ra được kết quả như mong muốn.
Các bạn xem file kèm sửa lại giúp tôi với ạ.
Xin cảm ơn rất nhiều!
 
Lần chỉnh sửa cuối:
Upvote 0
Xin chào tất cả các bạn,
Các bạn sửa giúp tôi đoạn code của bài #5 cho phù hợp với dữ liệu trong file đính kèm này với ạ
Xin cảm ơn các bạn rất nhiều

Xin lỗi các bạn ạ.
Tôi có đặt câu hỏi trong file kèm nói đến vùng màu vàng nhưng trong file không có vùng nào màu vàng cả. hix thành thật xin lỗi tôi lấy file ở bài 1 mà quên không để ý nội dung câu hỏi.
Tôi xin phép up file mới lên ạ, phiền các bạn xem giúp ạ.
Xin cảm ơn
 

File đính kèm

Upvote 0
Xin lỗi các bạn ạ.
Tôi có đặt câu hỏi trong file kèm nói đến vùng màu vàng nhưng trong file không có vùng nào màu vàng cả. hix thành thật xin lỗi tôi lấy file ở bài 1 mà quên không để ý nội dung câu hỏi.
Tôi xin phép up file mới lên ạ, phiền các bạn xem giúp ạ.
Xin cảm ơn

Không biết đúng ý bạn không...

Mã:
Sub DienSo()    Dim i As Long, j As Long, Min, Max As Double, Tmp As Double
    Randomize
    For i = 14 To 16
        Min = Cells(i, 16).Value
        Max = Cells(i, 15).Value
        For j = 4 To 13
            Cells(i, j).Value = Application.RandBetween(Min * 100# - 10, Max * 100#) / 100#
        Next
    Next
End Sub
 
Upvote 0
Xin lỗi các bạn ạ.
Tôi có đặt câu hỏi trong file kèm nói đến vùng màu vàng nhưng trong file không có vùng nào màu vàng cả. hix thành thật xin lỗi tôi lấy file ở bài 1 mà quên không để ý nội dung câu hỏi.
Tôi xin phép up file mới lên ạ, phiền các bạn xem giúp ạ.
Xin cảm ơn

Chạy thử sub này cho file bài #15 của bạn xem sao.
PHP:
Sub DienSo()
Dim sArr(), dArr(), i As Long, j As Long
Dim Mn As Double, Mx As Double, Tmp As Double
sArr = Range("O14", Range("P14").End(xlDown)).Value
ReDim dArr(1 To UBound(sArr, 1), 1 To 10)
Randomize
For i = 1 To UBound(sArr)
    Mx = sArr(i, 1): Mn = sArr(i, 2)
    For j = 1 To 10
        Do
            Tmp = Mn + Rnd
            dArr(i, j) = Tmp
            If Tmp < Mx Then Exit Do
        Loop
    Next j
Next i
Range("D14:M14").Resize(i - 1) = dArr
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Hihi,Xin cảm ơn hai bạn patygate591 và Ba Tê rất nhiều ạ.
Tuy 2 bài trả lời có khác nhau nhưng kết quả đều ra đúng ý tôi muốn rồi.
Code bài 17 thật là khủng khiếp: bài 16 tôi cũng không hiểu gì luôn rồi sang đến bài 17 thì vấn đề không hiểu lại tăng thêm rất nhiều lần không biết nếu tôi mà học thì đến bao giờ tôi mới có thể hiểu được các đoạn code này ^^ ..
Một lần nữa xin cảm ơn các bạn rất nhiều.

 
Upvote 0
Xin lỗi các bạn ạ.
Tôi có đặt câu hỏi trong file kèm nói đến vùng màu vàng nhưng trong file không có vùng nào màu vàng cả. hix thành thật xin lỗi tôi lấy file ở bài 1 mà quên không để ý nội dung câu hỏi.
Tôi xin phép up file mới lên ạ, phiền các bạn xem giúp ạ.
Xin cảm ơn
Bạn thử code này xem
PHP:
Sub DienSo()
Dim VungKetQua, KetQua, KhoangGiaTri
Set VungKetQua = Range("D14:M16") 'Sua lai theo du lieu thuc te
KhoangGiaTri = Range("O14:P16").Value 'Sua lai theo du lieu thuc te
VungKetQua.ClearContents
ReDim KetQua(1 To VungKetQua.Rows.Count, 1 To VungKetQua.Columns.Count)
Randomize
For i = 1 To UBound(KetQua, 1)
    For j = 1 To UBound(KetQua, 2)
        KetQua(i, j) = KhoangGiaTri(i, 2) + Rnd * (KhoangGiaTri(i, 1) - KhoangGiaTri(i, 2))
    Next
Next
VungKetQua.Value = KetQua
End Sub
 
Upvote 0
Hihi,Xin cảm ơn hai bạn patygate591 và Ba Tê rất nhiều ạ.
Tuy 2 bài trả lời có khác nhau nhưng kết quả đều ra đúng ý tôi muốn rồi.
Code bài 17 thật là khủng khiếp: bài 16 tôi cũng không hiểu gì luôn rồi sang đến bài 17 thì vấn đề không hiểu lại tăng thêm rất nhiều lần không biết nếu tôi mà học thì đến bao giờ tôi mới có thể hiểu được các đoạn code này ^^ ..
Một lần nữa xin cảm ơn các bạn rất nhiều.

Nếu đã đúng ý bạn thì chắc là tôi hiểu sai ý bạn rồi.
Bài #16 bạn thử với dữ liệu Min = 100, Max = 100
Bài #17 bạn thử với dữ liệu Min = 1, Max = 100
 
Upvote 0
Web KT

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

Back
Top Bottom