LienDong
Thành viên thường trực




- Tham gia
- 22/11/12
- Bài viết
- 223
- Được thích
- 46
- Nghề nghiệp
- Ai nói đúng thì làm!
cảm ơn bạn mình đang dùng excel 2010
E4=IFERROR(SMALL(IF(COUNTIF($A$7:$A$12,ROW(INDIRECT(MIN($A$7:$A$12)&":"&MAX($A$7:$A$12))))=0,ROW(INDIRECT(MIN($A$7:$A$12)&":"&MAX($A$7:$A$12)))),ROWS($E$4:E4)),"")cảm ơn bạn mình đang dùng excel 2010
Đọc công thức cái loạn não liềnE4=IFERROR(SMALL(IF(COUNTIF($A$7:$A$12,ROW(INDIRECT(MIN($A$7:$A$12)&":"&MAX($A$7:$A$12))))=0,ROW(INDIRECT(MIN($A$7:$A$12)&":"&MAX($A$7:$A$12)))),ROWS($E$4:E4)),"")
Kết thúc CTRL+SHIFT+ENTER => coppy xuống dưới
Công thức này hay, nhưng hạn chế của nó là chỉ tìm thiếu khúc giữa, bỏ qua kiểm tra đầu và cuối. (nhỏ hơn MIN hoặc lớn hơn MAX)E4=IFERROR(SMALL(IF(COUNTIF($A$7:$A$12,ROW(INDIRECT(MIN($A$7:$A$12)&":"&MAX($A$7:$A$12))))=0,ROW(INDIRECT(MIN($A$7:$A$12)&":"&MAX($A$7:$A$12)))),ROWS($E$4:E4)),"")
Kết thúc CTRL+SHIFT+ENTER => coppy xuống dưới
nhỏ hơn MIN hoặc lớn hơn MAX có nghĩa là gì? Theo tôi thì chủ thớt không biết diễn đạt. 99 và 106 không phải là số cứng nhắc, không thể dùng chúng trong công thức. Nếu tôi hiểu đúng thì số nhỏ nhất trong vùng đã cho là MIN, số lớn nhất trong vùng là MAX. Tìm các số > min và < max mà không có trong vùng.Công thức này hay, nhưng hạn chế của nó là chỉ tìm thiếu khúc giữa, bỏ qua kiểm tra đầu và cuối. (nhỏ hơn MIN hoặc lớn hơn MAX)
.
Cái dãy số của em trong bảng tính trên đã được sort rồinhỏ hơn MIN hoặc lớn hơn MAX có nghĩa là gì? Theo tôi thì chủ thớt không biết diễn đạt. 99 và 106 không phải là số cứng nhắc, không thể dùng chúng trong công thức. Nếu tôi hiểu đúng thì số nhỏ nhất trong vùng đã cho là MIN, số lớn nhất trong vùng là MAX. Tìm các số > min và < max mà không có trong vùng.
Nếu cái này viết UDF cần mấy vòng lặp anh nhỉ.Tôi vốn không phải lúc nào cũng sẵn sàng với VBA.
Nhưng trường hợp này dùng UDF dễ kiểm soát, dễ chỉnh sửa theo ý muốn hơn.
Câu hỏi đầu tiên là: vùng số ấy đã sắp xếp hay chưa sắp xếp?
Hai giải thuật khác nhau.
Nếu chỉ là 1 dãy như trên thì khỏi phải công thức, nhìn là thấy thiếu 101, 104.Cái dãy số của em trong bảng tính trên đã được sort rồi
Bây giờ em xin mô tả như thế này
Có 1 dãy số tự nhiên, số Min=99; Max=106, tìm số còn thiếu?
Dãy số như sau: (chưa được sort)
100
99
102
100
103
106
105
như vậy kết quả là thiếu số: 101;104
vậy nhờ các anh chị viết công thức hay dùng hàm gì cũng được. Cảm ơn các bạn nhiều
Chịu khó code rắc rối thì chắc chỉ cần 1.Nếu cái này viết UDF cần mấy vòng lặp anh nhỉ.
Nếu cái này viết UDF cần mấy vòng lặp anh nhỉ.
Gởi bạn 1 file đã rất xưa, nhập dãy số bất kỳ (không cần sort trước) vào cell A2 nhéNhờ các bạn giúp mình như sau:
Mình muốn tìm các số còn thiếu ở cột A, tìm từ số 99 đến số 106, trong dãy này nó thiếu các số 101;104
Mình muốn kết quả ở cell E4
Cảm ơn các bạn
Có cách nào dùng 2 for tách rời không bạn?Cũng như hầu hết thuật toán về số, mức độ "ưu việt" của code còn tuỳ thuộc vào tình trạng dữ liệu.
Điển hình, lượng số thiếu nhiều hơn hay ít hơn lượng số có sẵn trong dãy?
Ví dụ lượng số thiếu khá nhiều so với lượng số cho sẵn thì thuật toán sau đây khá tốt:
' giả sử các số nằm trong mảng a
so1 = Application.Small(a, 1)
For i = 2 To UBound(a) - LBound(a) + 1
so2 = Application.Small(a, i)
For i2 = so1 + 1 To so2 - 1
' các i2 là các số còn thiếu
Next i2
so1 = so2
Next i
Có. Sort mảng a trước. Sau đó duyệt a(i)+1 đến a(i+1)-1 như trên.Có cách nào dùng 2 for tách rời không bạn?![]()
Tạo mảng a(min to max), for đầu ghi nhận số có, for 2 lọc lấy số thiếuCó. Sort mảng a trước. Sau đó duyệt a(i)+1 đến a(i+1)-1 như trên.
Thực ra cách này đỡ tốn năng lượng máy hơn cách trên.
(nếu sort mảng a bằng cách cho nó vào một arraylist rồi gọi phương thức sort thì là 1 vòng lặp)
Vậy làm sao xác định được min và max nếu không dùng hàm excel.Tạo mảng a(min to max), for đầu ghi nhận số có, for 2 lọc lấy số thiếu
Đó là phép sort theo chỉ số. Rất hiệu quả, nhất là khi số thiếu rất nhiều so với số có.Tạo mảng a(min to max), for đầu ghi nhận số có, for 2 lọc lấy số thiếu
Hàm bảng tính thật ra được Microsoft chăm sóc kỹ nên rất ưu việt.Vậy làm sao xác định được min và max nếu không dùng hàm excel.