Tách số thỏa mãn điều kiện ra khỏi dãy số _ Xin các bác chỉ giáo (1 người xem)

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

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

tomkute

Thành viên mới
Tham gia
22/5/13
Bài viết
10
Được thích
0
Em có số 223456 ở A1.

Điều kiện : trùng 25 hoặc 26 thì loại ra khỏi số .

Kết quả em cần là 234 ở A2 ( số 2 trùng 2 lần nhưng chỉ loại 1 số ).

Mong các bác giúp em . Thanks !
 
Em có số 223456 ở A1.

Điều kiện : trùng 25 hoặc 26 thì loại ra khỏi số .

Kết quả em cần là 234 ở A2 ( số 2 trùng 2 lần nhưng chỉ loại 1 số ).

Mong các bác giúp em . Thanks !

Nghĩa là sao đây? Có số 2, số 5 hoặc số 6 thì bỏ? Nếu những số ấy lập lại nhiều lần thì lấy 1
Đúng vậy không?
 
Em có số 223456 ở A1.

Điều kiện : trùng 25 hoặc 26 thì loại ra khỏi số .

Kết quả em cần là 234 ở A2 ( số 2 trùng 2 lần nhưng chỉ loại 1 số ).

Mong các bác giúp em . Thanks !

Dạ. Có 2 và 5 hoặc có 2 và 6 thì loại nhưng số 2 trùng ở 2 vị trí thì chỉ loại 1 số 2 ạ.

Bác giúp em với !
 
Dạ. Có 2 và 5 hoặc có 2 và 6 thì loại nhưng số 2 trùng ở 2 vị trí thì chỉ loại 1 số 2 ạ.

Bác giúp em với !

Số 5 hoặc 6 bị trùng thì cũng lấy 1 giống trường hợp số 2 luôn đúng không?
Bài này tôi nghĩ phải giải quyết bằng VBA mới là khỏe nhất. Bạn thấy sao?
 
Lần chỉnh sửa cuối:
Số 5 hoặc 6 bị trùng thì cũng lấy 1 giống trường hợp số 2 luôn đúng không?
Bài này tôi nghĩ phải giải quyết bằng VBA mới là khỏe nhất. Bạn thấy sao?

Vâng, số nào trùng thì chỉ loại 1, số 5 cung vậy .

VBA ạ. Em k biết gì về nó cả anh ạ.
 
Tức nếu bạn có 12355266234 thì kết quả là 135234?

Theo như em theo dõi từ đầu thì đúng là như vậy,
Nếu viết code bài này có cách nào không cần dùng vòng lặp không anh nhỉ ? có thể dùng Regex được không anh ?
 
Giữ lại 1 số ở vị trí nào cũng được ạ .

12355266234 thì kết quả là 13526234 hay 12356234 đều được ạ

Nếu thế thì cũng có thể lấy số 5 hoặc 6 nào cũng được? Tức hoặc bỏ 5 (6) đầu hoặc bỏ 5 (6) cuối?
Hoặc "chỗ này" tôi bỏ 5 (6) đầu nhưng "chỗ kia" do hứng chí tôi bỏ 5 (6) cuối, cứ thế đan xen?
Vớ vẩn
------------

Mà tại sao từ 12355266234 bạn có kết quả là 13526234?

Vì nếu tôi hiểu và tôi đi từ trái sang phải thì khi gặp 2 đầu tiên tôi xóa 2, 5, 6 còn 13526234. Tiếp theo phải là xóa 1 số 2, 1 số 5 và 1 số 6 chứ? Tức còn 13234

Bạn làm thế nào để có 13526234?

Có 3 chữ số 2, 2 chữ số 5, 2 chữ số 6 thì phải bỏ hết 2 số 5 và 2 số 6 chứ? Làm gì còn 5 với 6 trong kết quả nữa?

Hay bạn thậm chí không biết mình muốn gì? Hoặc bạn không biết miêu tả cái bạn muốn?
 
Lần chỉnh sửa cuối:
Nếu thế thì cũng có thể lấy số 5 hoặc 6 nào cũng được? Tức hoặc bỏ 5 (6) đầu hoặc bỏ 5 (6) cuối?
Hoặc "chỗ này" tôi bỏ 5 (6) đầu nhưng "chỗ kia" do hứng chí tôi bỏ 5 (6) cuối, cứ thế đan xen?
Vớ vẩn

Đúng là vớ vẩn,

Bài này ứng dụng đâu nhỉ, chủ topic nói vòng vo 1 hồi giống xoay Rubik quá - xem 1 hồi chóng mặt

