Hỗ trợ tìm vị trí các số hạng đã cho lớn hơn số tổng (bằng công thức)

Liên hệ QC

Tình nghĩa giang hồ

Thanh sơn bất cải, lục thủy trường lưu
Tham gia
29/9/20
Bài viết
330
Được thích
429
Chào anh chị em có vấn đề này nhờ anh chị giúp đỡ.

Dữ liệu của em chỉ có 2 cột là cột J và cột O (nói đúng hơn là giá trị của O2)
Kết quả mong muốn của em là cột P. Cột A là không có nhé anh chị, em đánh vị trí cột A để cho biết vị trí thôi. Cột A này anh chị nếu dùng để tham chiếu Vlookup thì có thể dời sang cột Q, cột R....
Bài này thì nếu làm 1 công thức được thì hay quá, không thì anh chị có thể dùng nhiều cột phụ (nhưng cột phụ thì dùng từ cột Q trở về sau, vì phía trước đã có dữ liệu). Chỉ cần cột phụ cuối cùng có kết quả như kết quả mong muốn của em là được.
Cột A​
Cột J​
Cột O​
Cột P
Vị trí​
Payment Amount​
Assigned​
Kết quả mong muốn
0​
120​
155​
7
1​
130​
6
2​
25-​
5
3​
35​
4​
160​
5​
80​
6​
25​
7​
65​
8​
60-​
9​
35-​
10​
Quy luật như sau:
Khách hàng nợ 155 ngàn, cột J là các tờ hoá đơn. Phía dưới là hoá đơn cũ nhất.
Ở đây: với 155 ngàn ta sẽ xoá nợ tờ hoá đơn vị trí 7, xoá nợ tờ hoá đơn vị trí thứ 6, và xoá nợ một phần tờ hoá đơn thứ 5. Vì vậy kết quả là 7, 6, 5.
Tức là tìm bao nhiêu số hạng từ dưới đếm lên để lớn hơn giá trị của cột O2 là được. rồi ghi ra vị trí.

Bài này em đã được sự hỗ trợ của anh Smod ptm0412 và anh Beb021999 đã giải bằng phương pháp dùng VBA. Cho ra kết quả mong muốn của em. Nhưng do tính chất công việc của em, code VBA không hiệu quả trong trường hợp này của em.
Nên trường hợp này em mong muốn có được công thức để giải bài này.
Em cũng không biết đăng bài này có gọi là trùng lặp bài, phạm quy không?
Nhưng em đã hơi bế tắc, nên cần một phao cứu sinh từ anh chị GPE.
Mong nhận được sự hỗ trợ từ anh chị.
Em cảm ơn anh chị rất nhiều.
(bài này em hơi bối rối, nên lại để nhầm ở mục lập trình Excel rồi, nếu bài này không phạm quy, thì em xin phép nhờ anh chị Admin dời sang Hàm và công thức Excel dùm em. Em cảm ơn)
 

File đính kèm

Chào anh chị em có vấn đề này nhờ anh chị giúp đỡ.

Dữ liệu của em chỉ có 2 cột là cột J và cột O (nói đúng hơn là giá trị của O2)
Kết quả mong muốn của em là cột P. Cột A là không có nhé anh chị, em đánh vị trí cột A để cho biết vị trí thôi. Cột A này anh chị nếu dùng để tham chiếu Vlookup thì có thể dời sang cột Q, cột R....
Bài này thì nếu làm 1 công thức được thì hay quá, không thì anh chị có thể dùng nhiều cột phụ (nhưng cột phụ thì dùng từ cột Q trở về sau, vì phía trước đã có dữ liệu). Chỉ cần cột phụ cuối cùng có kết quả như kết quả mong muốn của em là được.
Cột A​
Cột J​
Cột O​
Cột P
Vị trí​
Payment Amount​
Assigned​
Kết quả mong muốn
0​
120​
155​
7
1​
130​
6
2​
25-​
5
3​
35​
4​
160​
5​
80​
6​
25​
7​
65​
8​
60-​
9​
35-​
10​
Quy luật như sau:
Khách hàng nợ 155 ngàn, cột J là các tờ hoá đơn. Phía dưới là hoá đơn cũ nhất.
Ở đây: với 155 ngàn ta sẽ xoá nợ tờ hoá đơn vị trí 7, xoá nợ tờ hoá đơn vị trí thứ 6, và xoá nợ một phần tờ hoá đơn thứ 5. Vì vậy kết quả là 7, 6, 5.
Tức là tìm bao nhiêu số hạng từ dưới đếm lên để lớn hơn giá trị của cột O2 là được. rồi ghi ra vị trí.

