Xuất dữ liệu ra cột, tìm và điền thông tin tương ứng với điều kiện tìm kiếm, bài toán khó (1 người xem)

  • Thread starter Thread starter joehui
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

Tôi tuân thủ nội quy khi đăng bài
Chào bạn HieuCD,

tại vị trí Y2, bạn đã làm công thức
Y2 =IFERROR(INDEX($A$3:$A$23,MATCH(0,COUNTIF($Y$1:Y1,IF(LEFT($A$3:$A$23,8)="Congtyab",$A$3:$A$23,$Y$1)),0)),"")
và kết quả trả về là chính xác

Vì dữ liệu cột A có lúc sẽ nhiều, có lúc sẽ ít, và có lúc sẽ rất nhiều
Mình đã thử để tăng số lượng dòng lên từ $A$3:$A$23 thành $A$3:$A$10000 thì máy tính xử lý rất chậm và phải chờ

Tại cột A lúc nào củng xuất hiện dòng cuối cùng với nội dung là Total(x) trong đó X là số lượng CongtyABxxx
Mình có thể dùng thông tin vị trí ô cuối cùng cột A để xác định độ dài vị trí dò tìm là vị trị hàng thứ mấy đó trừ đi một,

lúc này chổ $A$3:$A$23 mình dùng công thức xác định vị trí ô có nội dung là "Total(7)" trong cột A thay thấy cho con số cố định là A23

Không biết ý tưởng này mình có khả thi không bạn

Cám ơn
 
Chào bạn HieuCD,

tại vị trí Y2, bạn đã làm công thức
Y2 =IFERROR(INDEX($A$3:$A$23,MATCH(0,COUNTIF($Y$1:Y1,IF(LEFT($A$3:$A$23,8)="Congtyab",$A$3:$A$23,$Y$1)),0)),"")
và kết quả trả về là chính xác

Vì dữ liệu cột A có lúc sẽ nhiều, có lúc sẽ ít, và có lúc sẽ rất nhiều
Mình đã thử để tăng số lượng dòng lên từ $A$3:$A$23 thành $A$3:$A$10000 thì máy tính xử lý rất chậm và phải chờ

Tại cột A lúc nào củng xuất hiện dòng cuối cùng với nội dung là Total(x) trong đó X là số lượng CongtyABxxx
Mình có thể dùng thông tin vị trí ô cuối cùng cột A để xác định độ dài vị trí dò tìm là vị trị hàng thứ mấy đó trừ đi một,

lúc này chổ $A$3:$A$23 mình dùng công thức xác định vị trí ô có nội dung là "Total(7)" trong cột A thay thấy cho con số cố định là A23

Không biết ý tưởng này mình có khả thi không bạn

Cám ơn
Đặt tên "Data" cho vùng dữ liệu theo công thức
Mã:
Data = Sheet1!$A$3:INDEX(Sheet1!$A$2:$A$99999,MATCH("Total*",Sheet1!$A$3:$A$99999,0),)
Công thức ngoài sheet
Mã:
Y2 =IFERROR(INDEX(Data,MATCH(0,COUNTIF($Y$1:Y1,IF(LEFT(Data,8)="Congtyab",Data,$Y$1)),0)),"")
Lưu ý nếu dữ liệu nhiều tạo cột phụ sẽ nhẹ file hơn
 

File đính kèm

2- Nếu mình làm bằng VBA thì có OK không? (công thức cũng được nhưng sẽ nặng máy nếu data của bạn có vài ngàn dòng)
Theo bài này mình đã hỏi trước về việc dùng VBA nếu data lớn
Mình đã thử để tăng số lượng dòng lên từ $A$3:$A$23 thành $A$3:$A$10000 thì máy tính xử lý rất chậm và phải chờ
Quả đúng là như vậy.
Nếu bạn dùng 2021 hay 365 thì sẽ có nhiều hàm tân thời để dùng.
Không thì phải VBA thôi.
Áo bạn si?
 
