Điền dữ liệu giống nhau vào các ô bên trên

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài
Khi dùng hàm Let và Lambda, tránh dùng những tên mà Excel dùng làm cột.
Nếu muốn x, y thì đặt là x01, x02, y01, y02,... hoặc x_1, x_12,...

Cho đến giờ này thớt vẫn chưa cho biết là mình thật sự muốn tính chất Fill của mảng động để làm gì.
Với khả năng của thớt thì viết cái hàm fill xuống như bạn không khó. Nhưng hám ấy phải gõ vào Nhưng thớt lại muốn viết cái hàm gõ vào ô B9 và cái mảng tạo ra sẽ là:
2000005364-1-1 (ô B9 = điểm mốc, nơi gõ hàm)
2000005364-1-1 (hiển thị ở ô B10, do tính chất spill ngược)
2000005364-1-1
2000005364-1-1
2000005364-223-1
2000005364-223-1
2000005364-223-1
2000005364-223-1 (splill ngược lên, vào ô B2)
Vẫn nhập công thức ở B2 anh nhưng giá trị cần lấy là nó ngược lên thôi anh.

Mã:
=LET(r,A2:A10,BYROW(r,LAMBDA(x,IF(LEFT(x,3)="200",x,VLOOKUP("200*",x:TAKE(r,-1),1,0)))))

Hàm này mình kiểm tra không ra kết quả không lẽ mình nhập sai gì.

1690970688512.png
 
Vẫn nhập công thức ở B2 anh nhưng giá trị cần lấy là nó ngược lên thôi anh.
Mã:
=LET(r,A2:A10,BYROW(r,LAMBDA(x,IF(LEFT(x,3)="200",x,VLOOKUP("200*",x:TAKE(r,-1),1,0)))))
Hàm này mình kiểm tra không ra kết quả không lẽ mình nhập sai gì.
...
Tưởng nhập ở đâu mới khó chứ B2 thì là fill xuống chứ có lên đâu?
Vậy thì công thức ấy đúng rồi. Nhưng bạn quên tôi có nhắc trong hàm Let tránh dùng tên cột để làm tham hoặc biến.
 
Tưởng nhập ở đâu mới khó chứ B2 thì là fill xuống chứ có lên đâu?
Vậy thì công thức ấy đúng rồi. Nhưng bạn quên tôi có nhắc trong hàm Let tránh dùng tên cột để làm tham hoặc biến.
Em làm thế vẫn có lỗi không biết thế nào.

1690983502413.png
 
Em làm thế vẫn có lỗi không biết thế nào.
...
Tôi chép cái cong thức ra file txt. Find-Replace x > x_1, r > r_1
Chép trở lại ô C2

1690995261860.png

Ô C10 cho ra #N/A là vì tác giả làm lố 1 phần tử. Khoảng A2:A10 có 9 phần tử trong khi dữ liệu của bạn chỉ có 8 dòng.
 
Lần chỉnh sửa cuối:
Không biết ý chủ thớt có phải thế này không?
Mã:
=LET(r,A2:A10,BYROW(r,LAMBDA(x,IF(LEFT(x,3)="200",x,VLOOKUP("200*",x:TAKE(r,-1),1,0)))))
Anh mượn công thức của em sửa lại cho gọn (bỏ IF), bẫy lỗi (khi dòng cuối không thỏa điều kiện) và có thể dùng được cho mảng (để chuyển vùng thành mảng chuỗi, tránh sai do VLOOKUP không tìm được số - VD 2000)
Mã:
=LET(r,A2:A10&"",i, SEQUENCE(ROWS(r),1,-ROWS(r)),MAP(i,LAMBDA(x,IFERROR(VLOOKUP("200*",TAKE(r,x),1,0),""))))
 
Nếu chỉ để gõ công thức ở C2, mà ra kết quả được như cột B, bạn có thể dùng công thức như sau:
Mã:
=IFERROR(INDEX(A2:A9;FIND(1;CONCAT(--ISTEXT(A2:A9));SEQUENCE(ROWS(A2:A9))));"")
Bạn tự sửa cho phù hợp yêu cầu nhé.
Rồi thay dữ liệu khác thì làm thế nào bạn? :rolleyes:
 
Bạn thử xem có đúng ý chưa
Mã:
=LET(_a,A2:A9,_s,SEQUENCE(ROWS(_a)),INDEX(_a,XMATCH(_s,(LEFT(_a,3)="200")*_s,1)))
 
Bạn thử thêm vào vùng dữ liệu giá trị sau thử xem.
3000005364-223-2
À, ý bác có phải là chỗ điều kiện left(..,3)="200" không? Cái đó thì em bảo chủ thớt tự sửa theo nhu cầu của mình rồi. Tại em thấy chủ thớt cũng khá rành về excel nên chỉ đưa ý tưởng chứ không đi vào chi tiết.
Hơn nữa, em đoán là dữ liệu trên có thể chỉ là mô phỏng.
 
À, ý bác có phải là chỗ điều kiện left(..,3)="200" không? Cái đó thì em bảo chủ thớt tự sửa theo nhu cầu của mình rồi. Tại em thấy chủ thớt cũng khá rành về excel nên chỉ đưa ý tưởng chứ không đi vào chi tiết.
Hơn nữa, em đoán là dữ liệu trên có thể chỉ là mô phỏng.
Cảm ơn tất cả mọi người, chủ đề này được giải quyết rồi, có rất nhiều công thức hay 1 lần nữa cảm ơn tất cả đã tham gia trả lời chủ đề trên.
 
À, ý bác có phải là chỗ điều kiện left(..,3)="200" không? Cái đó thì em bảo chủ thớt tự sửa theo nhu cầu của mình rồi. Tại em thấy chủ thớt cũng khá rành về excel nên chỉ đưa ý tưởng chứ không đi vào chi tiết.
Hơn nữa, em đoán là dữ liệu trên có thể chỉ là mô phỏng.
Bạn thử sửa từ công thức của bạn xem được không. :p
Muốn sửa thành cây kim ít ra bạn phải đưa cái đinh. Chứ đưa cây xà beng bảo sửa thành cây kim thì khó quá.
 
Web KT
Back
Top Bottom