Không, xin lỗi, điều này là không thể đối với bất kỳ công thức nào cộng với việc nó tự động cập nhật. Không sử dụng VBA, đó là.
Tuy nhiên, nó có thể được thực hiện cho một số lượng rất nhỏ công thức cụ thể (như nối chuỗi không đổi). Nó cũng có thể được thực hiện, nhưng với cập nhật thủ công, đối với một bộ công thức nhất định như được hiển thị khéo léo trong câu trả lời của VFor .
Cách gần nhất mà bạn có thể nhận được cho một giải pháp chung là sắp xếp lại các ô, nhúng DOSOMETHING
công thức vào công thức trình bao bọc đặc biệt và sử dụng các cột trợ giúp.
Đối với bảng tính ví dụ được cung cấp của bạn:
Sắp xếp lại nó như thế này:
Nhập công thức sau vào D2
và ctrl-enter / copy-paste / fill-down & right / auto-fill vào phần còn lại của các cột của bảng:
=IF(COLUMN()-COLUMN($C2)>$A2,"§",C2&"_checked")
Nhập công thức sau vào B2
và ctrl-enter / copy-paste / fill-down / auto-fill vào phần còn lại của cột của bảng:
=INDEX(C2:INDEX(2:2,1,COLUMNS(2:2)),MATCH("§",C2:INDEX(2:2,1,COLUMNS(2:2)),0)-1)
Lưu ý rằng số lượng cột trợ giúp cần thiết là giá trị tối đa cho phép của n cộng với một. Nếu không có đủ chúng cho một giá trị được nhập, một lỗi sẽ xảy ra:
Giải trình:
Công thức trình bao bọc tổng quát cho các cột của trình trợ giúp là:
=IF(COLUMN()-COLUMN($C2)>$A2,"§",DOSOMETHING(C2))
nơi DOSOMETHING(C2)
được bất kỳ công thức dựa trên C2
chỉ (ví dụ, LEFT(C2,LEN(C2)-1)
mà dần dần loại bỏ các ký tự cuối cùng).
Công thức trình bao bọc hoạt động bằng cách vận hành trên ô bên trái, do đó "lồng" các công thức một cách hiệu quả hơn nữa vào bên phải trong hàng nó đi.
Phần này IF(COLUMN()-COLUMN($C2)>$A2,"§",
sử dụng các chỉ mục cột để đếm số lần DOSOMETHING
công thức được lồng và khi số lần được chỉ định trong cột A
đã đạt được, nó sẽ tạo ra các chuỗi kết thúc. Những chuỗi này không nhất thiết phải là §
. Chúng chỉ cần là một cái gì đó sẽ không bao giờ là kết quả của việc đánh giá bất kỳ số lượng công thức lồng nhau nào cho bất kỳ cho phép Value
.
Công Result
thức có vẻ phức tạp hơn. Tuy nhiên, các C2:INDEX(2:2, 1, COLUMNS(2:2))
phần chỉ đơn giản là phạm vi phụ của hàng 2
ở bên phải của Result
cột.
Công thức về cơ bản giống như:
=INDEX(2:2,MATCH("§",2:2,0)-1)
mà làm cho nó dễ hiểu hơn
(Lưu ý rằng công thức này thực sự hoạt động nếu tính toán lặp được bật.)
Nhìn vào công thức đơn giản hơn này, rõ ràng công thức trả về DOSOMETHING
kết quả hàm lồng nhau cấp n .
=value&"_checked"
) sẽ có một cách khác so với việc bạn muốn chạyIndex/Match
ba lần hoặc lâu hơn ...