Đ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

doanlong49

Thành viên chính thức
Tham gia
12/7/13
Bài viết
61
Được thích
24
Tôi có vấn đề bị vướng là điền dữ liệu ngược lên các ô phía trên nếu dùng công thức động tự co giãn trong excel 365, các bạn có cách nào giúp, nếu dùng công thức bình thường thì tôi làm được, còn dùng công thức động để điền dữ liệu ngược lên trên thì chưa tìm được hướng.

Tôi muốn kết quả công thức ở cột C giống kết quả ở cột B

Cảm ơn

1690939502105.png
 

File đính kèm

  • FillUp.xlsx
    12.2 KB · Đọc: 22
Em đã cố gắng đọc mà vẫn chưa hiểu ý anh muốn hỏi lắm á
Có nghĩa là mình chỉ cần gõ 1 dòng ở C2 thì sẽ cho kết quả các dòng bên dưới. Giống hình tôi gửi bên dưới do điền dữ liệu xuống dưới thì tôi làm được còn ngược lại thì không được.
 

File đính kèm

  • 1690940222541.png
    1690940222541.png
    252.2 KB · Đọc: 28
Có nghĩa là mình chỉ cần gõ 1 dòng ở C2 thì sẽ cho kết quả các dòng bên dưới. Giống hình tôi gửi bên dưới do điền dữ liệu xuống dưới thì tôi làm được còn ngược lại thì không được
Thế thì kiểu dạng tự động rồi. Chứ hàm nào mà anh gõ ở Cột C. Anh gõ vào thì coi như công thức của anh bị xóa rồi. Thì lấy đâu công thức nữa
 
Thế thì kiểu dạng tự động rồi. Chứ hàm nào mà anh gõ ở Cột C. Anh gõ vào thì coi như công thức của anh bị xóa rồi. Thì lấy đâu công thức nữa
Cảm ơn bạn. Những bạn thấy ở bài 3 tôi có làm 1 hàm tự động điền dữ liệu ngược xuống mà chỉ cần gõ hàm ở C2 thôi khi đó các dòng từ C3:C11 sẽ tự lấy công thức C2 vào. Dạng này chỉ có office 365, 2019 trở lên thì sẽ làm được mà không cần nhấn Ctrl+Shift+Enter. Còn các phiên bản cũ phải dùng Ctrl+Shift+Enter
 
Cảm ơn bạn. Những bạn thấy ở bài 3 tôi có làm 1 hàm tự động điền dữ liệu ngược xuống mà chỉ cần gõ hàm ở C2 thôi khi đó các dòng từ C3:C11 sẽ tự lấy công thức C2 vào. Dạng này chỉ có office 365, 2019 trở lên thì sẽ làm được mà không cần nhấn Ctrl+Shift+Enter. Còn các phiên bản cũ phải dùng Ctrl+Shift+Enter
Xin lỗi vì đã không giúp gì được. Anh chờ thành viên khác hỗ trợ được không. Nó vượt tầm của em rồi
 
Măc định của ma trân 2 chiều là vậy. Ô đầu tiên luôn luôn là cái neo (anchor). Các ô khác bắt buộc hướng về bên phải hoặc bên dưới cái neo.

Tôi chả hiểu bạn muốn đi ngược làm gì, có lẽ vì bên dưới là công thức khác.

Cách duy nhất để nó chừa chỗ cho bạn dùng công thức khác là bảo nó đừng spill và tự bạn kéo công thức lên/xuống - tức là dùng công thức kiểu như các phiên bản cũ.

Để đè tính chất mảng động, thêm dấu @ vào trước cái range gây ra tính chất mảng.
 
Măc định của ma trân 2 chiều là vậy. Ô đầu tiên luôn luôn là cái neo (anchor). Các ô khác bắt buộc hướng về bên phải hoặc bên dưới cái neo.

Tôi chả hiểu bạn muốn đi ngược làm gì, có lẽ vì bên dưới là công thức khác.

Cách duy nhất để nó chừa chỗ cho bạn dùng công thức khác là bảo nó đừng spill và tự bạn kéo công thức lên/xuống - tức là dùng công thức kiểu như các phiên bản cũ.