Theo bài này mình đã hỏi trước về việc dùng VBA nếu data lớn

Quả đúng là như vậy.
Nếu bạn dùng 2021 hay 365 thì sẽ có nhiều hàm tân thời để dùng.
Không thì phải VBA thôi.
Áo bạn si?
Mình chỉ dùng được excel các phiên bản tầm 2007 hoặc 2013, VBA ko dùng được bạn ơi, cám ơn bạn nhiều, chắc còn cách tạo cột phụ xem có giảm tải được không
Bài đã được tự động gộp:

Đặt tên "Data" cho vùng dữ liệu theo công thức
Mã:
Data = Sheet1!$A$3:INDEX(Sheet1!$A$2:$A$99999,MATCH("Total*",Sheet1!$A$3:$A$99999,0),)
Công thức ngoài sheet
Mã:
Y2 =IFERROR(INDEX(Data,MATCH(0,COUNTIF($Y$1:Y1,IF(LEFT(Data,8)="Congtyab",Data,$Y$1)),0)),"")
Lưu ý nếu dữ liệu nhiều tạo cột phụ sẽ nhẹ file hơn
Cột phụ dạng này được không bạn

CongtyAB115
Hang loai 1
Hang loai 2
Hang loai 3
CongtyAB789
Hang loai 1
CongtyAB333Hang loai 2
Hang loai 3
Total(3)
 
Mình chỉ dùng được excel các phiên bản tầm 2007 hoặc 2013, VBA ko dùng được bạn ơi, cám ơn bạn nhiều, chắc còn cách tạo cột phụ xem có giảm tải được không
Bài đã được tự động gộp:


Cột phụ dạng này được không bạn

CongtyAB115
Hang loai 1
Hang loai 2
Hang loai 3
CongtyAB789
Hang loai 1
CongtyAB333Hang loai 2
Hang loai 3
Total(3)
Dùng 1 cột phụ đánh số thứ tự những dòng có công ty (1, 2, 3 . . .)
 
Đã mất công dùng cột phụ thì liệt kê tên công ty luôn:
Cty A
Cty A Hang loai 1
Cty A Hang loai 2
Cty A Hang loai 3
CtyB
....
Sau đó dùng SUMIFS thì nhanh nhất
 
Ở đấy mà than "bài toán khó".
Khó là ở chỗ cơ quan hà tiện và thiếu khả năng quản lý chứ đâu phả lỗi của vấn đề.

Đã muốn chinh phục công việc rắc rối thì phải sẵn sàng bỏ ra chút phí, mua phiên bản phần mềm cao cấp hơn (365); và/hoặc phải uyển chuyển đủ để chấp nhận rằng "VBA đượ sunh ra để giải quyết những trường hợp khó nhai".
 
Ở đấy mà than "bài toán khó".
Khó là ở chỗ cơ quan hà tiện và thiếu khả năng quản lý chứ đâu phả lỗi của vấn đề.

Đã muốn chinh phục công việc rắc rối thì phải sẵn sàng bỏ ra chút phí, mua phiên bản phần mềm cao cấp hơn (365); và/hoặc phải uyển chuyển đủ để chấp nhận rằng "VBA đượ sunh ra để giải quyết những trường hợp khó nhai
Cám ơn bạn trao đổi, dùng excel 365 thì dc, nhưng sau đó file đó ko import lại dc vào hệ thống, mọi người dg nâng cấp phần mềm
Bài đã được tự động gộp:

Dùng 1 cột phụ đánh số thứ tự những dòng có công ty (1, 2, 3 . . .)
Thoải mái bạn ơi
 