Đề nghị chủ topic giải thích lại rõ ràng đưa ra nhiều ví dụ dãy số hơn, và nếu tốt nhất cho biết ứng dụng vào việc gì cụ thể hay phần việc cụ thể nào - có khi có giải pháp khác hay hơn.
 
Đúng là vớ vẩn,

Bài này ứng dụng đâu nhỉ, chủ topic nói vòng vo 1 hồi giống xoay Rubik quá - xem 1 hồi chóng mặt

Đề nghị chủ topic giải thích lại rõ ràng đưa ra nhiều ví dụ dãy số hơn, và nếu tốt nhất cho biết ứng dụng vào việc gì cụ thể hay phần việc cụ thể nào - có khi có giải pháp khác hay hơn.

Chào bạn vodoi2x. Lâu lắm không "gặp"

Tôi nghĩ bài này có lẽ chỉ có ứng dụng cho người hỏi thôi
 
Thôi thì viết tạm 1 đoạn code nháp , bạn xem nếu ưng ý với kết quả rồi, chỉ chúng ta " EDIT "tiếp !
Bạn diễn đạt vòng vo, không thoát ý gì cả :
[GPECODE=vb]
Function GPE(source)
Dim i As Long, n As Long, Item As String, tmp As String
Item = CStr(source)
With CreateObject("scripting.Dictionary")
For i = 1 To Len(Item)
tmp = Mid(CStr(Item), i, 1)
If Len(tmp) Then
If Not .exists(tmp) Then
.Add tmp, ""
Else
Item = Replace(Item, tmp, " ", , 1)
End If
End If
Next
End With
GPE = Replace(Item, " ", "")
End Function
[/GPECODE]
 
Thôi thì viết tạm 1 đoạn code nháp , bạn xem nếu ưng ý với kết quả rồi, chỉ chúng ta " EDIT "tiếp !
Bạn diễn đạt vòng vo, không thoát ý gì cả :
[GPECODE=vb]
Function GPE(source)
Dim i As Long, n As Long, Item As String, tmp As String
Item = CStr(source)
With CreateObject("scripting.Dictionary")
For i = 1 To Len(Item)
tmp = Mid(CStr(Item), i, 1)
If Len(tmp) Then
If Not .exists(tmp) Then
.Add tmp, ""
Else
Item = Replace(Item, tmp, " ", , 1)
End If
End If
Next
End With
GPE = Replace(Item, " ", "")
End Function
[/GPECODE]

Chưa xét chi tiết code. Tôi chạy code với source = 12355266255632347 thì kết quả là 1562347
Source có 3 chữ số 3 mà sao kết quả chỉ còn có 1 chữ số 3???
 
Híc, các bác nói bỏ số 5 đầu hay cuối hay ỏ giữa em phải giải thích thế !

Cụ thể là em muốn như sau .

Ở A1 em có 12345 . Nếu A1 có 2&5 thì A2 em cần kết quả là 134 ( có 8 trường hợp cho điều kiện nhưng em chỉ cần các bác giúp em 1 thôi ).

Nếu A1 có 12225 thì A2 em cần 122 ( loại 2 ở vị trí nào cũng được).

Nếu dùng công thức được thì tiện nhất vì em không biết chèn code VBA vào như thế nào ạ.

Mong các bác giúp em. Bài toán này dành riêng cho ứng dụng của em nên khó trình bày quá .
 
Lần chỉnh sửa cuối:
Chào bạn vodoi2x. Lâu lắm không "gặp"

Cám ơn bác, cũng lâu rùi mới lên GPE - và có lên cũng không mấy bài dễ để trả lời


Híc, các bác nói bỏ số 5 đầu hay cuối hay ỏ giữa em phải giải thích thế !

Cụ thể là em muốn như sau .

Ở A1 em có 12345 . Nếu A1 có 2&5 thì A2 em cần kết quả là 134 ( có 8 trường hợp cho điều kiện nhưng em chỉ cần các bác giúp em 1 thôi ).

Nếu A1 có 12225 thì A2 em cần 122 ( loại 2 ở vị trí nào cũng được).

Nếu dùng công thức được thì tiện nhất vì em không biết chèn code VBA vào như thế nào ạ.

Mong các bác giúp em. Bài toán này dành riêng cho ứng dụng của em nên khó trình bày quá .

Tức là loại 1 lần số 2 và 1 lần số 5 (nếu có)????

Nếu đúng thế thì dùng công thức sau

=SUBSTITUTE(SUBSTITUTE(A1,2,"",1),5,"",1)