Bài này em đã được sự hỗ trợ của anh Smod ptm0412 và anh Beb021999 đã giải bằng phương pháp dùng VBA. Cho ra kết quả mong muốn của em. Nhưng do tính chất công việc của em, code VBA không hiệu quả trong trường hợp này của em.
Nên trường hợp này em mong muốn có được công thức để giải bài này.
Em cũng không biết đăng bài này có gọi là trùng lặp bài, phạm quy không?
Nhưng em đã hơi bế tắc, nên cần một phao cứu sinh từ anh chị GPE.
Mong nhận được sự hỗ trợ từ anh chị.
Em cảm ơn anh chị rất nhiều.
(bài này em hơi bối rối, nên lại để nhầm ở mục lập trình Excel rồi, nếu bài này không phạm quy, nhờ Admin dời sang Hàm và công thức Excel dùm em. Em cảm ơn)
Thế đăng trong box các hàm excel chứ cho vào lập trình làm gì...
 
Chào anh chị em có vấn đề này nhờ anh chị giúp đỡ.

Dữ liệu của em chỉ có 2 cột là cột J và cột O (nói đúng hơn là giá trị của O2)
Kết quả mong muốn của em là cột P. Cột A là không có nhé anh chị, em đánh vị trí cột A để cho biết vị trí thôi. Cột A này anh chị nếu dùng để tham chiếu Vlookup thì có thể dời sang cột Q, cột R....
Bài này thì nếu làm 1 công thức được thì hay quá, không thì anh chị có thể dùng nhiều cột phụ (nhưng cột phụ thì dùng từ cột Q trở về sau, vì phía trước đã có dữ liệu). Chỉ cần cột phụ cuối cùng có kết quả như kết quả mong muốn của em là được.
Cột A​
Cột J​
Cột O​
Cột P
Vị trí​
Payment Amount​
Assigned​
Kết quả mong muốn
0​
120​
155​
7
1​
130​
6
2​
25-​
5
3​
35​
4​
160​
5​
80​
6​
25​
7​
65​
8​
60-​
9​
35-​
10​
Quy luật như sau:
Khách hàng nợ 155 ngàn, cột J là các tờ hoá đơn. Phía dưới là hoá đơn cũ nhất.
Ở đây: với 155 ngàn ta sẽ xoá nợ tờ hoá đơn vị trí 7, xoá nợ tờ hoá đơn vị trí thứ 6, và xoá nợ một phần tờ hoá đơn thứ 5. Vì vậy kết quả là 7, 6, 5.
Tức là tìm bao nhiêu số hạng từ dưới đếm lên để lớn hơn giá trị của cột O2 là được. rồi ghi ra vị trí.

Bài này em đã được sự hỗ trợ của anh Smod ptm0412 và anh Beb021999 đã giải bằng phương pháp dùng VBA. Cho ra kết quả mong muốn của em. Nhưng do tính chất công việc của em, code VBA không hiệu quả trong trường hợp này của em.
Nên trường hợp này em mong muốn có được công thức để giải bài này.
Em cũng không biết đăng bài này có gọi là trùng lặp bài, phạm quy không?
Nhưng em đã hơi bế tắc, nên cần một phao cứu sinh từ anh chị GPE.
Mong nhận được sự hỗ trợ từ anh chị.
Em cảm ơn anh chị rất nhiều.
(bài này em hơi bối rối, nên lại để nhầm ở mục lập trình Excel rồi, nếu bài này không phạm quy, thì em xin phép nhờ anh chị Admin dời sang Hàm và công thức Excel dùm em. Em cảm ơn)
Bạn dùng excel gì vậy?
 