Để đè tính chất mảng động, thêm dấu @ vào trước cái range gây ra tính chất mảng.
Có thể anh cũng chưa rõ yêu cầu bên trên. Vấn đề em muốn đã trình bày ở bài 1 là nếu dùng công thức bình thường thì đã ra đáp án hoặc dùng query thì đơn giản rồi. Ở đây em muốn dùng công thức dạng dynamic array xem được không. Nếu trường hợp điền ngược xuống (fill down) thì em làm được. Còn điền ngược lên thì(fill up) thì em đang bị vướng chứ không phải là không có cách để làm.
Anh có thể xem file đính kèm
 

File đính kèm

  • FillUp.xlsx
    13.4 KB · Đọc: 5
Tôi có vấn đề bị vướng là điền dữ liệu ngược lên các ô phía trên nếu dùng công thức động tự co giãn trong excel 365, các bạn có cách nào giúp, nếu dùng công thức bình thường thì tôi làm được, còn dùng công thức động để điền dữ liệu ngược lên trên thì chưa tìm được hướng.
Như bạn mô tả fill xuống thì dùng Table có thể làm được.Mình chưa hiểu lý do tại sao bạn muốn điền CT ô dưới cùng và tự động fill lên.
Tuy nhiên mình đề xuất dùng VBA. mỗi khi có thay đổi trong cột C (phải là công thức chứ không phải giá trị) CT này sẽ được copy cho các ô phía trên cột C.

Mã:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lr&
lr = Cells(Rows.Count, "A").End(xlUp).Row
If Intersect(Target, Range("C3:C" & lr)) Is Nothing Then Exit Sub
If Target.HasFormula Then
    Application.EnableEvents = False
    Target.Copy Range("C2:C" & Target.Row - 1)
    Application.EnableEvents = True
End If
End Sub
 

File đính kèm

  • FillUp.xlsm
    18.1 KB · Đọc: 5
Có thể anh cũng chưa rõ yêu cầu bên trên. Vấn đề em muốn đã trình bày ở bài 1 là nếu dùng công thức bình thường thì đã ra đáp án hoặc dùng query thì đơn giản rồi. Ở đây em muốn dùng công thức dạng dynamic array xem được không. Nếu trường hợp điền ngược xuống (fill down) thì em làm được. Còn điền ngược lên thì(fill up) thì em đang bị vướng chứ không phải là không có cách để làm.
Anh có thể xem file đính kèm
Có thể bạn cũng chưa rõ câu đầu tiên tôi nói ở trên.
Mảng 2 chiều bắt buộc có ô neo là trên cùng và ô trái cùng.
Để làm nó khác đi thì bạn bắt buộc phải phá vỡ cấu trúc này. Nghiên cứu cách dùng cao cấp của các hàmLET, SORT, ARRAY*, và có thể phải dùng LAMBDA để đệ quy hàm.
 
Như bạn mô tả fill xuống thì dùng Table có thể làm được.Mình chưa hiểu lý do tại sao bạn muốn điền CT ô dưới cùng và tự động fill lên.
Nhưng mình đã nói fill up thì mình đang vướng, fill down thì mình giải quyết được rồi. Trong file bạn gửi không cần nhập công thức dưới cùng đâu chỉ cần mình vẫn gõ công thức ở B2 bình thường, mình biết table thì làm được việc này nhưng đang muốn dùng công thức dynamic array xem thế nào, còn query, vba thì dư sức vấn đề này. Để mình nghiên cứu hàm lambda thế nào

Cảm ơn các bạn đã tham gia trả lời.
 
Nhưng mình đã nói fill up thì mình đang vướng, fill down thì mình giải quyết được rồi. Trong file bạn gửi không cần nhập công thức dưới cùng đâu chỉ cần mình vẫn gõ công thức ở B2 bình thường, mình biết table thì làm được việc này nhưng đang muốn dùng công thức dynamic array xem thế nào, còn query, vba thì dư sức vấn đề này. Để mình nghiên cứu hàm lambda thế nào

Cảm ơn các bạn đã tham gia trả lời.
Theo mình biết thì không được đâu. Công thức bình thường của Excel không cho phép thay đổi giá trị của các ô khác.
Còn công thức mảng của các bản Excel mới chỉ mượn tạm các ô trống phía dưới và bên phải của ô chứa công thức để hiển thị kết quả.
 
Theo mình biết thì không được đâu. Công thức bình thường của Excel không cho phép thay đổi giá trị của các ô khác.
Còn công thức mảng của các bản Excel mới chỉ mượn tạm các ô trống phía dưới và bên phải của ô chứa công thức để hiển thị kết quả.
Trong file bài 8# mình làm thành công fill down thì mình nghĩ fill down được thì nghĩa là fill up vẫn được do chưa tìm ra thôi. Do có rất nhiều ứng dụng cột liên quan tới fill up và fill down. HIện tại query và vba, công thức thường thì dư sức làm điều này, chỉ là công thức mảng động thì chưa tìm ra hướng thôi. Thời gian sẽ có câu trả lời.
 
