Tìm tổng chuỗi con trong chuỗi lớn (1 người xem)

Liên hệ QC

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

hoangtechu

Thành viên hoạt động
Tham gia
8/7/11
Bài viết
105
Được thích
49
Em có 1 vấn đề khá là đau đầu ( với em) nhờ mọi người trong diễn đàn giúp đỡ.
Em có chuỗi các mã phân cách nhau bằng dấu +.
Em ví dụ như này ạ:
MCD+2AUL
MCG
AUL+MCG

Bây giờ em muốn tổng hợp lại kết quả như này:
MCD : 1
MAG:2
AUL:3
mọi người xem giúp em với nhé. tks cả nhà
 

File đính kèm

Em có 1 vấn đề khá là đau đầu ( với em) nhờ mọi người trong diễn đàn giúp đỡ.
Em có chuỗi các mã phân cách nhau bằng dấu +.
Em ví dụ như này ạ:
MCD+2AUL
MCG
AUL+MCG

Bây giờ em muốn tổng hợp lại kết quả như này:
MCD : 1
MAG:2
AUL:3
mọi người xem giúp em với nhé. tks cả nhà
Cho thêm 5 chục dòng dữ liệu xem cái nèo?
 

File đính kèm

File đính kèm

Thêm giải pháp công thức:
Mã:
E2=SUMPRODUCT(ISNUMBER(SEARCH(T(TEXT(COLUMN($A:$J)-1," #"))&D2," "&SUBSTITUTE($A$2:$A$36,"+"," ")))*{1,1,2,3,4,5,6,7,8,9})
Enter, fill xuống.
Thân
cảm ơn bạn nhé
Bạn có thể giải thích công thức giúp mình được không? nhìn rối quá không hiểu được ạ :)
 
Thêm giải pháp công thức:
Mã:
E2=SUMPRODUCT(ISNUMBER(SEARCH(T(TEXT(COLUMN($A:$J)-1," #"))&D2," "&SUBSTITUTE($A$2:$A$36,"+"," ")))*{1,1,2,3,4,5,6,7,8,9})
Enter, fill xuống.
Thân

cảm ơn bạn nhé
Bạn có thể giải thích công thức giúp mình được không? nhìn rối quá không hiểu được ạ :)
Bạn ơi
cho mình hỏi
{1,1,2,3,4,5,6,7,8,9} chuỗi này mục đích để làm gì nhỉ?
 
cảm ơn bạn nhé
Bạn có thể giải thích công thức giúp mình được không? nhìn rối quá không hiểu được ạ :)
=SUMPRODUCT(ISNUMBER(SEARCH(T(TEXT(COLUMN($A:$J)-1," #"))&D2," "&SUBSTITUTE($A$2:$A$36,"+"," ")))*{1,1,2,3,4,5,6,7,8,9})
Còn có thể viết bằng:
=SUMPRODUCT(ISNUMBER(SEARCH({" ",1,2,3,4,5,6,7,8,9}&D2," "&SUBSTITUTE($A$2:$A$36,"+"," ")))*{1,1,2,3,4,5,6,7,8,9})
  • Mảng1= {" ",1,2,3,4,5,6,7,8,9}&D2 --> {" MCD","1MCD","2MCD","3MCD","4MCD","5MCD","6MCD","7MCD","8MCD","9MCD"}
  • Mảng2= " "&SUBSTITUTE($A$2:$A$36,"+"," ")-->Nối Vùng A2:A36, mà Vùng này đã thay các dấu + bằng ký tự rỗng, Vd: "MCD+2AUL" thành "MCD 2AUL", sau đó nối thêm 1 ký tự rỗng ở đầu nữa, Vd: " "&"MCD 2AUL" thành " MCD 2AUL", tức lúc nào cũng có 1 ký tự rỗng trước các đoạn.
  • ISNUMBER(SEARCH( Mảng1, Mảng2))--> Tức tìm các ký tự Mảng1 trong Mảng2, nếu có search() trả về số thứ tự ký tự, nếu không tìm thấy nó báo lỗi #VALUE, nhưng nhở hàm ISNUMBER() nên với những ô mà nó tìm thấy nó báo TRUE, lỗi thì FALSE. Ở đây kết quả sẽ ra 1 Mảng 2 chiều có số cột là 10 cột (ứng với mảng 1), và có số dòng là chiều dài của Vùng A2:A36.
  • Tương ứng với Mảng1: {" MCD","1MCD","2MCD","3MCD","4MCD","5MCD","6MCD","7MCD","8MCD","9MCD"}, ta thấy " MCD" sẽ bằng "1MCD" tức bằng 1, "2MCD" bằng 2, "3MCD" bằng 3......; Vì vậy ta tạo Mảng tương ứng với các vị trí của Mảng 1 là {1,1,2,3,4,5,6,7,8,9}.
  • Cuối cùng, nhân 2 Mảng =ISNUMBER(SEARCH( Mảng1, Mảng2))*{1,1,2,3,4,5,6,7,8,9} tức những giá trị TRUE sẽ lấy tương ứng giá trị trong Mảng {1,1,2,3,4,5,6,7,8,9}. Dùng SUMPRODUCT() để cộng lại các giá trị của 2 Mảng nah6n nhau đó.
Thân
 
Thêm giải pháp công thức:
Mã:
E2=SUMPRODUCT(ISNUMBER(SEARCH(T(TEXT(COLUMN($A:$J)-1," #"))&D2," "&SUBSTITUTE($A$2:$A$36,"+"," ")))*{1,1,2,3,4,5,6,7,8,9})
Enter, fill xuống.
Thân
Sửa chuỗi MCD+2AUL tại cell A2 thành 0MCD+2AUL thì kết quả sẽ sai
Hình như nó "kị" con zero hay sao ấy
Cũng chuỗi trên, sửa thành MCD+12AUL lại sai tiếp
Hình như nó "kị" con số bự hay sao ấy
 
