vitinhvnbmt
Thành viên hoạt động



- Tham gia
- 30/5/09
- Bài viết
- 108
- Được thích
- 7



mình có vài câu hỏi đã ghi sẵn trong file excel gửi kèm, do câu hỏi tương đối phức tạp nên mình không thể diễn đạt bằng lời tại đây được. mong các ace gpe xem file và giải đáp![]()



trong câu hỏi đâu tiên của bạn
1.a. đếm tổng số mặt hàng X145(4 chữ cái đầu tiên là X145) mà ở cột trạng thái(cột E) là 90% hoặc 100% ở lần xuất hiện sau cùng
đáp án bạn chọn T10 là 80%, là sao?
====
cái này chắc phải sử dụng vba quá
lấy con số đó làm căn cứ tính toán(đếm) bạn à, không phải là kết quả.
câu 1b thực chất thì cùng ý nghĩa với câu 1a, mình soạn ra đó để mọi người xem cách tính nào dễ hơn thì tính thôi



chẳng thể hiểu nổi??? số 90%, 100% đó để làm cái gì
tôi nghĩ để có lời giải bạn nên giải thích rỏ ràng hơn
trong câu hỏi đâu tiên của bạn
1.a. đếm tổng số mặt hàng X145(4 chữ cái đầu tiên là X145) mà ở cột trạng thái(cột E) là 90% hoặc 100% ở lần xuất hiện sau cùng
đáp án bạn chọn T10 là 80%, là sao?






trong câu hỏi đâu tiên của bạn
1.a. đếm tổng số mặt hàng X145(4 chữ cái đầu tiên là X145) mà ở cột trạng thái(cột E) là 90% hoặc 100% ở lần xuất hiện sau cùng
đáp án bạn chọn T10 là 80%, là sao?
câu b cũng vậy
1.b. đếm tổng số mặt hàng X145(4 chữ cái đầu tiên là X145) mà giá trị nhỏ nhất ở phần Trạng thái của những lần xuất hiện là >=90%
kết quả T15:T19, không có giá trị nào lớn hơn 90
====
cái này chắc phải sử dụng vba quá
đề bài chỉ nói cột E là 90% hoặc 100% chứ đâu có nói cột E không được phép bằng 80% đâu =))![]()



cột trạng thái đưa ra mức độ hoàn thành chỉ tiêu của từng lần bán bạn à.
mức độ hoàn thành là 90% , 100%
cũng như là điểm số của một môn học thì mỗi lần kiểm tra lại có số điểm khác nhau
nhưng khi đánh giá học lực thì tôi muốn căn cứ vào điểm kiểm tra cuối cùng để đánh giá, những điểm trước thì bỏ qua.
bài toán này nó cũng tương tự như vậy đấy
=SUMPRODUCT((LEFT(D6:D68,4)="X145")/COUNTIF(D6:D68,D6:D68))



Chịu thua bạn ạ, đầu óc lú lẫn rồi
tôi vẫn không hiêu
làm đại công thức này, nó là đếm bỏ trùng
bạn có 22 mã "X145-****"Mã:=SUMPRODUCT((LEFT(D6:D68,4)="X145")/COUNTIF(D6:D68,D6:D68))
mà điều kiện phía sau mới khó nghĩ bạn à hjhjđáp án đúng! nhưng chưa có điều kiện phía saumà điều kiện phía sau mới khó nghĩ bạn à hjhj



dùng hàm tự tạo nha
nhớ Enable macro khi mở file
kết quả để ở H20
làm đại chưa kiểm tra, không biết đúng saicâu 2b thì như thế nào hả bạn?
mình chỉ thấy hàm demso được nhập vào ô H20, vậy khi mình muốn thay đổi điều kiện >=90%, 100% bằng điều kiện <=80% thì thay đổi ở đâu hả bạn? khi đó phải tạo macro như thế nào để tính được cả hai giá trị (1b và 2b) trong cùng một file excel hả bạn?
Câu a, CT tại G6mình có vài câu hỏi đã ghi sẵn trong file excel gửi kèm, do câu hỏi tương đối phức tạp nên mình không thể diễn đạt bằng lời tại đây được. mong các ace gpe xem file và giải đáp![]()
G6=OR(E6=0.9,E6=1)*(COUNTIF(D6:$D$68,D6)=1)*(LEFT(D6,4)="X145")
H6=(MIN(IF($D$6:$D$68=D6,$E$6:$E$68))>=0.9)*(COUNTIF($D$6:D6,D6)=1)*(LEFT(D6,4)="X145")



Tác gia bài đăng thử kiểm số liệu theo file:
(Mình xài macro sự kiện tại [G1])
![]()



file bài trước có code sai
Mã:darr = dic.keys sửa lại darr = dic.items




Câu a, CT tại G6
Bạn fill xuống, rồi sum cột G lạiMã:G6=OR(E6=0.9,E6=1)*(COUNTIF(D6:$D$68,D6)=1)*(LEFT(D6,4)="X145")
Câu b, CT tại H6:
Ctrl+Shift+Enter, bạn fill xuống, rồi sum cột H lạiMã:H6=(MIN(IF($D$6:$D$68=D6,$E$6:$E$68))>=0.9)*(COUNTIF($D$6:D6,D6)=1)*(LEFT(D6,4)="X145")