Bạn có thể chia sẻ công thức dùng query? Công thức trong bài 8 không hoạt động nếu xóa cột B.

.
Hoạt động bình thường chứ bạn

Đây là M_Code của 2 query fill up, down
Down
Mã:
let
    Source = Table.TransformColumnTypes(Excel.CurrentWorkbook(){[Name="Table1"]}[Content],{{"Code", type text}}),
    #"Added Custom" = Table.FillDown(Table.AddColumn(Source, "Down", each if Text.Start([Code],3)="200" then [Code] else null,type text),{"Down"})
in
    #"Added Custom"

Up
Mã:
let
    Source = Table.TransformColumnTypes(Excel.CurrentWorkbook(){[Name="Table4"]}[Content],{{"Code", type text}}),
    #"Added Custom" = Table.FillUp(Table.AddColumn(Source, "Up", each if Text.Start([Code],3)="200" then [Code] else null,type text),{"Up"})
in
    #"Added Custom"
 

File đính kèm

  • FillUp.xlsx
    24.1 KB · Đọc: 4
Lần chỉnh sửa cuối:
Mảng động hay tĩnh gì cũng là mảng.
Mà mảng thì bắt buộc phải theo luật {1, 1} là mốc chính.
Theo hiểu biết của tôi (*) thì MS không có lý do gì để đặt ra loại mảng có thể "treo" ngược như thớt muốn thử.

Cái mà Query fill không phải là mảng, mà là một dãy kết quả. Nó không có tính chất "hiển thị lên vị trí chứ không ghi vào vị trí" như mảng. Công thức mảng, động hay không cũng vây, theo luật cúa MS thì không có quyền ghi vào ô khòng chọn. Vì vậy bảo 365 ghi treo ngược mảng rất khó.

(*) Hiểu biết của một người luôn luôn có giới hạn. Tôi có thể sai.
Chỉ là với mứ đô cẩn thận của tôi thì xác xuất sai rất thấp (dưới 5%)
 
Lần chỉnh sửa cuối:
Mảng động hay tĩnh gì cũng là mảng.
Mà mảng thì bắt buộc phải theo luật {1, 1} là mốc chính.
Theo hiểu biết của tôi (*) thì MS không có lý do gì để đặt ra loại mảng có thể "treo" ngược như thớt muốn thử.

Cái mà Query fill không phải là mảng, mà là một dãy kết quả. Nó không có tính chất "hiển thị lên vị trí chứ không ghi vào vị trí" như mảng. Công thức mảng, động hay không cũng vây, theo luật cúa MS thì không có quyền ghi vào ô khòng chọn. Vì vậy bảo 365 ghi treo ngược mảng rất khó.

(*) Hiểu biết của một người luôn luôn có giới hạn. Tôi có thể sai.
Chỉ là với mứ đô cẩn thận của tôi thì xác xuất sai rất thấp (dưới 5%)
Thật sự có những chương trình nó xuất ra dạng như hình bên dưới
1690964445017.png


nên dạng cột vendor tôi muốn nó trả ngược cột vendor về thôi để tạo data dạng đồng nhất, khi đó dùng các hàm mảng let, sort, unique,…...
Chứ dùng công thức bình thường hoặc query thì không cần gì phải bàn, khi đó tôi cũng không đưa chủ đề này lên để hỏi
Do đang bị bí vụ fill up có thể do trình độ công thức tôi cũng có hạn nên tìm chẳng ra
Nhận tiện cũng cảm ơn anh và các bạn đã tham gia trả lời.
 
. .
 
Lần chỉnh sửa cuối:
Tôi có vấn đề bị vướng là điền dữ liệu ngược lên các ô phía trên nếu dùng công thức động tự co giãn trong excel 365, các bạn có cách nào giúp, nếu dùng công thức bình thường thì tôi làm được, còn dùng công thức động để điền dữ liệu ngược lên trên thì chưa tìm được hướng.

Tôi muốn kết quả công thức ở cột C giống kết quả ở cột B

Cảm ơn

View attachment 293395
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)))))
 
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)))))
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)
 
Web KT
Back
Top Bottom