=SUMPRODUCT(ISNUMBER(SEARCH(T(TEXT(COLUMN($A:$J)-1," #"))&D2," "&SUBSTITUTE($A$2:$A$36,"+"," ")))*{1,1,2,3,4,5,6,7,8,9})
Còn có thể viết bằng:
=SUMPRODUCT(ISNUMBER(SEARCH({" ",1,2,3,4,5,6,7,8,9}&D2," "&SUBSTITUTE($A$2:$A$36,"+"," ")))*{1,1,2,3,4,5,6,7,8,9})
  • Mảng1= {" ",1,2,3,4,5,6,7,8,9}&D2 --> {" MCD","1MCD","2MCD","3MCD","4MCD","5MCD","6MCD","7MCD","8MCD","9MCD"}
  • Mảng2= " "&SUBSTITUTE($A$2:$A$36,"+"," ")-->Nối Vùng A2:A36, mà Vùng này đã thay các dấu + bằng ký tự rỗng, Vd: "MCD+2AUL" thành "MCD 2AUL", sau đó nối thêm 1 ký tự rỗng ở đầu nữa, Vd: " "&"MCD 2AUL" thành " MCD 2AUL", tức lúc nào cũng có 1 ký tự rỗng trước các đoạn.
  • ISNUMBER(SEARCH( Mảng1, Mảng2))--> Tức tìm các ký tự Mảng1 trong Mảng2, nếu có search() trả về số thứ tự ký tự, nếu không tìm thấy nó báo lỗi #VALUE, nhưng nhở hàm ISNUMBER() nên với những ô mà nó tìm thấy nó báo TRUE, lỗi thì FALSE. Ở đây kết quả sẽ ra 1 Mảng 2 chiều có số cột là 10 cột (ứng với mảng 1), và có số dòng là chiều dài của Vùng A2:A36.
  • Tương ứng với Mảng1: {" MCD","1MCD","2MCD","3MCD","4MCD","5MCD","6MCD","7MCD","8MCD","9MCD"}, ta thấy " MCD" sẽ bằng "1MCD" tức bằng 1, "2MCD" bằng 2, "3MCD" bằng 3......; Vì vậy ta tạo Mảng tương ứng với các vị trí của Mảng 1 là {1,1,2,3,4,5,6,7,8,9}.
  • Cuối cùng, nhân 2 Mảng =ISNUMBER(SEARCH( Mảng1, Mảng2))*{1,1,2,3,4,5,6,7,8,9} tức những giá trị TRUE sẽ lấy tương ứng giá trị trong Mảng {1,1,2,3,4,5,6,7,8,9}. Dùng SUMPRODUCT() để cộng lại các giá trị của 2 Mảng nah6n nhau đó.
Thân
cảm ơn bạn nhiều lắm
Bài đã được tự động gộp:

Sửa chuỗi MCD+2AUL tại cell A2 thành 0MCD+2AUL thì kết quả sẽ sai
Hình như nó "kị" con zero hay sao ấy
Cũng chuỗi trên, sửa thành MCD+12AUL lại sai tiếp
Hình như nó "kị" con số bự hay sao ấy
đúng rồi anh ơi, vậy công thức phải sửa như nào mới đúng ạ?
 
đúng rồi anh ơi, vậy công thức phải sửa như nào mới đúng ạ?
Công thức thì cứ để anh Hiệp sĩ kia sửa đi (ảnh là trùm vụ này)
Có điều tôi còn thắc mắc: Trong dữ liệu của bạn có khi nào có dấu gì khác ngoài dấu cộng không? Chẳng hạn là dấu trừ
???
 
Sửa chuỗi MCD+2AUL tại cell A2 thành 0MCD+2AUL thì kết quả sẽ sai
Hình như nó "kị" con zero hay sao ấy
Cũng chuỗi trên, sửa thành MCD+12AUL lại sai tiếp
Hình như nó "kị" con số bự hay sao ấy
Chưa lường được trường hợp "dzô dziên" 0MCD, Vậy là có đếm nó không?
 
Chưa lường được trường hợp "dzô dziên" 0MCD, Vậy là có đếm nó không?
Cứ cho là bỏ qua trường hợp trên đi, nhưng còn tình huống này nè anh:
- Cell A2 hiện có giá trị MCD+2AUL và kết quả đếm cho mã AUL là 55
- Nếu em sửa cell A2 thành MCD+AAUL thì kết quả đếm cho mã AUL bị lỗi (mà lý ra trừ bớt đi 2 số còn 53 mới đúng)
Ngoài ra thì còn nhiều tình huống khác nữa, chẳng hạn như việc phân biệt HOA thường cho mã
 
Chưa lường được trường hợp "dzô dziên" 0MCD, Vậy là có đếm nó không?
Dạ, chắc không phải vậy đâu ạ. Em thì cho rằng nếu =0 thì không nhập vào (chắc không có mã nào bắt đầu là số 0).
Còn bài #11.5 chủ thớt thuận tay gõ vậy thôi. Hí hí :):)
 
Còn bài #11.5 chủ thớt thuận tay gõ vậy thôi. Hí hí :):)
Hình như là bài #11.6 thì phải (tôi canh canh thấy hơi.. méo méo chút) ++--//*
Thôi, chờ tác giả xác nhận vậy. Mà có thêm trừ nhân chia nữa là... vui cmn luôn á
Ẹc... Ẹc...
 