tạo cho bạn hàm DemSo, 4 trong mộtcảm ơn bạn, kết quả thật chính xác
nhưng mình có 2 vấn đề cần hỏi:
+ trong công thức =demmin($D$6:$E$48,"X145",0.9,1) thì có vùng dữ liệu là $D$6:$E$48 chính là cột mặt hàng với cột trạng thái liền kề nhau. nếu mà hai cột đó không đặt liền kề trong bảng excel thì công thức sẽ báo lỗi ngay. vậy làm sao để không bị lỗi này khi 2 cột không ở liền kề nhau? vùng dữ liệu $D$6:$E$48 lúc đó sẽ được nhập như thế nào?
+ trong công thức =demmin($D$6:$E$48,"X145",0.9,1) thì vùng dữ liệu đang là $D$6:$E$48. nếu mình chọn quá vùng dữ liệu thành $D$6:$E$50 chẳng hạn là công thức bị lỗi ngay. có cách nào khắc phục không bạn trong khi vẫn muốn chọn vùng dữ liệu vượt quá vùng dữ liệu thực tế có. (để khi nhập thêm data vào thì nó tự tính thêm phần mới bổ xung mà không cần phải chỉnh lại công thức nữa)



tạo cho bạn hàm DemSo, 4 trong một
cảm ơn bạn nhé hjhj


tạo cho bạn hàm DemSo, 4 trong một
nhưng bây giờ mình muốn dùng điều kiện = thì làm như thế nào hả bạn?[TABLE="width: 286"]
[TR]
[TD]1.b. đếm giá trị nhỏ nhất >= 90%[/TD]
[/TR]
[TR]
[TD]2.b. đếm giá trị nhỏ nhất <= 80%[/TD]
[/TR]
[/TABLE]

cảm ơn bạn nhé
nhưng có cách nào gộp công thức lại để không phải dùng đến cột phu không bạn?
1a=SUMPRODUCT((LEFT(D$6:D$68;4)="X145")*(COUNTIF(OFFSET(D$6:D$68;ROW(D$6:D$68)-ROW(D$6);0);D$6:D$68)=1)*(E$6:E$68>=90%))
1b=SUM((LEFT(D$6:D$68;4)="X145")*(COUNTIF(OFFSET(D$6:D$68;ROW(D$6:D$68)-ROW(D$6);0);D$6:D$68)=1)*(MMULT(--(D$6:D$68=TRANSPOSE(D$6:D$68));--(E$6:E$68>=90%))=COUNTIF(D$6:D$68;D$6:D$68)))






Mã:1a=SUMPRODUCT((LEFT(D$6:D$68;4)="X145")*(COUNTIF(OFFSET(D$6:D$68;ROW(D$6:D$68)-ROW(D$6);0);D$6:D$68)=1)*(E$6:E$68>=90%))ctrl+shift+enterMã:1b=SUM((LEFT(D$6:D$68;4)="X145")*(COUNTIF(OFFSET(D$6:D$68;ROW(D$6:D$68)-ROW(D$6);0);D$6:D$68)=1)*(MMULT(--(D$6:D$68=TRANSPOSE(D$6:D$68));--(E$6:E$68>=90%))=COUNTIF(D$6:D$68;D$6:D$68)))
code thiếu đoạn đầu, bạn kiểm tra lạicâu 1a kết quả lại khác với lần trước bạn à. có gì đó nhầm lẫn chăng?
View attachment 164106



code thiếu đoạn đầu, bạn kiểm tra lại
thì bạn tính > bằng >= trừ đi =mà bạn ơi, hiện tại mình đang tính toán với điều kiện >= hay <=
bây giờ muốn tính toán với điều kiện > hay < thì sửa code như thế nào hả bạn?



thì bạn tính > bằng >= trừ đi =
và < bằng <= trừ đi =
còn nếu muốn rắc rối thì viết hàm 10 trong 1
vậy mà mình cứ tưởng sửa code dễ lắm.


bạn xem file, cách nhập tương tự, hàm trước đổi tên lại cho dể nhập hơn
bạn sửa lại một chút để tìm bao nhiêu ký tự cũng đượcbạn ơi giả sử ở cột Mặt hàng (cột D) ngoài mã X145 và X131 ra còn có thêm mã X137A nữa thì sửa code như thế nào hả bạn?.
Làm sao để có thể vừa tính cho trường hợp mã hàng có 4 ký tự đồng thời cũng tính được cho cả mã hàng có 5 ký tự? (Mã X145 và X131 thì có 4 ký tự nhưng mà mã X137A lại có 5 ký tự)
For i = n To 1 Step -1
If Left(arr(i, 1), [COLOR=#ff0000]4[/COLOR]) = cr Then
If Not dic.exists(arr(i, 1)) Then
sửa thành
For i = n To 1 Step -1
If Left(arr(i, 1), [COLOR=#ff0000]Len(cr)[/COLOR]) = cr Then
If Not dic.exists(arr(i, 1)) Then



bạn sửa lại một chút để tìm bao nhiêu ký tự cũng được
Mã:For i = n To 1 Step -1 If Left(arr(i, 1), [COLOR=#ff0000]4[/COLOR]) = cr Then If Not dic.exists(arr(i, 1)) Then sửa thành For i = n To 1 Step -1 If Left(arr(i, 1), [COLOR=#ff0000]Len(cr)[/COLOR]) = cr Then If Not dic.exists(arr(i, 1)) Then
cr là ký tự cần tìm, nếu là X145 thì len(cr)=4, nếu là X137A thì len(cr)=5, luôn trả về đúng số ký tự cần lấy trong hàm LeftSố 4 thì mình đoán là số ký tự, nhưng còn Len(cr) thì mình không hiểu?
khi muốn tìm 5, 6 ký tự chẳng hạn thì chỗ Len(cr) mình nhập gì vào đó?
bạn có thể thayTrường hơp này có thể dùng Left(i,1) Like cr & "*"



Trường hơp này có thể dùng Left(i,1) Like cr & "*"
