Chọn dãy số sao cho tổng dãy số đó gần bằng nhất với số cho trước. (1 người xem)

Liên hệ QC

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

thufpts

Thành viên hoạt động
Tham gia
6/8/12
Bài viết
157
Được thích
6
Giới tính
Nam
Nghề nghiệp
Bốc vác
Em chào các bác. em có bài toán này nhưng với khả năng của em không giải quyết được.
Em có một dãy số bất kỳ tại cột G. khi em nhập một giá trị bất kì tại ô màu đỏ ví dụ là 60
thì tại cột H nó sẽ tự động lấy giá trị ở cột G từ trên xuông (bắt buộc) sao cho tổng
ở vùng màu vàng của côt H phải thỏa mãn 1 trong các điều kiện sau
1. bằng ô màu đỏ tại cột H
2. lớn hơn ô màu đỏ tại cột H với giá trị gần nhất ví dụ 61 (tùy vào tổng của vùng màu vàng)
3. nhỏ hơn ô màu đỏ tại cột H với giá trị gần nhất ví dụ 59 (tùy vào tổng của vùng màu vàng).
Mỗi khi giá trị ở cột G thay đổi thì giá trị của vùng màu vàng tại cột H sẽ thay đổi theo.
tương tự khi nhập giá trị bất kì cho các cột I,J,K,L,M
Em rất mong các bác cao thủ giúp em với. em cám ơn các bác nhiều lắm.
 

File đính kèm

Em chào các bác. em có bài toán này nhưng với khả năng của em không giải quyết được.
Em có một dãy số bất kỳ tại cột G. khi em nhập một giá trị bất kì tại ô màu đỏ ví dụ là 60
thì tại cột H nó sẽ tự động lấy giá trị ở cột G từ trên xuông (bắt buộc) sao cho tổng
ở vùng màu vàng của côt H phải thỏa mãn 1 trong các điều kiện sau
1. bằng ô màu đỏ tại cột H
2. lớn hơn ô màu đỏ tại cột H với giá trị gần nhất ví dụ 61 (tùy vào tổng của vùng màu vàng)
3. nhỏ hơn ô màu đỏ tại cột H với giá trị gần nhất ví dụ 59 (tùy vào tổng của vùng màu vàng).
Mỗi khi giá trị ở cột G thay đổi thì giá trị của vùng màu vàng tại cột H sẽ thay đổi theo.
tương tự khi nhập giá trị bất kì cho các cột I,J,K,L,M
Em rất mong các bác cao thủ giúp em với. em cám ơn các bác nhiều lắm.

Bạn xem file đính kèm nhé.
 

File đính kèm

Upvote 0
Bạn điền số vào ô B2 rồi ấn nút Solve để tìm
 

File đính kèm

Upvote 0
Em chào các bác. em có bài toán này nhưng với khả năng của em không giải quyết được.
Em có một dãy số bất kỳ tại cột G. khi em nhập một giá trị bất kì tại ô màu đỏ ví dụ là 60
thì tại cột H nó sẽ tự động lấy giá trị ở cột G từ trên xuông (bắt buộc) sao cho tổng
ở vùng màu vàng của côt H phải thỏa mãn 1 trong các điều kiện sau
1. bằng ô màu đỏ tại cột H
2. lớn hơn ô màu đỏ tại cột H với giá trị gần nhất ví dụ 61 (tùy vào tổng của vùng màu vàng)
3. nhỏ hơn ô màu đỏ tại cột H với giá trị gần nhất ví dụ 59 (tùy vào tổng của vùng màu vàng).
Mỗi khi giá trị ở cột G thay đổi thì giá trị của vùng màu vàng tại cột H sẽ thay đổi theo.
tương tự khi nhập giá trị bất kì cho các cột I,J,K,L,M
Em rất mong các bác cao thủ giúp em với. em cám ơn các bác nhiều lắm.
Bài này dùng công thức cũng đơn giản mà.
Nếu lấy số nhỏ khi trị tuyệt đối của điều kiện 2 và 3 bằng nhau thì dùng công thức sau:
Mã:
=IF(SUM($G$4:G4)-G4/2<$H$2,G4,"")
Nếu lấy số lớn thì dùng công thức sau:
Mã:
=IF(SUM($G$4:G4)-G4/2<=$H$2,G4,"")
 
Upvote 0
Bạn xem file đính kèm nhé.
em cám ơn bác nhiều lắm. em còn 1 chút này nữa thôi mong bác chỉ giáo.
em muốn ô I2 khi nhập vào nó sẽ không lấy những giá trị của cột G đã có tại cột H mà lấy kế tiếp như file này được không bác.
mong bác giúp em

Capture.jpg
 

File đính kèm