Công thức thì cứ để anh Hiệp sĩ kia sửa đi (ảnh là trùm vụ này)
Cái dzụ này thì thầy thừa sức để trị, vì thầy là "trùm của trùm" mà, phim "Ho li wút" gọi là "Gót Pha đờ" (God Father - biên dzầy chứ không anh Ba ảnh hay cự nự):)
vậy công thức phải sửa như nào mới đúng ạ?
Theo cách cũ, tôi điều chỉnh cho bạn đến số: (chỉ chứa số nguyên dương) <= 1000 trước mỗi mã :
Mã:
E2=SUM(ISNUMBER(SEARCH(TEXT(TRANSPOSE(ROW($1:$1001))-1," #")&D2," "&SUBSTITUTE($A$2:$A$36,"+"," ")))*TRANSPOSE(IFERROR(1/(1/(ROW($1:$1001)-1)),1)))
Kết thúc bằng Ctrl+Shift+Enter.

Theo cách mới, thì số của mỗi mã thoải mái (kể cả số lẻ, còn 0MCD thì không tính). Tuy nhiên, có quy định cho phép trong giới hạn, như sau: trong 1 dòng chứa từ 1 đến 10 mã, và cách biệt nhau bằng dấu "+":
Mã:
E2=SUM(IFERROR(--SUBSTITUTE(SUBSTITUTE(" "&TRIM(MID(SUBSTITUTE($A$2:$A$36&"+","+",REPT(" ",100)),(COLUMN($A:$J)-1)*100+1,100))," "&D2,1),D2,""),))
Kết thúc bằng Ctrl+Shift+Enter.

Thân
 

File đính kèm

Lần chỉnh sửa cuối:
Cái dzụ này thì thầy thừa sức để trị, vì thầy là "trùm của trùm" mà, phim "Ho li wút" gọi là "Gót Pha đờ" (God Father - biên dzầy chứ không anh Ba ảnh hay cự nự):)

Theo cách cũ, tôi điều chỉnh cho bạn đến số: (chỉ chứa số nguyên dương) <= 1000 trước mỗi mã :
Mã:
E2=SUM(ISNUMBER(SEARCH(TEXT(TRANSPOSE(ROW($1:$1001))-1," #")&D2," "&SUBSTITUTE($A$2:$A$36,"+"," ")))*TRANSPOSE(IFERROR(1/(1/(ROW($1:$1001)-1)),1)))
Kết thúc bằng Ctrl+Shift+Enter.

Theo cách mới, thì số của mỗi mã thoải mái (kể cả số lẻ, còn 0MCD thì không tính). Tuy nhiên, có quy định cho phép trong giới hạn, như sau: trong 1 dòng chứa từ 1 đến 10 mã, và cách biệt nhau bằng dấu "+":
Mã:
E2=SUM(IFERROR(--SUBSTITUTE(SUBSTITUTE(" "&TRIM(MID(SUBSTITUTE($A$2:$A$36&"+","+",REPT(" ",100)),(COLUMN($A:$J)-1)*100+1,100))," "&D2,1),D2,""),))
Kết thúc bằng Ctrl+Shift+Enter.

Thân
Cảm ơn anh ạ
 
Cái dzụ này thì thầy thừa sức để trị, vì thầy là "trùm của trùm" mà, phim "Ho li wút" gọi là "Gót Pha đờ" (God Father - biên dzầy chứ không anh Ba ảnh hay cự nự):)

Theo cách cũ, tôi điều chỉnh cho bạn đến số: (chỉ chứa số nguyên dương) <= 1000 trước mỗi mã :
Mã:
E2=SUM(ISNUMBER(SEARCH(TEXT(TRANSPOSE(ROW($1:$1001))-1," #")&D2," "&SUBSTITUTE($A$2:$A$36,"+"," ")))*TRANSPOSE(IFERROR(1/(1/(ROW($1:$1001)-1)),1)))
Kết thúc bằng Ctrl+Shift+Enter.

Theo cách mới, thì số của mỗi mã thoải mái (kể cả số lẻ, còn 0MCD thì không tính). Tuy nhiên, có quy định cho phép trong giới hạn, như sau: trong 1 dòng chứa từ 1 đến 10 mã, và cách biệt nhau bằng dấu "+":
Mã:
E2=SUM(IFERROR(--SUBSTITUTE(SUBSTITUTE(" "&TRIM(MID(SUBSTITUTE($A$2:$A$36&"+","+",REPT(" ",100)),(COLUMN($A:$J)-1)*100+1,100))," "&D2,1),D2,""),))
Kết thúc bằng Ctrl+Shift+Enter.

Thân
"Bắt giò" tiếp
- Sửa cell A2 từ MCD+2AUL thành MCD+2 AUL ==> kết quả sai
- Sửa cell A2 từ MCD+2AUL thành MCD+2AUL2 ==> kết quả sai
Ẹc... Ẹc...
 
