Hỏi về hàm transpose và cách thêm ký tự trống

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

LuuGiaPhúc

Thành viên hoạt động
Tham gia
28/7/21
Bài viết
119
Được thích
41
Em chào các anh chị,
Em có 2 câu hỏi , nhờ các anh chị hỗ trợ giúp :
Câu hỏi 1 :
Em có dữ liệu tại ô A1 có giá trị 202401 , 202402 , 202403 ..... Tại ô D1, em dùng hàm =TRANSPOSE(A1:A12) thì nó cho kết quả kéo ngang dữ liệu như hình

1720429710174.png

Bây giờ nếu em muốn thêm 2 ô trống vào sau mỗi giá trị thì em phải dùng hàm gì ?

1720430395748.png


Câu hỏi 2 : em có 2 cột là danh sách Miền và cửa hàng , em phải dùng hàm gì để có kết quả như cột F và G (cái này do yêu cầu của file nên không thể dùng được pivot table) Lý do : vì trong file có vùng chứa công thức , có vùng là kết quả tính toán bằng code VBA , bằng macro.... nên sau khi tổng kết số liệu xong, em sẽ dùng code VBA để chuyển tất cả công thức thành value trước khi gởi đi , nên không thể sử dụng pivot trong sheet này được
Em biết trường hợp câu hỏi 2, dùng pivot table là xong ngay , nhưng ngoài pivot table ra, không biết có công thức nào làm được như vậy hay không ạ ?
Cảm ơn các anh chị

1720430449009.png-
 

File đính kèm

  • 1720429840249.png
    1720429840249.png
    51.1 KB · Đọc: 3
  • 1720430047740.png
    1720430047740.png
    107.6 KB · Đọc: 3
  • Book1.xlsx
    15.6 KB · Đọc: 9
Bạn xem thử:
Câu hỏi 1 :
Em có dữ liệu tại ô A1 có giá trị 202401 , 202402 , 202403 ..... Tại ô D1, em dùng hàm =TRANSPOSE(A1:A12) thì nó cho kết quả kéo ngang dữ liệu như hình

Mã:
=IFERROR(1/(1/TOROW(A1:C12)),"")
1720433659235.png

Câu hỏi 2 : em có 2 cột là danh sách Miền và cửa hàng , em phải dùng hàm gì để có kết quả như cột F và G (cái này do yêu cầu của file nên không thể dùng được pivot table)
Mã:
=LET(m,UNIQUE(A2:A16),REDUCE(A1:B1,m,LAMBDA(a,i,VSTACK(a,HSTACK(i,""),IFNA(HSTACK("",FILTER(B2:B16,A2:A16=i)),"")))))
1720433752076.png
 
Câu 01: bạn dùng thử công thức tại ô D1
PHP:
=IF(MOD((COLUMN()-COLUMN($D$1)),3)=0,OFFSET($A$1,INT((COLUMN()-COLUMN($D$1))/3),0),"")
Câu 02: thì dùng Data > Remove Duplicates sau dùng Vlookup
 
Bạn xem thử:


Mã:
=IFERROR(1/(1/TOROW(A1:C12)),"")
View attachment 302239


Mã:
=LET(m,UNIQUE(A2:A16),REDUCE(A1:B1,m,LAMBDA(a,i,VSTACK(a,HSTACK(i,""),IFNA(HSTACK("",FILTER(B2:B16,A2:A16=i)),"")))))
View attachment 302240
Tuyệt vời , Công thức của bạn đúng. Nhưng có 1 tình huống ở câu 1 mà mình chưa lường được lúc đưa file mẫu , đó là cột B cà cột C của mình có dữ liệu chứ không phải là cột trống. *nếu cột B và C trống thì kết quả đúng, còn nếu B và C không trống thì có thể sửa công thức 1 chút hay không
1720434508228.png
 
Lần chỉnh sửa cuối:
Câu 01: bạn dùng thử công thức tại ô D1
PHP:
=IF(MOD((COLUMN()-COLUMN($D$1)),3)=0,OFFSET($A$1,INT((COLUMN()-COLUMN($D$1))/3),0),"")
Câu 02: thì dùng Data > Remove Duplicates sau dùng Vlookup
Công thức này của bạn chỉ ra 1 kết quả duy nhất là 202401 tại ô D1
1720434577676.png
Bài đã được tự động gộp:

Bạn sửa thế này:
Mã:
=LET(rng,A1:A12,v,B1:C1/rng/0,IFERROR(TOROW(HSTACK(rng,v)),""))
Quá tuyệt vời luôn, cảm ơn bạn rất nhiều
 
Công thức của Excel 2021,Không hỗ trợ hàm TOROW và HSTACK:

=LET(a,SEQUENCE(,ROWS(A1:A12)*3,3),INDEX(A1:C12,a/3,MOD(a,3)+1))
vậy vẫn phải dựa vào giá trị B:C rồi bác
em viết cách khác thế này
Mã:
=LET(a,SEQUENCE(,ROWS(A1:A12)*3,0),IF(MOD(a,3),"",INDEX(A1:A12,INT(a/3)+1)))
 
vậy vẫn phải dựa vào giá trị B:C rồi bác
em viết cách khác thế này
Mã:
=LET(a,SEQUENCE(,ROWS(A1:A12)*3,0),IF(MOD(a,3),"",INDEX(A1:A12,INT(a/3)+1)))

Có thử cách này rồi, tôi muốn lấy kết quả cả 3 cột. Haha, đọc đề không kỹ.
 
Công thức này của bạn chỉ ra 1 kết quả duy nhất là 202401 tại ô D1
View attachment 302242
Bài đã được tự động gộp:


Quá tuyệt vời luôn, cảm ơn bạn rất nhiều
Nếu bạn xài excel 365 có thể thử nhé
Mã:
1: =TOROW(EXPAND(A1:A12;;3;""))
2: =REDUCE(A1:B1;UNIQUE(A2:A16);LAMBDA(x;y;IFNA(VSTACK(x;HSTACK(y;VSTACK("";SORT(FILTER(B2:B16;A2:A16=y)))));"")))
 
Thật tuyệt vời, em cảm ơn các anh chị rất nhiều.
Câu 1 , cả 3 cách này đều cho kết quả đúng như em mong muốn :
=LET(rng,A1:A12,v,B1:C1/rng/0,IFERROR(1/(1/TOROW(HSTACK(rng,v))),""))
=LET(a,SEQUENCE(,ROWS(A1:A12)*3,0),IF(MOD(a,3),"",INDEX(A1:A12,INT(a/3)+1)))
=TOROW(EXPAND(A1:A12,,3,""))

Câu 2 : 2 cách này cũng cho kết quả đúng như em mong muốn
=LET(m,UNIQUE(A2:A16),REDUCE(A1:B1,m,LAMBDA(a,i,VSTACK(a,HSTACK(i,""),IFNA(HSTACK("",FILTER(B2:B16,A2:A16=i)),"")))))
=REDUCE(A1:B1;UNIQUE(A2:A16);LAMBDA(x;y;IFNA(VSTACK(x;HSTACK(y;VSTACK("";SORT(FILTER(B2:B16;A2:A16=y)))));"")))

Cảm phiền các anh chị , cho em hỏi thêm 1 yêu cầu bổ sung ở câu 2, nếu em có thêm 1 ô để lọc tháng như vậy thì sẽ sửa công thức như thế nào ạ.
Yêu cầu này , em mới vừa nghĩ ra sau khi dùng được cả 2 công thức mà các anh chị đã hướng dẫn, nên thật xin lỗi vì đã phiền thêm các anh chị do em chưa nghĩ tới ở lúc đầu tiên đặt câu hỏi.

1720449745692.png
 
Lần chỉnh sửa cuối:
nếu em có thêm 1 ô để lọc tháng như vậy thì sẽ sửa công thức như thế nào ạ
Bạn thử lại công thức sau:
Mã:
=LET(d,FILTER(B2:C16,(A2:A16=H1)+(H1="(All)")),c,CHOOSECOLS,m,c(d,1),REDUCE(B1:C1,UNIQUE(m),LAMBDA(a,i,VSTACK(a,HSTACK(i,""),IFNA(HSTACK("",FILTER(c(d,2),m=i)),"")))))
Bạn sửa lại H1 và ký tự "(ALL)" cho phù hợp nếu thay đổi.

----------------------------------------------------------------------------------------------------
Nhờ BQT xem giúp, em không thể tô màu để hướng dẫn được:
1720486662240.png
 

