Công thức lặp lại có điều điện

Liên hệ QC

hml89

Thành viên tiêu biểu
Tham gia
14/9/12
Bài viết
526
Được thích
392
Giới tính
Nam
Xin chào anh, chị ,em trong diễn đàn.
Tôi đang gặp khó khăn về công thức lặp lại có điều kiện, tôi đã thử làm nhưng kết quả bị sai. Mong mọi người giúp tôi.
Chi tiết tôi xin gửi file đính kèm.
Cám ơn mọi người.
 

File đính kèm

  • VIDU.xls.xlsx
    9.6 KB · Đọc: 18
Xin chào anh, chị ,em trong diễn đàn.
Tôi đang gặp khó khăn về công thức lặp lại có điều kiện, tôi đã thử làm nhưng kết quả bị sai. Mong mọi người giúp tôi.
Chi tiết tôi xin gửi file đính kèm.
Cám ơn mọi người.
Dùng cột phụ:
Mã:
D2=MIN(C2*2,5)
F3=IF(ROW(A1)<=SUM($D$2:$D$20),OFFSET($A$1,MATCH(ROW(A1),INDEX(SUMIF(OFFSET($D$1,,,ROW($1:$20)),"<>")+1,)),),"")
Enter fill xuống.
Xem file kèm.
hihi ^o^
 

File đính kèm

  • VIDU.xls.xlsx
    10.1 KB · Đọc: 11
Dùng cột phụ:
Mã:
D2=MIN(C2*2,5)
F3=IF(ROW(A1)<=SUM($D$2:$D$20),OFFSET($A$1,MATCH(ROW(A1),INDEX(SUMIF(OFFSET($D$1,,,ROW($1:$20)),"<>")+1,)),),"")
Enter fill xuống.
Xem file kèm.
hihi ^o^

Đúng kết quả nhưng sai yêu cầu:
Nếu cột C = 1, Lặp lại tên ở cột A 2 lần
Nếu cột C =2, lặp lại tên ở cột B 4 lần
 
Đúng kết quả nhưng sai yêu cầu:
Nếu cột C = 1, Lặp lại tên ở cột A 2 lần
Nếu cột C =2, lặp lại tên ở cột B 4 lần
Cái này chủ thớt "chởm" anh em mình nè anh Ba!
Cho "ví dụ kết quả mong muốn" thì ghi 1 đằng, yêu cầu lại ghi 1 nẻo, tréo ngoe cẳng ngỗng.
Khà khà khà!
/-*+//-*+//-*+/
 
Cho tôi xin lỗi vì câu cú lộn xộn. Xin cám ơn bạn đã giúp đỡ.
Anh em tụi tui biết mà! nên giỡn và "chọt lét" với nhau thôi, bạn không nên để tâm!
Bạn có thể đùa: "Úi! ông B cố tình qua lộn nhà bà A rồi mấy anh ơi!". Đó mới hòa hợp đúng phong thái của anh em tụi tui.
Khà khà khà!
/-*+//-*+//-*+/
Chúc bạn học tập vui với anh em GPE.
 
Anh em tụi tui biết mà! nên giỡn và "chọt lét" với nhau thôi, bạn không nên để tâm!
Bạn có thể đùa: "Úi! ông B cố tình qua lộn nhà bà A rồi mấy anh ơi!". Đó mới hòa hợp đúng phong thái của anh em tụi tui.
Khà khà khà!
/-*+//-*+//-*+/
Chúc bạn học tập vui với anh em GPE.
Tôi nói thật là U gần 50 rồi, với lại là cũng chưa nói chuyện nhiều với các bạn, nên tôi nói đùa sợ mất lòng.
Tôi có thể hỏi bạn 1 chút được không? tôi thấy công thức của bạn hay quá nên muốn học, nhờ bạn chỉ dùm cho tôi với! tại sao khi tôi insert thêm dòng trên thì nó lại bị N/a nhỉ?
1526541723568.png
 