Không có gì là không giải thích được, trừ khi ta cố tình, hoặc là không chịu bỏ thời gian ra mà thôi
------------------------------------


xem lại bài 1 thì hình như thêm số 6, nếu thế thì công thức thành:

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,2,"",1),5,"",1),6,"",1)
 
Lần chỉnh sửa cuối:
Chưa xét chi tiết code. Tôi chạy code với source = 12355266255632347 thì kết quả là 1562347
Source có 3 chữ số 3 mà sao kết quả chỉ còn có 1 chữ số 3???

Hix,Code vừa mới lăn xuống đường ,đã "thủng lốp",< , Cảm ơn anh nhiều ! >
 
Lần chỉnh sửa cuối:
Cám ơn bác, cũng lâu rùi mới lên GPE - và có lên cũng không mấy bài dễ để trả lời




Tức là loại 1 lần số 2 và 1 lần số 5 (nếu có)????

Nếu đúng thế thì dùng công thức sau

=SUBSTITUTE(SUBSTITUTE(A1,2,"",1),5,"",1)

Không có gì là không giải thích được, trừ khi ta cố tình, hoặc là không chịu bỏ thời gian ra mà thôi

Thanks bác nhiều . Em làm được rồi ạ.
 
@ bác vodoi ơi . Nếu 13467 không có 2 &5 , ô A2 em muôn trả về giá trị x chứ không phải 13467 thì làm thế nào ạ ?

bạn đang dùng công thức nào??? - toàn làm khó nhau vậy? bạn phải nói cụ thể, vì trên kia tôi đưa ra 2 câu thức, cũng như câu NẾU... THÌ -- có nghĩa là bạn cần xác nhận là công thức nào và đúng theo y.c của bạn không và đúng với gì tôi suy diễn không

--------
Nếu chỉ xét cho số 2 và 5 (thay 1 lần nếu có) và giờ thêm điều kiện không có thì Kết quả trả về là "x", thì công thức thành

PHP:
=IF(OR(LEN(SUBSTITUTE(A1,2,""))<LEN(A1),LEN(SUBSTITUTE(A1,5,""))<LEN(A1) ), SUBSTITUTE(SUBSTITUTE(A1,2,"",1),5,"",1),"x")
 
Lần chỉnh sửa cuối:
b
PHP:
=IF(OR(LEN(SUBSTITUTE(A1,2,""))<LEN(A1),LEN(SUBSTITUTE(A1,5,""))<LEN(A1) ), SUBSTITUTE(SUBSTITUTE(A1,2,"",1),5,"",1),"x")

HOẶC Phương án mới cho gọn
Nếu chỉ xét cho số 2 và 5 (thay 1 lần nếu có) và giờ thêm điều kiện không có thì Kết quả trả về là "x", thì công thức thành


=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,2,"",1),5,"",1),A1,"x")
 
HOẶC Phương án mới cho gọn
Nếu chỉ xét cho số 2 và 5 (thay 1 lần nếu có) và giờ thêm điều kiện không có thì Kết quả trả về là "x", thì công thức thành


=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,2,"",1),5,"",1),A1,"x")

Thanks bác. Em dùng công thức 1 của bác và đã thử bằng công thức mới .
Nhưng 12345 ( có cả 2&5 ) thì ok. 12346 thì lại trả về 1346.

Điều kiện của em là phải có cả 2 cà 5 không thì không thỏa mãn bác ạ. 12346 cũng phải trả về "X" mới đúng.

Bác cố giúp em nhé !
 
Thanks bác. Em dùng công thức 1 của bác và đã thử bằng công thức mới .
Nhưng 12345 ( có cả 2&5 ) thì ok. 12346 thì lại trả về 1346.

Điều kiện của em là phải có cả 2 cà 5 không thì không thỏa mãn bác ạ. 12346 cũng phải trả về "X" mới đúng.

Bác cố giúp em nhé !

Bạn phải làm rõ,

bạn phải cố giải thích , chứ không phải tôi cố

Trường hợp 6 bạn sử dụng công thức nào, khi đó 2 và 6 ah?
 
Thanks bác. Em dùng công thức 1 của bác và đã thử bằng công thức mới .
Nhưng 12345 ( có cả 2&5 ) thì ok. 12346 thì lại trả về 1346.

Điều kiện của em là phải có cả 2 cà 5 không thì không thỏa mãn bác ạ. 12346 cũng phải trả về "X" mới đúng.

Bác cố giúp em nhé !

Thử cái mơi này vậy