"Bắt giò" tiếp
- Sửa cell A2 từ MCD+2AUL thành MCD+2 AUL ==> kết quả sai
- Sửa cell A2 từ MCD+2AUL thành MCD+2AUL2 ==> kết quả sai
Ẹc... Ẹc...
Đã né nó rồi thầy còn hê lên nữa (mất 1 cử cà phe buổi sáng dzồi!) :(
Công thức điều chỉnh dài thêm chút nha chủ thớt @hoangtechu :
Mã:
E2=SUM(IFERROR(--SUBSTITUTE(SUBSTITUTE(" "&TRIM(MID(SUBSTITUTE(SUBSTITUTE($A$2:$A$36," ","")&"+","+",REPT(" ",100)),(COLUMN($A:$J)-1)*100+1,100))&" "," "&D2&" ",1),D2&" ",""),))
Kết thúc bằng Ctrl+Shift+Enter.

Thân
 

File đính kèm

"Bắt giò" tiếp
- Sửa cell A2 từ MCD+2AUL thành MCD+2 AUL ==> kết quả sai
- Sửa cell A2 từ MCD+2AUL thành MCD+2AUL2 ==> kết quả sai
Ẹc... Ẹc...
Từ đầu đưa ra mỗi mã có 3 ký tự, nếu >3 thì phía trước là Number, dấu tách chuỗi là dấu "+", không có dấu cách, không có mọi cái luxubu.
Nhập dữ liệu không đúng "quy luật" thì Msgbox báo lỗi. Thoát, không làm gì nữa. Để tác giả tính bằng mắt + máy tính bỏ túi.
Híc!
 
Từ đầu đưa ra mỗi mã có 3 ký tự, nếu >3 thì phía trước là Number, dấu tách chuỗi là dấu "+", không có dấu cách, không có mọi cái luxubu.
Nhập dữ liệu không đúng "quy luật" thì Msgbox báo lỗi. Thoát, không làm gì nữa. Để tác giả tính bằng mắt + máy tính bỏ túi.
Híc!
Hổng biết đâu nha anh. Nhiều khi có mã AUL, xong họ lại thấy thiếu và bỗ sung thêm AUL2 cũng không chừng
Em "bắt giò" không phải là đùa đâu. Tại vì có lần em gặp bài toán dạng này rồi (mã A lại là con của mã B).
Nói chung cách đặt mã như vậy là không hợp lý nhưng đời mà, chuyện gì mà chẳng có
 
Hình như là bài #11.6 thì phải (tôi canh canh thấy hơi.. méo méo chút) ++--//*
Thôi, chờ tác giả xác nhận vậy. Mà có thêm trừ nhân chia nữa là... vui cmn luôn á
Ẹc... Ẹc...
Bác vui tính quá :))
Bài đã được tự động gộp:

Đã né nó rồi thầy còn hê lên nữa (mất 1 cử cà phe buổi sáng dzồi!) :(
Công thức điều chỉnh dài thêm chút nha chủ thớt @hoangtechu :
Mã:
E2=SUM(IFERROR(--SUBSTITUTE(SUBSTITUTE(" "&TRIM(MID(SUBSTITUTE(SUBSTITUTE($A$2:$A$36," ","")&"+","+",REPT(" ",100)),(COLUMN($A:$J)-1)*100+1,100))&" "," "&D2&" ",1),D2&" ",""),))
Kết thúc bằng Ctrl+Shift+Enter.

Thân
các bác thật pro, chắc em dùng cái công thức đầu tiên của bác cũng đủ xài rồi, cho em nhận làm đồ đệ được không bác :D
Bài đã được tự động gộp:

Đã né nó rồi thầy còn hê lên nữa (mất 1 cử cà phe buổi sáng dzồi!) :(
Công thức điều chỉnh dài thêm chút nha chủ thớt @hoangtechu :
Mã:
E2=SUM(IFERROR(--SUBSTITUTE(SUBSTITUTE(" "&TRIM(MID(SUBSTITUTE(SUBSTITUTE($A$2:$A$36," ","")&"+","+",REPT(" ",100)),(COLUMN($A:$J)-1)*100+1,100))&" "," "&D2&" ",1),D2&" ",""),))
Kết thúc bằng Ctrl+Shift+Enter.

Thân
Anh có thể giải thích công thức này được không ạ?
dài quá em không thấm được :)
em cảm ơn
 
cho em nhận làm đồ đệ được không bác :D
Bạn "gõ" nhầm cửa "Khổng" rồi! khà khà khà. :D
Bạn vào diễn đàn này, muốn "bái sư" thì nên lựa đúng nơi đúng chỗ mà bái, vào trang này mà tự nghiên cứu tìm "Chân sư":
https://www.giaiphapexcel.com/diendan/members/?key=most_likes
Chứ cỡ tôi còn lượm mót trên diễn đàn này, chỉ có dạy "ăn chơi sa đọa" thì đđđươơợccc...!
/-*+//-*+//-*+/
Khoảng chiều chiều, nhín chút thời gian tôi sẽ giải thích cho bạn công thức mới để bạn nghiền ngẫm hén!
 
Như đã hứa, bạn xem hình và file kèm.
Thân
View attachment 201380
bác giỏi quá lại còn tốt bụng chỉ bảo nhiệt tình, em cảm ơn nhiều lắm .
Nhân đây em có 1 vấn đề muốn nhờ anh xem giúp ạ:
em có cột đơn giá cần điền , anh xem file đính kèm xem có giúp em đc không ạ. em cảm ơn các pro nhiều lắm
Bài đã được tự động gộp:

Bạn "gõ" nhầm cửa "Khổng" rồi! khà khà khà. :D
Bạn vào diễn đàn này, muốn "bái sư" thì nên lựa đúng nơi đúng chỗ mà bái, vào trang này mà tự nghiên cứu tìm "Chân sư":
https://www.giaiphapexcel.com/diendan/members/?key=most_likes
Chứ cỡ tôi còn lượm mót trên diễn đàn này, chỉ có dạy "ăn chơi sa đọa" thì đđđươơợccc...!
/-*+//-*+//-*+/
Khoảng chiều chiều, nhín chút thời gian tôi sẽ giải thích cho bạn công thức mới để bạn nghiền ngẫm hén!
em nghĩ giỏi nhưng còn có duyên mới được anh ạ :), hy vọng có duyên được đồ đệ của anh.
 

File đính kèm

Nhân đây em có 1 vấn đề muốn nhờ anh xem giúp ạ:
em có cột đơn giá cần điền , anh xem file đính kèm xem có giúp em đc không ạ
Thật sự tôi không ưa chuộng lắm yêu cầu mới này, vì nó không mang lại hiệu quả gì để áp dụng cho thực tế cả, ngoài 1 đống công thức "gớm ghiếc" chả ai muốn nhìn. Nếu như buộc lòng phải tính toán thành tiền, bạn nên tách thành 3 cột Mã, SL, Thành tiền, rồi dùng công thức đơn giản để xử lý thì tốt nhất.