Lần chỉnh sửa cuối:
Tôi nói thật là U gần 50 rồi, với lại là cũng chưa nói chuyện nhiều với các bạn, nên tôi nói đùa sợ mất lòng.
Tôi có thể hỏi bạn 1 chút được không? tôi thấy công thức của bạn hay quá nên muốn học, nhờ bạn chỉ dùm cho tôi với! tại sao khi tôi insert thêm dòng trên thì nó lại bị N/a nhỉ?
View attachment 195633
Tôi "mém" U60, tặng bạn 1 code để xài với dữ liệu có kết quả 100.000 dòng
 

File đính kèm

  • VIDU.xlsm
    18.5 KB · Đọc: 10
Tôi "mém" U60, tặng bạn 1 code để xài với dữ liệu có kết quả 100.000 dòng
Vậy mà ở gần thì tôi mời bạn sang làm bữa rượu chuối hột với cá nướng. Già rồi đi mần mấy cái này, đau hết cả mắt.
 
Xin chào bạn @Mộng Thường 2001
Tôi mong bạn giúp tôi vấn đề này nữa, tôi xin được gửi file. Tôi cũng định là sẽ lập 1 chủ đề khác , nhưng tôi không biết công thức này thì hỏi như thế nào.
Mong nhận được sự giúp đỡ của bạn.
 

File đính kèm

  • DM.xlsx
    8.9 KB · Đọc: 8
Xin chào bạn @Mộng Thường 2001
Tôi mong bạn giúp tôi vấn đề này nữa, tôi xin được gửi file. Tôi cũng định là sẽ lập 1 chủ đề khác , nhưng tôi không biết công thức này thì hỏi như thế nào.
Mong nhận được sự giúp đỡ của bạn.
Hình như Kết quả và yêu cầu vẫn "bị" giống như đã nói ở bài #4.
 
Tôi nói thật là U gần 50 rồi, với lại là cũng chưa nói chuyện nhiều với các bạn, nên tôi nói đùa sợ mất lòng.
Tôi có thể hỏi bạn 1 chút được không? tôi thấy công thức của bạn hay quá nên muốn học, nhờ bạn chỉ dùm cho tôi với!
Không sao đâu bạn! vậy năm tuổi của bạn lớn hơn tui và anh Ba Tê nhiều à nha! và anh Ba có năm tuổi nhỏ nhất trong 3 người mình! khà khà khà.
Thông cảm tôi đang sử dụng phone nên chưa ghi giải thích cho bạn được, bạn chịu khó chờ tôi về nhà sẽ ghi cho bạn sau nha!
Chúc bạn ngày vui.
 
Không sao đâu bạn! vậy năm tuổi của bạn lớn hơn tui và anh Ba Tê nhiều à nha! và anh Ba có năm tuổi nhỏ nhất trong 3 người mình! khà khà khà.
Thông cảm tôi đang sử dụng phone nên chưa ghi giải thích cho bạn được, bạn chịu khó chờ tôi về nhà sẽ ghi cho bạn sau nha!
Chúc bạn ngày vui.
Tôi sẽ chờ bạn, nhưng file tôi gửi bạn lần 2 nó lại bị lộn dòng nhé.
 
Xin chào anh, chị ,em trong diễn đàn.
Tôi đang gặp khó khăn về công thức lặp lại có điều kiện, tôi đã thử làm nhưng kết quả bị sai. Mong mọi người giúp tôi.
Chi tiết tôi xin gửi file đính kèm.
Cám ơn mọi người.
Cũng cột phụ nhưng công thức không cao siêu
Công thức cho D2
Mã:
=IF(D1="",1,IF(C1<=2,D1+2*C1,D1+5))
Kéo xuống dư ít nhất là 1 dòng. Tức trong tập tin kéo xuống ít nhất tới D7.
Công thức cho F3
Mã:
=IF(ROW(A1)>=MAX(D$2:D$1000),"",INDEX(A$2:A$1000,MATCH(ROW(A1),D$2:D$1000)))

Công thức cho giả thiết - đúng như kết quả mong đợi:

Nếu cột C = 1, Lặp lại tên ở cột A 2 lần
Nếu cột C =2, lặp lại tên ở cột A 4 lần
Còn lại là 5 lần

Hi vọng công thức đúng.

Công thức chỉ dùng các hàm đơn giản nên chắc bạn hiểu mà không cần giải thích. Mà tôi cũng không biết giải thích :D
 
Tôi có thể hỏi bạn 1 chút được không? tôi thấy công thức của bạn hay quá nên muốn học, nhờ bạn chỉ dùm cho tôi với! tại sao khi tôi insert thêm dòng trên thì nó lại bị N/a nhỉ?
  1. D2=MIN(C2*2,5) --> Trả về kết quả số lần lặp lại như yêu cầu của bạn.
  2. F3=IF( ROW(A1)<=SUM($D$2:$D$20), OFFSET($A$1, MATCH(ROW(A1),INDEX(SUMIF(OFFSET($D$1,,,ROW($1:$20)),"<>")+1,)) ,) ,"")
    • Điều kiện: ROW(A1)<=SUM($D$2:$D$20) --> cái này đơn giản chắc bạn hiểu được nên không giải thích.
    • Nếu điều kiện thỏa (TRUE) thì thực hiện lệnh Offset(), nếu không thỏa (FALSE) thì trả kết quả rỗng "".
    • OFFSET($A$1, MATCH(ROW(A1),INDEX(SUMIF(OFFSET($D$1,,,ROW($1:$20)),"<>")+1,)) ,) lấy mốc tại A1, "nhảy" thêm theo kết quả số dòng trả về bởi hàm Match().
      • Hàm SUMIF(OFFSET($D$1,,,ROW($1:$20)),"<>")+1: tạo ra 1 Mảng cộng dồn số lần lặp lại, như bài thì D1: D7 có giá trị sau {"D";2;2;4;4;5;5} thì Sumif()+1 sẽ cộng dồn và tạo ra 1 Mảng mới {0;2;4;8;12;17;22}+1 hay {1;3;5;9;13;18;23}. Do đây là công thức Mảng nên để khai báo tôi dùng thêm hàm Index(....,) bao bên ngoài Sumif()+1 này.
      • Lúc này hàm MATCH(ROW(A1),INDEX(SUMIF(OFFSET($D$1,,,ROW($1:$20)),"<>")+1,)) sẽ trở thành MATCH( ROW(A1),{1;3;5;9;13;18;23}), tức trả về mức của số lần lặp lại theo số dòng hiện tại, Ví dụ:
        • ROW(A1)= 1 Match() trả về 1
        • ROW(A2)= 2 Match() trả về 1
        • ROW(A3)= 3 Match() trả về 2
        • ..........................................................
        • ROW(A10)= 10 Match() trả về 4
        • Các mức trả về: 1,2,3,4... cũng chính là số dòng sẽ báo cho hàm Offset(A1,...) biết sẽ nhảy bao nhiêu dòng tính từ A1.
        • Việc hiểu cách hoạt động của hàm này rất hữu ích cho cách áp dụng hàm tương tự khác như hàm COUNIF(Offset(),'Ô so') mà tôi có sử dụng để xử lý yêu cầu mới của bạn.
  3. Tôi có điều chỉnh lại công thức thêm hàm Indirect() và lấy theo stt, để bạn khi chèn dòng sẽ không bị báo lỗi N/A nữa. Công thức điều chỉnh như sau:
    Mã:
    F3=IF((E3<=SUM($D$2:$D$20))*(E3<>""),OFFSET($A$1,MATCH(E3,INDEX(SUMIF(OFFSET($D$1,,,ROW(INDIRECT("1:20"))),"<>")+1,)),),"")
    Enter fill xuống.
  4. Cũng đã thực hiện cho bạn yêu cầu mới, bạn xem file kèm.
Chúc bạn học tập vui với anh em GPE
/-*+//-*+//-*+/
 