Upvote 0
Bài này dùng công thức cũng đơn giản mà.
Nếu lấy số nhỏ khi trị tuyệt đối của điều kiện 2 và 3 bằng nhau thì dùng công thức sau:
Mã:
=IF(SUM($G$4:G4)-G4/2<$H$2,G4,"")
Nếu lấy số lớn thì dùng công thức sau:
Mã:
=IF(SUM($G$4:G4)-G4/2<=$H$2,G4,"")

em cám ơn bác. em cũng làm như bác rồi nhưng mà file nó có mấy nghìn dòng. đến lúc nó load nặng quá. vì vốn dĩ file em nó có quá nhiều link
 
Upvote 0
em cám ơn bác nhiều lắm. em còn 1 chút này nữa thôi mong bác chỉ giáo.
em muốn ô I2 khi nhập vào nó sẽ không lấy những giá trị của cột G đã có tại cột H mà lấy kế tiếp như file này được không bác.
mong bác giúp em

Quy luật nhập dữ liệu vào từ H2 -> M2 như nào bạn? Nhập liên tục và thứ tự từ H2 -> M2 hay là có trường hợp bỏ trống?
 
Upvote 0
Quy luật nhập dữ liệu vào từ H2 -> M2 như nào bạn? Nhập liên tục và thứ tự từ H2 -> M2 hay là có trường hợp bỏ trống?

bao gồm cả 2 bác à. Ví dụ nếu H2 bỏ trống mà I2 được nhập 10 thì dãy 1 2 3 4 sẽ chuyển sang cột I.
nếu cột J2 được nhập 20 thì dữ liệu sẽ lấy kế tiếp là 567 không lấy 1234 nữa vì dữ liệu 1234 đã có tại cột I. giống kiểu lấy lũy kế ấy. chỉ là đảm bảo sao cho dữ liệu thỏa mã 1 trong 3 điều kiện mà em đã nêu.
 
Lần chỉnh sửa cuối:
Upvote 0
bao gồm cả 2 bác à. Ví dụ nếu H2 bỏ trống mà I2 được nhập 10 thì dãy 1 2 3 4 sẽ chuyển sang cột I.
nếu cột J2 được nhập 20 thì dữ liệu sẽ lấy kế tiếp là 567 không lấy 1234 nữa. giống kiểu lấy lũy kế ấy. chỉ là đảm bảo sao cho dữ liệu thỏa mã 1 trong 3 điều kiện mà em đã nêu.
Như vầy nhé.
1/ H2 nhập 10, IJK2 bỏ trống, L2 nhập 20, M2 nhập 30, có trường hợp này không?
2/ Sau khi nhập xong từ H2-M2 đầy đủ, sau đó bạn xóa J2, K2 đi chẳng hạn thì có nhập lại L2, M2 không? Nếu không nhập lại thì có cần cập nhật lại kết quả ở cột L và M không?
3/ Sau khi nhập xong từ H2-M2 đầy đủ, sau đó bạn chỉ thay đổi giá trị tại 1 trong các ô H2->M2 thì kết quả cần cập nhật lại không?
Nhiều vấn đề lắm, bạn ngâm cứu từ từ...
 
Upvote 0
Như vầy nhé.
1/ H2 nhập 10, IJK2 bỏ trống, L2 nhập 20, M2 nhập 30, có trường hợp này không?
2/ Sau khi nhập xong từ H2-M2 đầy đủ, sau đó bạn xóa J2, K2 đi chẳng hạn thì có nhập lại L2, M2 không? Nếu không nhập lại thì có cần cập nhật lại kết quả ở cột L và M không?
3/ Sau khi nhập xong từ H2-M2 đầy đủ, sau đó bạn chỉ thay đổi giá trị tại 1 trong các ô H2->M2 thì kết quả cần cập nhật lại không?
Nhiều vấn đề lắm, bạn ngâm cứu từ từ...

Thưa bác. không hiểu sao bác nói đúng hết. tất cả các trường hợp đều có thể sảy ra.
và kể cả dữ liệu ở cột G thay đổi thì dữ liệu cũng cần cập nhật lại bác ạ.
em không biết cái này có làm khó được bác không nhưng đối với em là cái vực sâu rồi chẳng biết nên làm kiểu gì.
mong bác chỉ cho.
 
Upvote 0
Thưa bác. không hiểu sao bác nói đúng hết. tất cả các trường hợp đều có thể sảy ra.
và kể cả dữ liệu ở cột G thay đổi thì dữ liệu cũng cần cập nhật lại bác ạ.
em không biết cái này có làm khó được bác không nhưng đối với em là cái vực sâu rồi chẳng biết nên làm kiểu gì.
mong bác chỉ cho.