Dạ, hiện tại em đang sử dụng Excel 2016, công ty em cũng đang sử dụng Excel 2016 đó anh Nhattanktnn.
Nói chung là nên dùng VBA, chứ hàm thì khó.
Viết xong cái hàm này rồi không biết mình đang viết cái gì luôn nên xin đừng hỏi gì thêm :D
Bạn xem dùng được thì dùng nhé: Ctrl+Shift+Enter
Mã:
=IFERROR(ROUND($A$11-MOD(AGGREGATE(15,6,$A$2:$A$11*10^-5+TEXT(MMULT(N(ROW($J$2:$J$11)>=TRANSPOSE(ROW($J$2:$J$11))),INDEX(--IF(ISNUMBER($J$2:$J$11)=ISNUMBER($O$2),SUBSTITUTE($J$2:$J$11,"-",""),0),N(IF(1,ROWS($J$2:$J$11)-ROW($J$2:$J$11)+2))))/INDEX((ISNUMBER($J$2:$J$11)=ISNUMBER($O$2)),N(IF(1,ROWS($J$2:$J$11)-ROW($J$2:$J$11)+2)))-SUBSTITUTE($O$2,"-",""),"[>"&INDEX(--IF(ISNUMBER($J$2:$J$11)=ISNUMBER($O$2),SUBSTITUTE($J$2:$J$11,"-",""),0),N(IF(1,ROWS($J$2:$J$11)-ROW($J$2:$J$11)+2)))&"]"""";[>0]#;#"),ROW(A1)),1)*10^5,0),"")
 

File đính kèm

Nói chung là nên dùng VBA, chứ hàm thì khó.
Viết xong cái hàm này rồi không biết mình đang viết cái gì luôn nên xin đừng hỏi gì thêm :D
Bạn xem dùng được thì dùng nhé: Ctrl+Shift+Enter
Mã:
=IFERROR(ROUND($A$11-MOD(AGGREGATE(15,6,$A$2:$A$11*10^-5+TEXT(MMULT(N(ROW($J$2:$J$11)>=TRANSPOSE(ROW($J$2:$J$11))),INDEX(--IF(ISNUMBER($J$2:$J$11)=ISNUMBER($O$2),SUBSTITUTE($J$2:$J$11,"-",""),0),N(IF(1,ROWS($J$2:$J$11)-ROW($J$2:$J$11)+2))))/INDEX((ISNUMBER($J$2:$J$11)=ISNUMBER($O$2)),N(IF(1,ROWS($J$2:$J$11)-ROW($J$2:$J$11)+2)))-SUBSTITUTE($O$2,"-",""),"[>"&INDEX(--IF(ISNUMBER($J$2:$J$11)=ISNUMBER($O$2),SUBSTITUTE($J$2:$J$11,"-",""),0),N(IF(1,ROWS($J$2:$J$11)-ROW($J$2:$J$11)+2)))&"]"""";[>0]#;#"),ROW(A1)),1)*10^5,0),"")
Em mới kiểm tra lại, thấy hoạt động tốt đó anh.
Bài này giải bằng một công thức thế này em nghĩ là không thể, em đăng bài để cầu may, vớt vát, tình huống ngàn cân treo sợi tóc.
Nhưng anh lại giải được. Anh thật có tâm, đã cứu em một bàn thua trông thấy
Em cảm ơn anh nhiều nhé.
Cho phép em mời anh một ly cafe nhé anh.
 
Mình còn dùng excel 2007. :D
Mã:
=IF(P1="","",IF(ABS(SUMPRODUCT(COUNTIF(P$1:P1,ROW(J$2:J$20)-ROW(J$2)),IFERROR(J$2:J$20*1,-SUBSTITUTE(J$2:J$20,"-",""))))<ABS(IFERROR($O$2*1,-SUBSTITUTE($O$2,"-",""))),IFERROR(LOOKUP(IFERROR(P1*1,1000)-1%,IF((ISNUMBER(J$2:J$20)=ISNUMBER($O$2))*(J$2:J$20<>""),ROW(J$2:J$20)-ROW(J$2),"")),""),""))
 

File đính kèm

Anh
Mình còn dùng excel 2007. :D
Mã:
=IF(P1="","",IF(ABS(SUMPRODUCT(COUNTIF(P$1:P1,ROW(J$2:J$20)-ROW(J$2)),IFERROR(J$2:J$20*1,-SUBSTITUTE(J$2:J$20,"-",""))))<ABS(IFERROR($O$2*1,-SUBSTITUTE($O$2,"-",""))),IFERROR(LOOKUP(IFERROR(P1*1,1000)-1%,IF((ISNUMBER(J$2:J$20)=ISNUMBER($O$2))*(J$2:J$20<>""),ROW(J$2:J$20)-ROW(J$2),"")),""),""))
Em cảm ơn anh huu thang_bd nhé.
 
Web KT

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

Back
Top Bottom