File đính kèm

  • DM.xlsx
    12.5 KB · Đọc: 24
  1. D2=MIN(C2*2,5) --> Trả về kết quả số lần lặp lại như yêu cầu của bạn.
  2. F3=IF( ROW(A1)<=SUM($D$2:$D$20), OFFSET($A$1, MATCH(ROW(A1),INDEX(SUMIF(OFFSET($D$1,,,ROW($1:$20)),"<>")+1,)) ,) ,"")
    • Điều kiện: ROW(A1)<=SUM($D$2:$D$20) --> cái này đơn giản chắc bạn hiểu được nên không giải thích.
    • Nếu điều kiện thỏa (TRUE) thì thực hiện lệnh Offset(), nếu không thỏa (FALSE) thì trả kết quả rỗng "".
    • OFFSET($A$1, MATCH(ROW(A1),INDEX(SUMIF(OFFSET($D$1,,,ROW($1:$20)),"<>")+1,)) ,) lấy mốc tại A1, "nhảy" thêm theo kết quả số dòng trả về bởi hàm Match().
      • Hàm SUMIF(OFFSET($D$1,,,ROW($1:$20)),"<>")+1: tạo ra 1 Mảng cộng dồn số lần lặp lại, như bài thì D1: D7 có giá trị sau {"D";2;2;4;4;5;5} thì Sumif()+1 sẽ cộng dồn và tạo ra 1 Mảng mới {0;2;4;8;12;17;22}+1 hay {1;3;5;9;13;18;23}. Do đây là công thức Mảng nên để khai báo tôi dùng thêm hàm Index(....,) bao bên ngoài Sumif()+1 này.
      • Lúc này hàm MATCH(ROW(A1),INDEX(SUMIF(OFFSET($D$1,,,ROW($1:$20)),"<>")+1,)) sẽ trở thành MATCH( ROW(A1),{1;3;5;9;13;18;23}), tức trả về mức của số lần lặp lại theo số dòng hiện tại, Ví dụ:
        • ROW(A1)= 1 Match() trả về 1
        • ROW(A2)= 2 Match() trả về 1
        • ROW(A3)= 3 Match() trả về 2
        • ..........................................................
        • ROW(A10)= 10 Match() trả về 4
        • Các mức trả về: 1,2,3,4... cũng chính là số dòng sẽ báo cho hàm Offset(A1,...) biết sẽ nhảy bao nhiêu dòng tính từ A1.
        • Việc hiểu cách hoạt động của hàm này rất hữu ích cho cách áp dụng hàm tương tự khác như hàm COUNIF(Offset(),'Ô so') mà tôi có sử dụng để xử lý yêu cầu mới của bạn.
  3. Tôi có điều chỉnh lại công thức thêm hàm Indirect() và lấy theo stt, để bạn khi chèn dòng sẽ không bị báo lỗi N/A nữa. Công thức điều chỉnh như sau:
    Mã:
    F3=IF((E3<=SUM($D$2:$D$20))*(E3<>""),OFFSET($A$1,MATCH(E3,INDEX(SUMIF(OFFSET($D$1,,,ROW(INDIRECT("1:20"))),"<>")+1,)),),"")
    Enter fill xuống.
  4. Cũng đã thực hiện cho bạn yêu cầu mới, bạn xem file kèm.