=IF(AND(SUBSTITUTE(A1,2,"")*1<>A1*1,SUBSTITUTE(A1,5,"")*1<>A1*1 ), SUBSTITUTE(SUBSTITUTE(A1,2,"",1),5,"",1),"X")


ĐÁP ỨNG CHO YÊU CẦU

- Dãy số phải có ít nhất cả HAI số : số 2 và 5 thì mới xét (TRÁI LẠI thì trả về "X")

- khi xét: thì sẽ thay MỘT LẦN cho số 2 và MỘT lần cho số 5 để được số mới (kết quả trả về)
 
Thử cái mơi này vậy

=IF(AND(SUBSTITUTE(A1,2,"")*1<>A1*1,SUBSTITUTE(A1,5,"")*1<>A1*1 ), SUBSTITUTE(SUBSTITUTE(A1,2,"",1),5,"",1),"X")

hoặc dùng phương án khác nữa

=IF(OR(ISERR(FIND(2,A1)),ISERR(FIND(5,A1)) ),"X", SUBSTITUTE(SUBSTITUTE(A1,2,"",1),5,"",1))

cũng
ĐÁP ỨNG CHO YÊU CẦU

- Dãy số phải có ít nhất cả HAI số : số 2 và 5 thì mới xét (TRÁI LẠI thì trả về "X")
- khi xét: thì sẽ thay MỘT LẦN cho số 2 và MỘT lần cho số 5 để được số mới (kết quả trả về)
 
Thanks bác Vodoi nhiều ạ !

Em làm ok rồi .

Em lại nhờ bác tiếp ạ . Em dùng hàm Large làm cái này

A1 A2 A3 ...... An An+1 An+2

134 987 478 ..... 871 =Large(A1:An,1) =Large ( A1:An,2)

Kết quả ở ô An+1, An+2 ok rồi nhưng vì dữ liệu của em quá nhiều, việc tìm trong A1.. An ô nào lớn thứ 1, thứ 2 rất khó . Có cách nào trong excel mà khi em click vào An+1 nó chỉ sang ô lớn nhất từ A1 đến An không ạ, hoặc có chú thích ô lớn nhất là ô thứ bao nhiêu không ạ ?
 
Thanks bác Vodoi nhiều ạ !

Em làm ok rồi .

Em lại nhờ bác tiếp ạ . Em dùng hàm Large làm cái này

A1 A2 A3 ...... An An+1 An+2

134 987 478 ..... 871 =Large(A1:An,1) =Large ( A1:An,2)

Kết quả ở ô An+1, An+2 ok rồi nhưng vì dữ liệu của em quá nhiều, việc tìm trong A1.. An ô nào lớn thứ 1, thứ 2 rất khó . Có cách nào trong excel mà khi em click vào An+1 nó chỉ sang ô lớn nhất từ A1 đến An không ạ, hoặc có chú thích ô lớn nhất là ô thứ bao nhiêu không ạ ?

Giả định dãy số của bạn là đặt ở A1:A10, A11 chứa giá trị lớn nhất (=Large(A1:A10,1), A12 chứa giá trị lớn thứ hai (=Large(A1:A10,2)

Có các cách sau:

C1: highlight ô chứa giá trị lớn nhất - dùng Conditional Formatting

- chọn A1:A10
- vào mục Conditional Formatting
- chọn Formula với công thức là =A1=Large(A1:A10,1)
- chọn định dạng theo màu mong muốn hiện ở ô thoả mãn điều kiện

(bạn tự tìm kiếm (tại GPE cũng có) để vận dụng Conditional Formatting cho phù hợp version Excel của bạn)


C2: tại A13 sử dụng công thức sau để hiện thứ tự ô có giá trị lớn nhất

=MATCH(Large(A1:A10,1),A1:A10,0)

HOẶC
=MATCH(A11,A1:A10,0)



Nếu muốn cho giá trị lớn thứ 2 thì làm tương tự
 
Lần chỉnh sửa cuối:
Thanks bác Vô đối ạ . Em làm theo cách 2 của bác ok rồi ạ .

Conditional Formatting em dùng để hiện màu các ô thỏa mãn đk khác rồi ạ .
 
Thanks bác Vô đối ạ . Em làm theo cách 2 của bác ok rồi ạ .

Conditional Formatting em dùng để hiện màu các ô thỏa mãn đk khác rồi ạ .

C2 có thể dùng công thức sau (vừa thêm ở #28)


=MATCH(A11,A1:A10,0)

(nếu A11 chứa giá trị lớn nhất rui)
 

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

Back
Top Bottom