Lần chỉnh sửa cuối:
Đặt tên "Data" cho vùng dữ liệu theo công thức
Mã:
Data = Sheet1!$A$3:INDEX(Sheet1!$A$2:$A$99999,MATCH("Total*",Sheet1!$A$3:$A$99999,0),)
Công thức ngoài sheet
Mã:
Y2 =IFERROR(INDEX(Data,MATCH(0,COUNTIF($Y$1:Y1,IF(LEFT(Data,8)="Congtyab",Data,$Y$1)),0)),"")
Lưu ý nếu dữ liệu nhiều tạo cột phụ sẽ nhẹ file hơn
File bạn chạy vèo vèo,
mình làm vầy ko biết sai chổ nào mà ko chạy bạn xem thử

Data = 'D:\SV\AG\Copy\[Report.xlsx]Sheet1'!$A$3:INDEX('D:\SV\AG\Copy\[Report.xlsx]Sheet1'!$A$2:$A$10000,MATCH("Total*",'D:\SV\AG\Copy\[Report.xlsx]Sheet1'!$A$3:$A$10000,0),)


Y2 =IFERROR(INDEX(Data,MATCH(0,COUNTIF($Y$1:Y1,IF(LEFT(Data,8)="Congtyab",Data,$Y$1)),0)),"")

sau khi chạy Y2 ko xuất hiện gì cả, mò hoài hok thông được
bạn xem giúp mình sai chổ nào nhé
 
File bạn chạy vèo vèo,
mình làm vầy ko biết sai chổ nào mà ko chạy bạn xem thử

Data = 'D:\SV\AG\Copy\[Report.xlsx]Sheet1'!$A$3:INDEX('D:\SV\AG\Copy\[Report.xlsx]Sheet1'!$A$2:$A$10000,MATCH("Total*",'D:\SV\AG\Copy\[Report.xlsx]Sheet1'!$A$3:$A$10000,0),)


Y2 =IFERROR(INDEX(Data,MATCH(0,COUNTIF($Y$1:Y1,IF(LEFT(Data,8)="Congtyab",Data,$Y$1)),0)),"")

sau khi chạy Y2 ko xuất hiện gì cả, mò hoài hok thông được
bạn xem giúp mình sai chổ nào nhé
Nhập công thức ô Y2 xong nhấn Ctrl+Shift+enter
 
Mình kiểm tra lại thấy không được
Nghĩa là bắt buộc phải để chung 1 file hả bạn
Bài đã được tự động gộp:

Nếu từ cột A tới cột L mà tách riêng dc 1 file, thì sẽ đỡ rất nhiều công đoạn, còn từ cột M trở về tới cột W mình củng tách ra 1 sheet,
Cột X tới cột AH mình tách ra 1 sheet

Đã áp dụng công thức của bạn thành công tốt đẹp,

Chỉ có tối ưu hóa chiều dài của cột A bằng tự động cách mới chưa được

File gộp chung bạn làm chính xác 100%

Có giải pháp nào cho Y2 khi cột A tới cột L tách riêng ra 1 file để chung folder ko bạn
Vẫn dùng ô rrong cột A có nội dung Total(X) để xác định độ dài
 
Lần chỉnh sửa cuối:
Nghĩa là bắt buộc phải để chung 1 file hả bạn
Bài đã được tự động gộp:

Nếu từ cột A tới cột L mà tách riêng dc 1 file, thì sẽ đỡ rất nhiều công đoạn, còn từ cột M trở về tới cột W mình củng tách ra 1 sheet,
Cột X tới cột AH mình tách ra 1 sheet

Đã áp dụng công thức của bạn thành công tốt đẹp,

Chỉ có tối ưu hóa chiều dài của cột A bằng tự động cách mới chưa được

File gộp chung bạn làm chính xác 100%

Có giải pháp nào cho Y2 khi cột A tới cột L tách riêng ra 1 file để chung folder ko bạn
Vẫn dùng ô rrong cột A có nội dung Total(X) để xác định độ dài
Bạn nhờ bạn bài #23 viết code VBA
 
Web KT

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

Back
Top Bottom