Chúc bạn học tập vui với anh em GPE
/-*+//-*+//-*+/
Xin chào bạn @Mộng Thường 2001 ,
Với dữ liệu Phụ Lục là hơn 100 dòng, và dữ liệu Danh Mục cũng vậy, tôi có kéo công thức nhưng nó bị sai. Tôi nghĩ là do tôi chưa hiểu hoạt động của các hàm này, nên mong bạn chỉ giúp thêm.
 
  1. D2=MIN(C2*2,5) --> Trả về kết quả số lần lặp lại như yêu cầu của bạn.
  2. F3=IF( ROW(A1)<=SUM($D$2:$D$20), OFFSET($A$1, MATCH(ROW(A1),INDEX(SUMIF(OFFSET($D$1,,,ROW($1:$20)),"<>")+1,)) ,) ,"")
    • Điều kiện: ROW(A1)<=SUM($D$2:$D$20) --> cái này đơn giản chắc bạn hiểu được nên không giải thích.
    • Nếu điều kiện thỏa (TRUE) thì thực hiện lệnh Offset(), nếu không thỏa (FALSE) thì trả kết quả rỗng "".
    • OFFSET($A$1, MATCH(ROW(A1),INDEX(SUMIF(OFFSET($D$1,,,ROW($1:$20)),"<>")+1,)) ,) lấy mốc tại A1, "nhảy" thêm theo kết quả số dòng trả về bởi hàm Match().
      • Hàm SUMIF(OFFSET($D$1,,,ROW($1:$20)),"<>")+1: tạo ra 1 Mảng cộng dồn số lần lặp lại, như bài thì D1: D7 có giá trị sau {"D";2;2;4;4;5;5} thì Sumif()+1 sẽ cộng dồn và tạo ra 1 Mảng mới {0;2;4;8;12;17;22}+1 hay {1;3;5;9;13;18;23}. Do đây là công thức Mảng nên để khai báo tôi dùng thêm hàm Index(....,) bao bên ngoài Sumif()+1 này.
      • Lúc này hàm MATCH(ROW(A1),INDEX(SUMIF(OFFSET($D$1,,,ROW($1:$20)),"<>")+1,)) sẽ trở thành MATCH( ROW(A1),{1;3;5;9;13;18;23}), tức trả về mức của số lần lặp lại theo số dòng hiện tại, Ví dụ:
        • ROW(A1)= 1 Match() trả về 1
        • ROW(A2)= 2 Match() trả về 1
        • ROW(A3)= 3 Match() trả về 2
        • ..........................................................
        • ROW(A10)= 10 Match() trả về 4
        • Các mức trả về: 1,2,3,4... cũng chính là số dòng sẽ báo cho hàm Offset(A1,...) biết sẽ nhảy bao nhiêu dòng tính từ A1.
        • Việc hiểu cách hoạt động của hàm này rất hữu ích cho cách áp dụng hàm tương tự khác như hàm COUNIF(Offset(),'Ô so') mà tôi có sử dụng để xử lý yêu cầu mới của bạn.
  3. Tôi có điều chỉnh lại công thức thêm hàm Indirect() và lấy theo stt, để bạn khi chèn dòng sẽ không bị báo lỗi N/A nữa. Công thức điều chỉnh như sau:
    Mã:
    F3=IF((E3<=SUM($D$2:$D$20))*(E3<>""),OFFSET($A$1,MATCH(E3,INDEX(SUMIF(OFFSET($D$1,,,ROW(INDIRECT("1:20"))),"<>")+1,)),),"")
    Enter fill xuống.
  4. Cũng đã thực hiện cho bạn yêu cầu mới, bạn xem file kèm.
Chúc bạn học tập vui với anh em GPE
/-*+//-*+//-*+/
Cám ơn bạn đã giải thích giúp tôi, tôi sẽ đọc và ngẫm thật kĩ. Có gì không hiểu tôi xin được hỏi lại bạn, mong bạn chỉ dẫn giúp tôi.
Xin cám ơn bạn.
 
Xin chào bạn @Mộng Thường 2001 ,
Với dữ liệu Phụ Lục là hơn 100 dòng, và dữ liệu Danh Mục cũng vậy, tôi có kéo công thức nhưng nó bị sai. Tôi nghĩ là do tôi chưa hiểu hoạt động của các hàm này, nên mong bạn chỉ giúp thêm.
Không có chi đâu bạn! giúp ích được gì cho các bạn là niềm vui của anh em thành viên GPE mà, đừng bận tâm về chuyện nhỏ!
Bạn đưa file mà bạn bị lỗi lên diễn đàn đi! file trước chỉ vỏn vẹn vài dòng thì có thể không lường được hết các trường hợp có thể phát sinh khác đi.

Chúc bạn học tập vui với anh em GPE
 
Web KT
Back
Top Bottom