Bạn để ý ở dưới cuối trang web:
Hiện có 9 người đang xem đề tài này...
Có người đang xem giúp bài cho bạn đó. Không phải lo lắng ha!
 
Upvote 0
Bạn để ý ở dưới cuối trang web:

Có người đang xem giúp bài cho bạn đó. Không phải lo lắng ha!

Bác không giúp em nữa sao..buồn quá Nhưng dù sao bác cũng giúp em quá nhiều rồi.
Trân trọng cám ơn bác rất nhiều.
chúc bác luôn vui vẻ.
 
Upvote 0
Bác không giúp em nữa sao..buồn quá Nhưng dù sao bác cũng giúp em quá nhiều rồi.
Trân trọng cám ơn bác rất nhiều.
chúc bác luôn vui vẻ.

Oh hay. Tôi có nói là không xem giúp bạn nữa đâu.
Bạn để ý dưới cuối trang web mà có cái nick nào xanh xanh đậm đậm trở lên là cứ yên tâm ha.
 
Upvote 0
bạn xem thử có ổn không

Về cơ bản nó đã ổn theo dữ liệu trả về lũy kế. Nhưng về phần tính tổng vẫn không ổn bác ạ.
Dãy được tính tổng nó không sát với kết quả cho trước. chẳng hạn nhập 10 vào I2
Nó phải trả về dãy 4 và 5 tổng là 9 thì mới sát nhất bác ạ. Chứ nó chỉ trả về 4 thì chênh lệch quá nhiều
Bác xem giúp em với.


Capture.jpg
 
Upvote 0
Về cơ bản nó đã ổn theo dữ liệu trả về lũy kế. Nhưng về phần tính tổng vẫn không ổn bác ạ.
Dãy được tính tổng nó không sát với kết quả cho trước. chẳng hạn nhập 10 vào I2
Nó phải trả về dãy 4 và 5 tổng là 9 thì mới sát nhất bác ạ. Chứ nó chỉ trả về 4 thì chênh lệch quá nhiều
Bác xem giúp em với.
do không đọc yêu cầu của bạn nên hiểu nhầm, bạn sửa lại code sub GPE
Mã:
Sub GPE()
Dim i As Long, t1 As Long, t2 As Long, dk As Long
Dim LastR As Long, LastC As Integer, Darr(), Sarr(), Arr()
LastR = Sheet1.Range("G65000").End(xlUp).Row
Darr = Sheet1.Range("G4:G" & LastR + 1).Value
Sarr = Sheet1.Range("H2:M2").Value
LastC = UBound(Sarr, 2)
ReDim Arr(1 To UBound(Darr), 1 To LastC + 1)
Range("H4:M" & LastR).ClearContents
For j = 1 To LastC
    If Sarr(1, j) > 0 Then
    dk = Sarr(1, j)
    t1 = 0
    For i = 1 To UBound(Darr) - 1
        If Arr(i, LastC + 1) <> 123 Then
            t1 = t1 + Darr(i, 1)
            If t1 - Darr(i, 1) / 2 <= dk Then
                Arr(i, j) = Darr(i, 1): Arr(i, LastC + 1) = 123
            End If
        End If
    Next i
    End If
Next j
Sheet1.Range("H4").Resize(UBound(Arr) - 1, UBound(Arr, 2) - 1) = Arr
End Sub
 
Upvote 0
do không đọc yêu cầu của bạn nên hiểu nhầm, bạn sửa lại code sub GPE
Mã:
Sub GPE()
Dim i As Long, t1 As Long, t2 As Long, dk As Long
Dim LastR As Long, LastC As Integer, Darr(), Sarr(), Arr()
LastR = Sheet1.Range("G65000").End(xlUp).Row
Darr = Sheet1.Range("G4:G" & LastR + 1).Value
Sarr = Sheet1.Range("H2:M2").Value
LastC = UBound(Sarr, 2)
ReDim Arr(1 To UBound(Darr), 1 To LastC + 1)
Range("H4:M" & LastR).ClearContents
For j = 1 To LastC
    If Sarr(1, j) > 0 Then
    dk = Sarr(1, j)
    t1 = 0
    For i = 1 To UBound(Darr) - 1
        If Arr(i, LastC + 1) <> 123 Then
            t1 = t1 + Darr(i, 1)
            If t1 - Darr(i, 1) / 2 <= dk Then
                Arr(i, j) = Darr(i, 1): Arr(i, LastC + 1) = 123
            End If
        End If
    Next i
    End If
Next j
Sheet1.Range("H4").Resize(UBound(Arr) - 1, UBound(Arr, 2) - 1) = Arr
End Sub

Quá hoàn hảo luôn. Trân trong cám ơn các bác.
 
Upvote 0
Web KT

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

Back
Top Bottom