Như yêu cầu đếm SL các ký tự mã ở yêu cầu 1, chúng ta có thể dùng công thức đó cho việc tính công, với việc ghi nhận công trong ngày như: "0.5T+1.75S"--> "đi trễ 0.5h và về sớm 1.75h"; Hoặc "1.5T+3.5TC"..v.v.. Cho nên, dù gì dù thì yêu cầu trước vẫn hay hơn.

Trong file đính kèm tôi đã thực hiện công thức, tuy nhiên không khuyến khích bạn tìm hiểu cũng như sẽ áp dụng (nếu có).

Thân
 

File đính kèm

Thật sự tôi không ưa chuộng lắm yêu cầu mới này, vì nó không mang lại hiệu quả gì để áp dụng cho thực tế cả, ngoài 1 đống công thức "gớm ghiếc" chả ai muốn nhìn. Nếu như buộc lòng phải tính toán thành tiền, bạn nên tách thành 3 cột Mã, SL, Thành tiền, rồi dùng công thức đơn giản để xử lý thì tốt nhất.

Như yêu cầu đếm SL các ký tự mã ở yêu cầu 1, chúng ta có thể dùng công thức đó cho việc tính công, với việc ghi nhận công trong ngày như: "0.5T+1.75S"--> "đi trễ 0.5h và về sớm 1.75h"; Hoặc "1.5T+3.5TC"..v.v.. Cho nên, dù gì dù thì yêu cầu trước vẫn hay hơn.

Trong file đính kèm tôi đã thực hiện công thức, tuy nhiên không khuyến khích bạn tìm hiểu cũng như sẽ áp dụng (nếu có).