File đính kèm

  • 1720486626298.png
    1720486626298.png
    39.4 KB · Đọc: 4
Trong tag CODE(s) không định dạng được.
Muốn định dạng thì viết ở phần nội dung.
 
Rich (BB code):
=LET(d,FILTER(B2:C16,(A2:A16=H1)+(H1="(All)")),c,CHOOSECOLS,m,c(d,1),REDUCE(B1:C1,UNIQUE(m),LAMBDA(a,i,VSTACK(a,HSTACK(i,""),IFNA(HSTACK("",FILTER(c(d,2),m=i)),"")))))
@Nhattanktnn Em chọn như hình là định dạng được :)
--
1720493142861.png
 
Bạn thử lại công thức sau:
Mã:
=LET(d,FILTER(B2:C16,(A2:A16=H1)+(H1="(All)")),c,CHOOSECOLS,m,c(d,1),REDUCE(B1:C1,UNIQUE(m),LAMBDA(a,i,VSTACK(a,HSTACK(i,""),IFNA(HSTACK("",FILTER(c(d,2),m=i)),"")))))
Bạn sửa lại H1 và ký tự "(ALL)" cho phù hợp nếu thay đổi.

----------------------------------------------------------------------------------------------------
Nhờ BQT xem giúp, em không thể tô màu để hướng dẫn được:
View attachment 302248

Nó báo lỗi #Name? ạ , Ô H1 , em nghĩ là sẽ chỉ có các giá trị là tháng 202401 hoặc 202402 .... nếu muốn lấy hết toàn bộ (cả năm) thì em sẽ để trống
(trong pivot thường lấy hết là (All) nhưng trường hợp này là công thức, nên em nghĩ 1 là chọn tháng cần lấy, 2 là để trống là lấy hết (nên em sẽ nhập tay các giá trị tháng cần lấy vào ô H1 , nếu muốn lấy hết thì em xóa trắng ô H1 là xong)

1720493357005.png
 

File đính kèm

  • Book1.xlsx
    17.4 KB · Đọc: 1
Lần chỉnh sửa cuối:
Trong tag CODE(s) không định dạng được.
Muốn định dạng thì viết ở phần nội dung.
Cảm ơn anh nhé :yahoo: !
--------------
Rich (BB code):
=LET(d,FILTER(B2:C16,(A2:A16=H1)+(H1="(All)")),c,CHOOSECOLS,m,c(d,1),REDUCE(B1:C1,UNIQUE(m),LAMBDA(a,i,VSTACK(a,HSTACK(i,""),IFNA(HSTACK("",FILTER(c(d,2),m=i)),"")))))
@Nhattanktnn Em chọn như hình là định dạng được :)
--
View attachment 302249
Để lần sau em thử, cảm ơn anh ;);)
---------------

À cái zụ khai báo let(c,choosecols,..) này nó có từ phiên bản đã có Groupby. Chắc phiên bản bạn dùng chưa hỗ trợ.
Vậy chỗ "c,choosecols," xóa đi nhé. Và phía sau chỗ nào có "c(...)" thì thay bằng "choosecols(...)". Mình nghĩ tự bạn làm được
 
Cảm ơn anh nhé :yahoo: !
--------------

Để lần sau em thử, cảm ơn anh ;);)
---------------


À cái zụ khai báo let(c,choosecols,..) này nó có từ phiên bản đã có Groupby. Chắc phiên bản bạn dùng chưa hỗ trợ.
Vậy chỗ "c,choosecols," xóa đi nhé. Và phía sau chỗ nào có "c(...)" thì thay bằng "choosecols(...)". Mình nghĩ tự bạn làm được
Cảm ơn bạn rất nhiều, đúng là bản excel 365 của mình chưa có các hàm mới như groupby .
Mình sửa công thức như bạn hướng dẫn và đã làm được rồi : =LET(d,FILTER(B2:C16,A2:A16=H1),m,CHOOSECOLS(d,1),REDUCE(B1:C1,UNIQUE(m),LAMBDA(a,i,VSTACK(a,HSTACK(i,""),IFNA(HSTACK("",FILTER(CHOOSECOLS(d,2),m=i)),"")))))
1720494356197.png

Cảm ơn bạn đã rất nhiệt tình hướng dẫn mình.
 
Web KT

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

Back
Top Bottom