Cô Bé Dễ Thương
Thành viên thường trực




- Tham gia
- 30/9/16
- Bài viết
- 223
- Được thích
- 48
- Giới tính
- Nữ
Gửi bạn cách làm cũng khá nhức đầu:Mình cần giúp đỡ giải pháp dùng công thức (không dùng VBA) để nối liên tiếp danh sách trong nhiều cột thành 1 cột duy nhất.
Chi tiết ở file đính kèm,xin giúp đỡ.Cảm ơn nhiều!
Thử:Mình cần giúp đỡ giải pháp dùng công thức (không dùng VBA) để nối liên tiếp danh sách trong nhiều cột thành 1 cột duy nhất.
Chi tiết ở file đính kèm,xin giúp đỡ.Cảm ơn nhiều!
H4=INDEX(N(OFFSET($B$4,MOD((ROW($1:$28)-1),7),INT((ROW($1:$28)-1)/7))),MATCH(0,INDEX(COUNTIF($I$3:I3,N(OFFSET($B$4,MOD((ROW($1:$28)-1),7),INT((ROW($1:$28)-1)/7))))+COUNTIF((OFFSET($B$4,MOD((ROW($1:$28)-1),7),INT((ROW($1:$28)-1)/7))),""),),0))
hạn chế count anh ơi, haizz hàm này quá nặng luônThử:
Enter fill xuốngPHP:H4=INDEX(N(OFFSET($B$4,MOD((ROW($1:$28)-1),7),INT((ROW($1:$28)-1)/7))),MATCH(0,INDEX(COUNTIF($I$3:I3,N(OFFSET($B$4,MOD((ROW($1:$28)-1),7),INT((ROW($1:$28)-1)/7))))+COUNTIF((OFFSET($B$4,MOD((ROW($1:$28)-1),7),INT((ROW($1:$28)-1)/7))),""),),0))
Chúc bạn ngày vui
Mỗi công thức có hạn chế của nó, của em thì phải nhấn CSE, của anh thì không, dùng COUNTIF() lúc nào cũng nhẹ hơn SMALL(), vì SMALL() bê nguyên cả mảng ra chơi, trong khi COUNTIF() là Vùng.hạn chế count anh ơi, haizz hàm này quá nặng luôn
lại thêm kiến thức khà khà, có một đề tài em đang suy nghĩ là đếm không trùng theo 1 điều kiện nhất định, nhưng khó là dùng countifs 2 điều kiện trở lên với so sánh thêm với mảng khiến nó nặng quá, anh có giải pháp khác không.Mỗi công thức có hạn chế của nó, của em thì phải nhấn CSE, của anh thì không, dùng COUNTIF() lúc nào cũng nhẹ hơn SMALL(), vì SMALL() bê nguyên cả mảng ra chơi, trong khi COUNTIF() là Vùng.
Em muốn yêu cầu gì cho file này?lại thêm kiến thức khà khà, có một đề tài em đang suy nghĩ là đếm không trùng theo 1 điều kiện nhất định, nhưng khó là dùng countifs 2 điều kiện trở lên với so sánh thêm với mảng khiến nó nặng quá, anh có giải pháp khác không.
ở đây thì nó sát nhau dùng offset được giả sử vị trí tùy ý thì anh xử lý thế nào ạ
một cách giải tìm không trùng theo ngày điều kiện là số máy.Em muốn yêu cầu gì cho file này?
Thứ nhất: dữ liệu >1000 dòng mà dùng công thức mảng là dại, vì sẽ làm chậm tốc đô máy.một cách giải tìm không trùng theo ngày điều kiện là số máy.
yêu cầu tìm trên 1 vùng rộng có thể không sát nhau.
nhanh là ưu tiên hàng đầu khà khà
sao cột số máy anh lại dùng count cả mảng với mảng thế ạ, chỉ cần count với 1 ô số máy thôi, dĩ nhiên dữ liệu lớn thì cứ pivote cho nó lành. Trên 1 ngàn dòng count muốn đứng máyThứ nhất: dữ liệu >1000 dòng mà dùng công thức mảng là dại, vì sẽ làm chậm tốc đô máy.
Thứ hai: Cái này dùng Pivot Table, rồi kết hợp dùng công thức sau thì nhẹ nhàng hơn.
=SUMPRODUCT((Data!$A$2:$A$2022=A2)/COUNTIFS(Data!$A$2:$A$2022,Data!$A$2:$A$2022,Data!$D$2:$D$2022,Data!$D$2:$D$2022))
Không cần dùng name.
Hoặc dùng Pivot Table, Máy và Ngày. Sau đó dùng bảng này Count lại Ngày.
Ngoài ra, để nhẹ hơn nữa chỉ có dùng cột phụ, và cuối cùng là chọn VBA.
Em hay dùng bài chỗ này qua chỗ khác hỏi quá!sao cột số máy anh lại dùng count cả mảng với mảng thế ạ, chỉ cần count với 1 ô số máy thôi, dĩ nhiên dữ liệu lớn thì cứ pivote cho nó lành. Trên 1 ngàn dòng count muốn đứng máy
dạ để em rút kinh nghiệm, vâng cách của anh bebo021999 em có xem và em cũng có 1 file dữ liệu tương tự, em chỉ là muốn xem anh có cách nào để học thêmEm hay dùng bài chỗ này qua chỗ khác hỏi quá!
Ý của anh và anh @bebo021999 giống nhau.
http://www.giaiphapexcel.com/diendan/threads/Đếm-số-ngày.125996/#post-792803
hạn chế count anh ơi, haizz hàm này quá nặng luôn
đang tính kêu anh xem hề hề
Cảm ơn mọi người đã giúp đỡ.Gửi bạn cách làm cũng khá nhức đầu:
Bạn xem file này thử:Cảm ơn mọi người đã giúp đỡ.
Hiện vẫn còn 1 hạn chế nữa đó là dữ liệu nó là text thì công thức báo lỗi.
Với hàm có thể sửa nó nhảy đúng cả với dữ liệu là text hoặc số có chiều lớn nhỏ bất kỳ.
Xin giúp đỡ!
Cảm ơn mọi người đã giúp đỡ.
Hiện vẫn còn 1 hạn chế nữa đó là dữ liệu nó là text thì công thức báo lỗi.
Với hàm có thể sửa nó nhảy đúng cả với dữ liệu là text hoặc số có chiều lớn nhỏ bất kỳ.
Xin giúp đỡ!
Chị sử dụng công thức hay VBA vậy chị?Góp vui cách khác, hơi dài
hàm dài quá hoa cả mắt.Góp vui cách khác, hơi dài
chị Hien sử dụng hàm đó em.Chị sử dụng công thức hay VBA vậy chị?
Tại do em sử dụng điện thoại nên không thể nhìn thấy được, có gì tối về em nghiên cứuchị Hien sử dụng hàm đó em.
dài lắm đọc khùng luôn hahaTại do em sử dụng điện thoại nên không thể nhìn thấy được, có gì tối về em nghiên cứu
sao không đặt tên row(indirect...+row) với row(indirect...+column) cho nó ngắn @@Góp vui cách khác, hơi dài
Thực ra thế là chưa dài đâu, lắm cao thủ viết công thức dài mấy nghìn ký tự, mà toàn dùng hàm if mới tài.hàm dài quá hoa cả mắt.
Có mấy đoạn dài mà lặp lại, nếu đặt name chắc đỡ khủng hơn. Nhưng nhiều khi khó áp dụng, đặt name linh tinh là nó lại không chạy đượcsao không đặt tên row(indirect...+row) với row(indirect...+column) cho nó ngắn @@
ôi cao thủ xài if mấy ngàn dòng nghe mà muốn quỳ, trong 3 tháng vào hội thấy toàn cao thủ hỏi bài không, mức độ phức tạp ghê thậtThực ra thế là chưa dài đâu, lắm cao thủ viết công thức dài mấy nghìn ký tự, mà toàn dùng hàm if mới tài.
Được cái là nó dùng name, thay đổi vùng nguồn thoải mái mà công thức không phải chỉnh gì mấy.
đặt tên : GPE=Công thức sau đó = GPE hết bao ngắnCó mấy đoạn dài mà lặp lại, nếu đặt name chắc đỡ khủng hơn. Nhưng nhiều khi khó áp dụng, đặt name linh tinh là nó lại không chạy được
Mấy nghìn "Ký tự" chứ, ngàn dòng thì excel chịu sao được anh.ôi cao thủ xài if mấy ngàn dòng nghe mà muốn quỳ, trong 3 tháng vào hội thấy toàn cao thủ hỏi bài không, mức độ phức tạp ghê thật![]()
chết ghi nhầm, đi làm suốt giờ ai cũng soi dữ lắm há há.Mấy nghìn "Ký tự" chứ, ngàn dòng thì excel chịu sao được anh.
Góp vui với chị, không dùng transpose:Góp vui cách khác, hơi dài
=INDEX($B$4:$E$28,MOD(SMALL(IF($B$4:$E$28<>"",--($B$3:$E$3&"."&TEXT(ROW($A$1:$A$25),"000"))),ROW(A1)),1)*1000,SMALL(IF($B$4:$E$28<>"",--($B$3:$E$3&"."&TEXT(ROW($A$1:$A$25),"000"))),ROW(A1)))
Bỏ hàm text, với cả nên tính đến loại bỏ những ô không liên quan, chỉ viết công thức thao tác trực tiếp trên vùng dữ liệu thì hay hơn.Góp vui với chị, không dùng transpose:
Ctrl+Shift+Enter!!!Mã:=INDEX($B$4:$E$28,MOD(SMALL(IF($B$4:$E$28<>"",--($B$3:$E$3&"."&TEXT(ROW($A$1:$A$25),"000"))),ROW(A1)),1)*1000,SMALL(IF($B$4:$E$28<>"",--($B$3:$E$3&"."&TEXT(ROW($A$1:$A$25),"000"))),ROW(A1)))
=INDEX($B$4:$E$28,MOD(SMALL(IF($B$4:$E$28<>"",($B$3:$E$3+ROW($A$1:$A$25)/1000)),ROW(A1)),1)*1000,SMALL(IF($B$4:$E$28<>"",($B$3:$E$3+ROW($A$1:$A$25)/1000)),ROW(A1)))
các cao thủ thội tụ, bữa nào bí quá cũng phải để ý tới chị HienBỏ hàm text, với cả nên tính đến loại bỏ những ô không liên quan, chỉ viết công thức thao tác trực tiếp trên vùng dữ liệu thì hay hơn.
Mã:=INDEX($B$4:$E$28,MOD(SMALL(IF($B$4:$E$28<>"",($B$3:$E$3+ROW($A$1:$A$25)/1000)),ROW(A1)),1)*1000,SMALL(IF($B$4:$E$28<>"",($B$3:$E$3+ROW($A$1:$A$25)/1000)),ROW(A1)))
Về công nghệ thì cũng la lá nhau là dùng một con số để định vị địa chỉ của mỗi ô.
các cao thủ thội tụ, bữa nào bí quá cũng phải để ý tới chị Hien![]()
Vẫn còn 1 tý nữa bạn ạ.Nếu có thể sửa thêm được phần này thì trở thành hàm hiệu quả nhất cho vấn đề này.Cụ thể như ảnh bạn xử lý giúp mình vớiBạn xem file này thử:
các đối số row() này là chỉ chiều dài của dòng hoặc cột, nếu muốn tự động thì phải xem file của bạn muốn công thức như thế nào:Vẫn còn 1 tý nữa bạn ạ.Nếu có thể sửa thêm được phần này thì trở thành hàm hiệu quả nhất cho vấn đề này.Cụ thể như ảnh bạn xử lý giúp mình với[/IMG]
[/IMG]![]()
cảm ơn nhiều.Diễn đàn toàn người giỏi thank http://www.giaiphapexcel.comGóp vui cách khác, hơi dài
Mảng của mình 50 cột 820 dòng tổng bằng 41000 giá trị.Nhưng trong bảng này thường chỉ có vài cột là có giá trị.Mình nghĩ nếu cáo Refence của Row() mà tham chiếu được thì ngon quácác đối số row() này là chỉ chiều dài của dòng hoặc cột, nếu muốn tự động thì phải xem file của bạn muốn công thức như thế nào:
có phải bạn muốn tạo 1 mảng dữ liệu động không cố định ??
41000 giá trị thì nhờ ai làm VBA đi bạn công thức này rất nặng đấyMảng của mình 50 cột 820 dòng tổng bằng 41000 giá trị.Nhưng trong bảng này thường chỉ có vài cột là có giá trị.Mình nghĩ nếu cáo Refence của Row() mà tham chiếu được thì ngon quá
Ok rồi bạn.Mình xem hàm của NguyenNgocThuHien và hàm của bạn có hiệu chỉnh được rồi.Chắc lần này là full rồi.Topnick này 2 trang bằng iem đọc diễn đàn Tây cả tuần. Bên mình giỏi hơn bên nó hècác đối số row() này là chỉ chiều dài của dòng hoặc cột, nếu muốn tự động thì phải xem file của bạn muốn công thức như thế nào:
có phải bạn muốn tạo 1 mảng dữ liệu động không cố định ??
bạn chưa kiếm thấy mấy trang chuyện nghiệp bên đó nên nói vậy thôi.OK rồi
Ok rồi bạn.Mình xem hàm của NguyenNgocThuHien có hiệu chỉnh được rồi.Chắc lần này là full rồi.Topnick này 2 trang bằng iem đọc diễn đàn Tây cả tuần. Bên mình giỏi hơn bên nó hè
Anh nói chính xác, em cũng đang nghiên cứu trang này.bạn chưa kiếm thấy mấy trang chuyện nghiệp bên đó nên nói vậy thôi.
bữa có anh nào cho trang http://www.mrexcel.com/ thì phải.
híc mù tiếng anh thì phải làm saoAnh nói chính xác, em cũng đang nghiên cứu trang này.
Nên đọc tiếng Việt trước, thông thạo tiếng Việt rồi tìm hiểu những cái của Tây sẽ dễ hơn.híc mù tiếng anh thì phải làm sao![]()
tiếng Việt học không hết được luônNên đọc tiếng Việt trước, thông thạo tiếng Việt rồi tìm hiểu những cái của Tây sẽ dễ hơn.
Chỉ cần thông thạo thôi anh, chứ học hết làm sao được. Học tiếng Anh nó như đuổi hình bắt chữ ý, có căn cơ trước mới dễ đoán.tiếng Việt học không hết được luôn![]()
còn trẻ lắm không dám làm anhChỉ cần thông thạo thôi anh, chứ học hết làm sao được. Học tiếng Anh nó như đuổi hình bắt chữ ý, có căn cơ trước mới dễ đoán.
Thấy mọi người làm cho bạn hết rồi mà!!!@eke_rula bạn xem thử kiểu dạng này
với xem qua bài của mình với ^^
http://www.giaiphapexcel.com/diendan/threads/nhờ-giúp-hàm-ngày-hết-hạn.126044/
hi bạn có hàm nào ngắn không, ý mình muốn vậyThấy mọi người làm cho bạn hết rồi mà!!!
=IFERROR(INDIRECT("R"&MID(REPT(TEXT(SMALL(IF(LEN($B$4:$E$10);COLUMN($B$4:$E$10)+ROW($B$4:$E$10)/1000);ROW(A1));"00,000")&"C";2);4;6););"")
Công thức của Anh bá đạo thật, nhưng mà hay,Tà đạo
Mã:=IFERROR(INDIRECT("R"&MID(REPT(TEXT(SMALL(IF(LEN($B$4:$E$10);COLUMN($B$4:$E$10)+ROW($B$4:$E$10)/1000);ROW(A1));"00,000")&"C";2);4;6););"")
sao em gõ nó không ra anhTà đạo
Mã:=IFERROR(INDIRECT("R"&MID(REPT(TEXT(SMALL(IF(LEN($B$4:$E$10);COLUMN($B$4:$E$10)+ROW($B$4:$E$10)/1000);ROW(A1));"00,000")&"C";2);4;6););"")
Công thức mảng đó bạn.sao em gõ nó không ra anh![]()
anh cho em xin file đi chứ ";" nó không có ra, em đổi thành dấu "," rồi. nó ra:Công thức mảng đó bạn.
Bạn sửa dấu ";" thành dấu "," thì phải sửa dấu "," thành dấu "." mới được. Thôi sửa công thức lại khỏi lăn tăn vụ dấu ","anh cho em xin file đi chứ ";" nó không có ra, em đổi thành dấu "," rồi. nó ra:
=IFERROR(INDIRECT({"R002C00"},),"")
=IFERROR(INDIRECT("R"&MID(REPT(TEXT(SMALL(IF(LEN($B$4:$E$10);COLUMN($B$4:$E$10)*1000+ROW($B$4:$E$10));ROW(A1));"000000")&"C";2);4;7););"")
Cái ";" "." là chỉnh trong excel hay trên hệ thống đó anh.Bạn sửa dấu ";" thành dấu "," thì phải sửa dấu "," thành dấu "." mới được. Thôi sửa công thức lại khỏi lăn tăn vụ dấu ","
Mã:=IFERROR(INDIRECT("R"&MID(REPT(TEXT(SMALL(IF(LEN($B$4:$E$10);COLUMN($B$4:$E$10)*1000+ROW($B$4:$E$10));ROW(A1));"000000")&"C";2);4;7););"")
Không cần chỉnh hệ thống. Bạn sửa lại công thức cho phù hợp là được mà. Mà file ở bài 56 trên máy bạn được chưa?Cái ";" "." là chỉnh trong excel hay trên hệ thống đó anh.
Công thức này hay, nhưng ít người sài dạng "RC" ngoài bảng tính nên ít người hiểu!!!Bạn sửa dấu ";" thành dấu "," thì phải sửa dấu "," thành dấu "." mới được. Thôi sửa công thức lại khỏi lăn tăn vụ dấu ","
Mã:=IFERROR(INDIRECT("R"&MID(REPT(TEXT(SMALL(IF(LEN($B$4:$E$10);COLUMN($B$4:$E$10)*1000+ROW($B$4:$E$10));ROW(A1));"000000")&"C";2);4;7););"")
Được anh ơiKhông cần chỉnh hệ thống. Bạn sửa lại công thức cho phù hợp là được mà. Mà file ở bài 56 trên máy bạn được chưa?
hot quá ẩn thân rồi, hà hà vụ công thức lặp đã tạo ra kết quả ngắn nhất có thể, không biết còn ngắn hơn được khôngCông thức này hay, nhưng ít người sài dạng "RC" ngoài bảng tính nên ít người hiểu!!!
Ct nào!!!hot quá ẩn thân rồi, hà hà vụ công thức lặp đã tạo ra kết quả ngắn nhất có thể, không biết còn ngắn hơn được không![]()
![]()
=SUBSTITUTE(IF(A$1=1," ",B13&IFERROR(", "&INDEX(B$3:B$10,SMALL(IF(A$3:A$10=A13,ROW($1:$8)),A$1-1)),""))," , ","")Ct nào!!!
Ah cái bài sử dụng Iter cal đó hả, em nghĩ đâu cần phải xóa dấu , cuối chi, để luôn cũng được mà, mà chắc cách anh ngắn nhất rồi đó, mà anh hiểu nó chạy không???=SUBSTITUTE(IF(A$1=1," ",B13&IFERROR(", "&INDEX(B$3:B$10,SMALL(IF(A$3:A$10=A13,ROW($1:$8)),A$1-1)),""))," , ","")
hê hê![]()
4. Trong những chủ đề thảo luận nghiêm túc, tránh nói bâng quơ, sa đà vào chuyện riêng tư.
5. Bài viết phải được gửi (post) ở đúng vị trí, đúng mục (box) và đúng chủ đề (topic).
Sorry anh, em không để ý!!!Lạc đề rồi các bạn. Vi phạm nội quy đó![]()
hãi thật. thankBạn sửa dấu ";" thành dấu "," thì phải sửa dấu "," thành dấu "." mới được. Thôi sửa công thức lại khỏi lăn tăn vụ dấu ","
Mã:=IFERROR(INDIRECT("R"&MID(REPT(TEXT(SMALL(IF(LEN($B$4:$E$10);COLUMN($B$4:$E$10)*1000+ROW($B$4:$E$10));ROW(A1));"000000")&"C";2);4;7););"")
Lạc đề rồi các bạn. Vi phạm nội quy đó![]()