Thân
Dạ, em cũng nghĩ là sẽ khó thực hiện nhưng thực sự đó là việc của em đang phải làm. Trước khi lên chia sẻ ở đây thì e toàn phải tính thủ công anh ạ :(((
Em làm cho 1 trang bán hàng ol, đó chính là mã hàng theo đơn, bây giờ bên đó cần tính lỗ lãi nên cần tìm giá vốn. Em post file gốc cho anh xem luôn đây ạ
 

File đính kèm

Dạ, em cũng nghĩ là sẽ khó thực hiện nhưng thực sự đó là việc của em đang phải làm. Trước khi lên chia sẻ ở đây thì e toàn phải tính thủ công anh ạ :(((
Em làm cho 1 trang bán hàng ol, đó chính là mã hàng theo đơn, bây giờ bên đó cần tính lỗ lãi nên cần tìm giá vốn. Em post file gốc cho anh xem luôn đây ạ
Tại sao bạn không thử cấu trúc lại file theo dõi bán hàng, vừa đơn giản vừa dễ theo dõi tiền hàng
Xem file kèm như 1 gợi ý.
Thân
 

File đính kèm

Tại sao bạn không thử cấu trúc lại file theo dõi bán hàng, vừa đơn giản vừa dễ theo dõi tiền hàng
Xem file kèm như 1 gợi ý.
Thân
Anh ơi, em muốn làm như thế, nhưng file này em ko được sửa anh ạ ,huhu
các bạn chốt đơn sẽ nhập file đó sau đó mang đi in, mà mấy bạn đó ko biết excel, mà cái đó em tính tiếp vậy em cảm ơn anh nhiều lắm.
À, anh cho em hỏi
em dùng công thức của anh đưa vào gg driver sao nó báo lỗi này anh nhỉ?
1533783266955.png
 
Anh ơi, em muốn làm như thế, nhưng file này em ko được sửa anh ạ ,huhu
các bạn chốt đơn sẽ nhập file đó sau đó mang đi in, mà mấy bạn đó ko biết excel, mà cái đó em tính tiếp vậy em cảm ơn anh nhiều lắm.
À, anh cho em hỏi
em dùng công thức của anh đưa vào gg driver sao nó báo lỗi này anh nhỉ?
View attachment 201428
Bạn đưa link của GoogleSheet lên đây đi.
Thân
 
1/ Theo cách cũ: Dùng trên Google Sheets bạn phải điều chỉnh như sau: Sheet "Tổng Hợp......."

D1=ARRAYFORMULA(sumproduct(isnumber(search({" ",1,2,3,4,5,6,7,8,9}&B1 ," "&substitute('Trang tính1'!$E$2:$E$341,"+"," ")))*{1,1,2,3,4,5,6,7,8,9}))

Lưu ý là dấu "," trong các Mảng: {" ",1,2,3,4,5,6,7,8,9} và {1,1,2,3,4,5,6,7,8,9}, chứ không phải dấu ";" như trên file của bạn nha!

2/ Tôi gửi thêm cho bạn một gợi ý khác, bạn thử mang lên Google Sheets, bạn sẽ thấy cách mới đơn giản hơn nhiều.
Xem file kèm.

Thân
 

File đính kèm

1/ Theo cách cũ: Dùng trên Google Sheets bạn phải điều chỉnh như sau: Sheet "Tổng Hợp......."

D1=ARRAYFORMULA(sumproduct(isnumber(search({" ",1,2,3,4,5,6,7,8,9}&B1 ," "&substitute('Trang tính1'!$E$2:$E$341,"+"," ")))*{1,1,2,3,4,5,6,7,8,9}))

Lưu ý là dấu "," trong các Mảng: {" ",1,2,3,4,5,6,7,8,9} và {1,1,2,3,4,5,6,7,8,9}, chứ không phải dấu ";" như trên file của bạn nha!

2/ Tôi gửi thêm cho bạn một gợi ý khác, bạn thử mang lên Google Sheets, bạn sẽ thấy cách mới đơn giản hơn nhiều.
Xem file kèm.

Thân
Vâng , em với Bác ý tưởng trùng nhau rồi ạ :)
trong lúc gửi cho anh, em cũng đã sửa công thức như file này. các bạn chốt đơn sẽ ko tách từng cột mã cho e, nên em sẽ làm việc đó bằng cột phụ thôi.
anh xem công thức từ cột F đến L giúp em, em tìm số lượng, nhưng mới giới hạn từ 1-9 được thôi ạ (lý do vì:
- nếu họ ghi mã hàng sau dấu + dùng hàm mid, chọn 2 giá trị sẽ vào dấu +,
- nếu người khác viết nó ở đầu nó sẽ báo lỗi) ạ
Em cảm ơn !
 

File đính kèm

Vâng , em với Bác ý tưởng trùng nhau rồi ạ :)
trong lúc gửi cho anh, em cũng đã sửa công thức như file này. các bạn chốt đơn sẽ ko tách từng cột mã cho e, nên em sẽ làm việc đó bằng cột phụ thôi.
anh xem công thức từ cột F đến L giúp em, em tìm số lượng, nhưng mới giới hạn từ 1-9 được thôi ạ (lý do vì:
- nếu họ ghi mã hàng sau dấu + dùng hàm mid, chọn 2 giá trị sẽ vào dấu +,
- nếu người khác viết nó ở đầu nó sẽ báo lỗi) ạ
Em cảm ơn !
Bạn xem cách này gọn hơn không?
https://docs.google.com/spreadsheets/d/16SWk_8BFRq7qOOE1qW-BrV5oi2uAw7I_3zUPhNnZahk/edit?usp=sharing
Thân
 
tuyệt vời anh ạ.
em chưa hiểu hiểu chỗ này lắm, anh có thể giải thích giúp em đc không?
LOOKUP(2,1/SEARCH('Mã SP'!$C$3:$C$87,TRIM(MID(SUBSTITUTE($E2&"+","+",REPT(" ",100)),(RIGHT(G$1)-1)*100+1,100))),'Mã SP'!$C$3:$C$87))

=IF(ISERROR(IF(G2<>"",--SUBSTITUTE(SUBSTITUTE(" "&TRIM(MID(SUBSTITUTE($E2&"+","+",REPT(" ",100)),(RIGHT(H$1)-1)*100+1,100))&" "," "&G2&" ",1),G2&" ",""),)),,IF(G2<>"",--SUBSTITUTE(SUBSTITUTE(" "&TRIM(MID(SUBSTITUTE($E2&"+","+",REPT(" ",100)),(RIGHT(H$1)-1)*100+1,100))&" "," "&G2&" ",1),G2&" ",""),))

Em dốt công thức mảng quá, anh có mở lớp dạy hoặc dạy ol không cho em theo học với nhé
 
tuyệt vời anh ạ.
em chưa hiểu hiểu chỗ này lắm, anh có thể giải thích giúp em đc không?
LOOKUP(2,1/SEARCH('Mã SP'!$C$3:$C$87,TRIM(MID(SUBSTITUTE($E2&"+","+",REPT(" ",100)),(RIGHT(G$1)-1)*100+1,100))),'Mã SP'!$C$3:$C$87))

=IF(ISERROR(IF(G2<>"",--SUBSTITUTE(SUBSTITUTE(" "&TRIM(MID(SUBSTITUTE($E2&"+","+",REPT(" ",100)),(RIGHT(H$1)-1)*100+1,100))&" "," "&G2&" ",1),G2&" ",""),)),,IF(G2<>"",--SUBSTITUTE(SUBSTITUTE(" "&TRIM(MID(SUBSTITUTE($E2&"+","+",REPT(" ",100)),(RIGHT(H$1)-1)*100+1,100))&" "," "&G2&" ",1),G2&" ",""),))

Em dốt công thức mảng quá, anh có mở lớp dạy hoặc dạy ol không cho em theo học với nhé
1. Nghiên cứu hàm Lookup(2,1/...) tại đây:

2. Do trên Google Sheets dùng được hàm IFERROR(), nên nó thay cho IF( ISERROR('Công thức'), "" , 'Công thức'). Do vậy, bạn có thể thay công thức: =IF(ISERROR(IF(G2<>"",--SUBSTITUTE(SUBSTITUTE(" "&TRIM(MID(SUBSTITUTE($E2&"+","+",REPT(" ",100)),(RIGHT(H$1)-1)*100+1,100))&" "," "&G2&" ",1),G2&" ",""),)),,IF(G2<>"",--SUBSTITUTE(SUBSTITUTE(" "&TRIM(MID(SUBSTITUTE($E2&"+","+",REPT(" ",100)),(RIGHT(H$1)-1)*100+1,100))&" "," "&G2&" ",1),G2&" ",""),))

Thành:
=IFERROR(IF(G2<>"",--SUBSTITUTE(SUBSTITUTE(" "&TRIM(MID(SUBSTITUTE($E2&"+","+",REPT(" ",100)),(RIGHT(H$1)-1)*100+1,100))&" "," "&G2&" ",1),G2&" ",""),)),)
Cái này tương tự cách đã giải thích tại bước 1/

Thân.
 
1. Nghiên cứu hàm Lookup(2,1/...) tại đây:

2. Do trên Google Sheets dùng được hàm IFERROR(), nên nó thay cho IF( ISERROR('Công thức'), "" , 'Công thức'). Do vậy, bạn có thể thay công thức: =IF(ISERROR(IF(G2<>"",--SUBSTITUTE(SUBSTITUTE(" "&TRIM(MID(SUBSTITUTE($E2&"+","+",REPT(" ",100)),(RIGHT(H$1)-1)*100+1,100))&" "," "&G2&" ",1),G2&" ",""),)),,IF(G2<>"",--SUBSTITUTE(SUBSTITUTE(" "&TRIM(MID(SUBSTITUTE($E2&"+","+",REPT(" ",100)),(RIGHT(H$1)-1)*100+1,100))&" "," "&G2&" ",1),G2&" ",""),))

Thành:
=IFERROR(IF(G2<>"",--SUBSTITUTE(SUBSTITUTE(" "&TRIM(MID(SUBSTITUTE($E2&"+","+",REPT(" ",100)),(RIGHT(H$1)-1)*100+1,100))&" "," "&G2&" ",1),G2&" ",""),)),)
Cái này tương tự cách đã giải thích tại bước 1/

Thân.
vâng, anh cho em hỏi thêm với nhé
--SUBSTITUTE(SUBSTITUTE... thì cái dấu -- đó ý nghĩa gì ạ?
em thấy hàm sumproduct thỉnh thoảng cũng dùng 2 dấu đó ạ.
tks anh!
 
vâng, anh cho em hỏi thêm với nhé
--SUBSTITUTE(SUBSTITUTE... thì cái dấu -- đó ý nghĩa gì ạ?
em thấy hàm sumproduct thỉnh thoảng cũng dùng 2 dấu đó ạ.
tks anh!
Đó là một trong các cách để ép "Chuỗi-số" về đúng dạng "Số". Ví dụ: =--"0908372981" sẽ thành số =908372981.
Các cách tương tự:
  1. = Value("Chuỗi-số")
  2. ="Chuỗi-số"*1 ; hoặc ="Chuỗi-số"/1
  3. ="Chuỗi-số"+0 ; hoặc ="Chuỗi-số" -0
  4. Hoặc "Chuỗi-số" cộng trừ nhân chia (bị chia) với một số, hoặc công thức có kết quả là số, chuỗi-số, hoặc giá trị luận lý khác thì cũng chuyển về số.
Riêng kết quả là giá trị luận lý: TRUE và FALSE, ngoài các cách trên còn có thể dùng hàm N('biểu thức so sánh cho kết quả TRUE/FALSE'), nếu TRUE đổi thành 1, và FALSE thành 0.

Thân.
 
Đó là một trong các cách để ép "Chuỗi-số" về đúng dạng "Số". Ví dụ: =--"0908372981" sẽ thành số =908372981.
Các cách tương tự:
  1. = Value("Chuỗi-số")
  2. ="Chuỗi-số"*1 ; hoặc ="Chuỗi-số"/1
  3. ="Chuỗi-số"+0 ; hoặc ="Chuỗi-số" -0
  4. Hoặc "Chuỗi-số" cộng trừ nhân chia (bị chia) với một số, hoặc công thức có kết quả là số, chuỗi-số, hoặc giá trị luận lý khác thì cũng chuyển về số.
Riêng kết quả là giá trị luận lý: TRUE và FALSE, ngoài các cách trên còn có thể dùng hàm N('biểu thức so sánh cho kết quả TRUE/FALSE'), nếu TRUE đổi thành 1, và FALSE thành 0.

Thân.
vâng
em cảm ơn cách anh chị GPE , đặc biệt là anh @Phan Thế Hiệp đã giúp đỡ em nhiều ạ.
 
Như đã hứa, bạn xem hình và file kèm.
Thân
View attachment 201380
Em đang nghiên cứu công thức của anh, những vấn đề anh giải thích trên em cũng gần hiểu rồi ạ. còn cái này ko thấy anh nhắc đến, anh có thể giải thích thêm giúp em cái phần em bôi đậm này nó liên quan gì đến cả công thức của anh ạ?
'=SUM(IFERROR(--SUBSTITUTE(SUBSTITUTE(" "&TRIM(MID(SUBSTITUTE(SUBSTITUTE($A$2:$A$36," ","")&"+","+",REPT(" ",100)),(COLUMN($A:$J)-1)*100+1,100))&" "," "&D2&" ",1),D2&" ",""),))
 
Em đang nghiên cứu công thức của anh, những vấn đề anh giải thích trên em cũng gần hiểu rồi ạ. còn cái này ko thấy anh nhắc đến, anh có thể giải thích thêm giúp em cái phần em bôi đậm này nó liên quan gì đến cả công thức của anh ạ?
'=SUM(IFERROR(--SUBSTITUTE(SUBSTITUTE(" "&TRIM(MID(SUBSTITUTE(SUBSTITUTE($A$2:$A$36," ","")&"+","+",REPT(" ",100)),(COLUMN($A:$J)-1)*100+1,100))&" "," "&D2&" ",1),D2&" ",""),))
Đã có ghi trong bước 1/
Xem kỹ các công thức nhằm giải thích, trong file kèm.
Thân
 

File đính kèm

1/ Theo cách cũ: Dùng trên Google Sheets bạn phải điều chỉnh như sau: Sheet "Tổng Hợp......."

D1=ARRAYFORMULA(sumproduct(isnumber(search({" ",1,2,3,4,5,6,7,8,9}&B1 ," "&substitute('Trang tính1'!$E$2:$E$341,"+"," ")))*{1,1,2,3,4,5,6,7,8,9}))

Lưu ý là dấu "," trong các Mảng: {" ",1,2,3,4,5,6,7,8,9} và {1,1,2,3,4,5,6,7,8,9}, chứ không phải dấu ";" như trên file của bạn nha!

2/ Tôi gửi thêm cho bạn một gợi ý khác, bạn thử mang lên Google Sheets, bạn sẽ thấy cách mới đơn giản hơn nhiều.
Xem file kèm.

Thân
anh @Phan Thế Hiệp xem giúp em file gg sheet này , em nhập công thức nó báo lỗi phân tích cú pháp, anh có thể sửa công thức luôn ở đó giúp em với nhé
em cảm ơn nhiều ạ
https://docs.google.com/spreadsheet...4Z3Xw89xwtu52ySphnhNZpt3U/edit#gid=1969973558
 
Công thức này mình thấy sử dụng phù hợp cho excel chứ google sheets thì chưa tối ưu.
 
Đã giải quyết ở bài #17. Nhưng chủ thớt thấy 1 số là đủ xài rồi, nên dùng công thức cũ nhất.
Thân
vâng, đúng vậy ạ
với lại công thức đó em còn hiểu được. Những công thức sau phức tạp e chưa hiểu nên ko dám dùng ạ
anh @yeudoi ơi, trên gg sheet anh bảo còn công thức nào tối ưu phải không ạ? anh có thể chia sẻ cho bọn em được học hỏi ko anh?
 
Mình
vâng, đúng vậy ạ
với lại công thức đó em còn hiểu được. Những công thức sau phức tạp e chưa hiểu nên ko dám dùng ạ
anh @yeudoi ơi, trên gg sheet anh bảo còn công thức nào tối ưu phải không ạ? anh có thể chia sẻ cho bọn em được học hỏi ko anh?
Đó là công thức split nhưng mình đang thấy nó hơi dài
 
vâng, đúng vậy ạ
với lại công thức đó em còn hiểu được. Những công thức sau phức tạp e chưa hiểu nên ko dám dùng ạ
anh @yeudoi ơi, trên gg sheet anh bảo còn công thức nào tối ưu phải không ạ? anh có thể chia sẻ cho bọn em được học hỏi ko anh?
Bạn cần thì mình bạn học là được rồi, lôi kéo tôi vô chi mà thành "bọn em" lận.
Yên tâm, thấy bạn hỏi từ hôm thứ 6 đến giờ, anh @yeudoi sẽ rút ngắn công thức lẫn thời gian cho bạn.
Thân.
ps: Sau bài #56, tự dưng nick @Phan Thế Hiệp "bị ngọng", mất ba cái nút dưới cùng "Báo cáo", "Thích", và "Trả lời", đành xài tạm nick này.
 
Bạn cần thì mình bạn học là được rồi, lôi kéo tôi vô chi mà thành "bọn em" lận.
Yên tâm, thấy bạn hỏi từ hôm thứ 6 đến giờ, anh @yeudoi sẽ rút ngắn công thức lẫn thời gian cho bạn.
Thân.
ps: Sau bài #56, tự dưng nick @Phan Thế Hiệp "bị ngọng", mất ba cái nút dưới cùng "Báo cáo", "Thích", và "Trả lời", đành xài tạm nick này.
Dạ, bọn em ý là em và các bạn em thôi anh ạ :))
 
Đã giải quyết ở bài #17. Nhưng chủ thớt thấy 1 số là đủ xài rồi, nên dùng công thức cũ nhất.
Thân
anh @ph
Dạ, bọn em ý là em và các bạn em thôi anh ạ :))
anh @Mộng Thường 2001 ơi, vẫn cái hôm trước đó, nhưng em thêm điều kiện tính số lượng theo ngày.
anh giúp em với nhé. em cảm ơn anh nhiều
link đây ạ: https://docs.google.com/spreadsheet...4Z3Xw89xwtu52ySphnhNZpt3U/edit#gid=1969973558
 
1. Nghiên cứu hàm Lookup(2,1/...) tại đây:

2. Do trên Google Sheets dùng được hàm IFERROR(), nên nó thay cho IF( ISERROR('Công thức'), "" , 'Công thức'). Do vậy, bạn có thể thay công thức: =IF(ISERROR(IF(G2<>"",--SUBSTITUTE(SUBSTITUTE(" "&TRIM(MID(SUBSTITUTE($E2&"+","+",REPT(" ",100)),(RIGHT(H$1)-1)*100+1,100))&" "," "&G2&" ",1),G2&" ",""),)),,IF(G2<>"",--SUBSTITUTE(SUBSTITUTE(" "&TRIM(MID(SUBSTITUTE($E2&"+","+",REPT(" ",100)),(RIGHT(H$1)-1)*100+1,100))&" "," "&G2&" ",1),G2&" ",""),))

Thành:
=IFERROR(IF(G2<>"",--SUBSTITUTE(SUBSTITUTE(" "&TRIM(MID(SUBSTITUTE($E2&"+","+",REPT(" ",100)),(RIGHT(H$1)-1)*100+1,100))&" "," "&G2&" ",1),G2&" ",""),)),)
Cái này tương tự cách đã giải thích tại bước 1/

Thân.
cảm ơn anh @Phan Thế Hiệp nhé, em có rất nhiều vấn đề cần áp dụng cái này, mỗi lần dùng lại cảm ơn anh :)
 

File đính kèm

anh @Phan Thế Hiệp ơi, anh xem giúp em công thức em áp dụng của anh vào file này nó bị lỗi ạ, những cái em bôi màu vàng ấy, ULA-99, thì nó chỉ hiển thị là ULA-9...
em cảm ơn anh nhé
Bạn nên sắp thứ tự từ nhỏ đến lớn cho các mã giống nhau các ký tự đầu Vd: mã ULA chẳng hạn.

Về giải thích bạn có thể tham khảo (cách 1) tại bài với cách giải tương tự theo link sau:
https://www.giaiphapexcel.com/diendan/threads/nhờ-hướng-dẫn-công-thức-dò-tìm.139451/#post-895115


Thân
 

File đính kèm

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

Back
Top Bottom