giúp em hàm tìm và thay thế ngẫu nhiên (1 người xem)

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

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

Status
Không mở trả lời sau này.

lala_qn

Thành viên tiêu biểu
Tham gia
2/5/09
Bài viết
598
Được thích
17
Nghề nghiệp
chưa ổn định
Em chào anh chị!
VD em có dữ liệu là: 09.12.00.11.22
Em muốn hàm tìm dấu "." trong chuỗi dữ liệu thay thế ngẫu nhiên bằng kí tự khác cho sẵn vd như "," ", " " ," ",," "." ". " " ." ".."
Nhờ anh chị giúp dùm em công thức này với ạ, cảm ơn anh chị nhiều !
 

File đính kèm

Lần chỉnh sửa cuối:
em chào anh chị!
vd em có dữ liệu là: 09.12.00.11.22
em muốn hàm tìm dấu "." trong chuỗi dữ liệu thay thế ngẫu nhiên bằng kí tự khác cho sẵn vd như "," ", " " ," ",," ". " " ." ".."
nhờ anh chị giúp dùm em công thức này với ạ, cảm ơn anh chị nhiều !
Dùng hàm substitute đó bạn
 
nhờ anh chị giúp dùm em với ạ !
 
PHP:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,".",","),",",",,"),",,"," ")," ","."),".","..")
"Chời ơi!".............................
Sao tôi đọc yêu cầu không phải vậy!
em muốn hàm tìm dấu "." trong chuỗi dữ liệu thay thế ngẫu nhiên bằng kí tự khác cho sẵn vd như "," ", " " ," ",," ". " " ." ".."
 
Lần chỉnh sửa cuối:
=Substitute(chuoi, ".", Choose(Randbetween(1,7), ",", ", ", " ,", ",,", ". ", " .", "..") )
 
=Substitute(chuoi, ".", Choose(Randbetween(1,7), ",", ", ", " ,", ",,", ". ", " .", "..") )
Theo tôi hiểu thì vẫn chưa đúng ý tác giả.
- Tìm dấu "." thứ nhất. thay bằng 1 dấu "ngẫu nhiên".
- Tìm dấu "." thứ hai. thay bằng 1 dấu "ngẫu nhiên".
- Tìm dấu "." thứ ba. thay bằng 1 dấu "ngẫu nhiên".
- Tiếp tục ... cho đến ... thua (bằng công thức).
 
Theo tôi hiểu thì vẫn chưa đúng ý tác giả.
- Tìm dấu "." thứ nhất. thay bằng 1 dấu "ngẫu nhiên".
- Tìm dấu "." thứ hai. thay bằng 1 dấu "ngẫu nhiên".
- Tìm dấu "." thứ ba. thay bằng 1 dấu "ngẫu nhiên".
- Tiếp tục ... cho đến ... thua (bằng công thức).
Ý tác giả thế nào thì khó biết được. Bạn và người khác cũng chỉ đoán thôi. Tác giả không nói rõ như bạn.
Hỏi kiểu đánh đố thì mệt lắm.
 
Quay lại phân tích đề bài này:
(GT) vd em có dữ liệu là: 09.12.00.11.22
(KL)em muốn hàm tìm dấu "." trong chuỗi dữ liệu thay thế ngẫu nhiên bằng kí tự khác cho sẵn vd như:
"," ", " " ," ",," ". " " ." ".."
(1) Đầu câu chưa viết hoa là chưa tự tôn & để người khác tôn trọng;
(2) Trong GT có 4 dấu "."
Nhưng trong KL tác giả đưa ra 3 cái dấu "," kết hợp hay không kết hợp với khoảng trắng; Hai cái dấu "." kết hợp với khoảng trắng trước & sau nó
& cuối cùng là ghép đôi các dấu "," & "."
Vậy số để có thể đem vô thay là lớn hơn số cần thay

Theo mình hiểu có thể là
A: Các dấu "," có thể được thay (hay không thay ?) 1 cách ngẫu nhiên bằng 1 trong các chuỗi trong KL
B: Các dấu "." được thay hết bỡi 1 trong các phương án ở KL cách ngẫu nhiên
C: Bạn này là cao thủ trong chuyện (mánh khóe) tận dụng kiến thức của người khác
D: . . . . . .

(Mời các bạn tham khảo thêm ở đây: https://www.giaiphapexcel.com/diendan/threads/giúp-em-hàm-tạo-chuỗi-ngẫu-nhiên-ạ.145373/#post-939370)
& tóm lại: Không nên giúp tiếp với trường hợp nêu GT không rõ ràng, nhưng phán xét người khác đã có nhã ý giúp mình 1 cách có thể gọi là phủ phàn
 
Lần chỉnh sửa cuối:
=Substitute(chuoi, ".", Choose(Randbetween(1,7), ",", ", ", " ,", ",,", ". ", " .", "..") )
kết quả vẫn chưa đúng ạ, em có sửa lại bài up thêm vd3, nhờ anh xem lại ạ.
Quay lại phân tích đề bài này:

(1) Đầu câu chưa viết hoa là chưa tự tôn & để người khác tôn trọng;
(2) Trong GT có 4 dấu "."
Nhưng trong KL tác giả đưa ra 3 cái dấu "," kết hợp hay không kết hợp với khoảng trắng; Hai cái dấu "." kết hợp với khoảng trắng trước & sau nó
& cuối cùng là ghép đôi các dấu "," & "."
Vậy số để có thể đem vô thay là lớn hơn số cần thay

Theo mình hiểu có thể là
A: Các dấu "," có thể được thay (hay không thay ?) 1 cách ngẫu nhiên bằng 1 trong các chuỗi trong KL
B: Các dấu "." được thay hết bỡi 1 trong các phương án ở KL cách ngẫu nhiên
C: Bạn này là cao thủ trong chuyện (mánh khóe) tận dụng kiến thức của người khác
D: . . . . . .

(Mời các bạn tham khảo thêm ở đây: https://www.giaiphapexcel.com/diendan/threads/giúp-em-hàm-tạo-chuỗi-ngẫu-nhiên-ạ.145373/#post-939370)
& tóm lại: Không nên giúp tiếp với trường hợp nêu GT không rõ ràng, nhưng phán xét người khác đã có nhã ý giúp mình 1 cách có thể gọi là phủ phàn
em có sửa lại bài up vd KQ cần rùi ạ, là đáp án B như anh nói ạ .
Bài đã được tự động gộp:

Theo tôi hiểu thì vẫn chưa đúng ý tác giả.
- Tìm dấu "." thứ nhất. thay bằng 1 dấu "ngẫu nhiên".
- Tìm dấu "." thứ hai. thay bằng 1 dấu "ngẫu nhiên".
- Tìm dấu "." thứ ba. thay bằng 1 dấu "ngẫu nhiên".
- Tiếp tục ... cho đến ... thua (bằng công thức).
em có sữa bài up thêm vd3 anh xem dùm em ạ
 
Hiểu chết liền.
Nếu tôi nhìn không nhầm thì có 9 ví dụ. Trong 5 trường hợp chỉ có 3 dấu chấm được thay, 1 dấu chấm không được thay. Trong 4 ví dụ cả 4 dấu chấm được thay.
Trong khi đó
B: Các dấu "." được thay hết bỡi 1 trong các phương án ở KL cách ngẫu nhiên
Thế mà dám khẳng định
là đáp án B như anh nói ạ

Ví dụ chỉ là ví dụ. Một câu mô tả thì rõ ràng ngay.
 
Hiểu chết liền.
Nếu tôi nhìn không nhầm thì có 9 ví dụ. Trong 5 trường hợp chỉ có 3 dấu chấm được thay, 1 dấu chấm không được thay. Trong 4 ví dụ cả 4 dấu chấm được thay.
Trong khi đó

Thế mà dám khẳng định


Ví dụ chỉ là ví dụ. Một câu mô tả thì rõ ràng ngay.
dạ hiểu đơn giản là tìm dấu chấm "." thay thế ngẫu nhiên bằng dữ liệu cho sẵn thui ạ, ko cần fai thứ tự, ko cần fai thay hết ạ
 
. . . .Nếu tôi nhìn không nhầm thì có 9 ví dụ. Trong 5 trường hợp chỉ có 3 dấu chấm được thay, 1 dấu chấm không được thay. Trong 4 ví dụ cả 4 dấu chấm được thay.
Trong KL thì có phương án thêm (chứ 'thay' chỉ tạm hiểu mà thôi) khoảng trắng trước hay sau dấu "."
 
Trong KL thì có phương án thêm (chứ 'thay' chỉ tạm hiểu mà thôi) khoảng trắng trước hay sau dấu "."
dạ vd chuỗi kí tự cho sẵn em viết thiếu "." ạ, em mới thêm vào trường hợp này nữa ạ
". " " ." cả 2 trường hợp ạ
 
Theo tôi hiểu thì vẫn chưa đúng ý tác giả.
- Tìm dấu "." thứ nhất. thay bằng 1 dấu "ngẫu nhiên".
- Tìm dấu "." thứ hai. thay bằng 1 dấu "ngẫu nhiên".
- Tìm dấu "." thứ ba. thay bằng 1 dấu "ngẫu nhiên".
- Tiếp tục ... cho đến ... thua (bằng công thức).
Ý tác giả thế nào thì khó biết được. Bạn và người khác cũng chỉ đoán thôi. Tác giả không nói rõ như bạn.
Hỏi kiểu đánh đố thì mệt lắm.
Tôi chỉ đưa lên ý kiến dùng hàm choose để thực hiện cái vụ chọn ngẫu nhiên.
Vấn đề của thớt như thế nào tôi không có hứng. Đã không biết cách ăn nói rõ ràng còn viết tắt tùm lum.
 
................................Đã không biết cách ăn nói rõ ràng còn viết tắt tùm lum.
Chưa đủ. Còn là "máy không thể viết Hoa", và ...
---------------------------------------------------------
Trường hợp này mà xử lý được bằng các Hàm Excel thì chắc "Oải củ khoai" luôn.
 
Tôi chỉ đưa lên ý kiến dùng hàm choose để thực hiện cái vụ chọn ngẫu nhiên.
Vấn đề của thớt như thế nào tôi không có hứng. Đã không biết cách ăn nói rõ ràng còn viết tắt tùm lum.
em có viết tắt đâu anh, hic
Chưa đủ. Còn là "máy không thể viết Hoa", và ...
---------------------------------------------------------
Trường hợp này mà xử lý được bằng các Hàm Excel thì chắc "Oải củ khoai" luôn.
xem thử còn cách nào giúp dùm em với ạ
 
em có viết tắt đâu anh, hic

xem thử còn cách nào giúp dùm em với ạ
1/ Bạn không biết (hoặc chưa biết) viết Hoa đầu câu, đầu đoạn văn,... hoặc máy của bạn không thể viết chữ Hoa?
2/ Chuyện này có thể xử nó bằng VBA, nhưng bạn không muốn dùng VBA nên đành chịu.
 
1/ Bạn không biết (hoặc chưa biết) viết Hoa đầu câu, đầu đoạn văn,... hoặc máy của bạn không thể viết chữ Hoa?
2/ Chuyện này có thể xử nó bằng VBA, nhưng bạn không muốn dùng VBA nên đành chịu.
Em là người bán hàng ko fai văn phòng, nên ko thông thạo về office lắm, nên sai sót gì mong anh chị bỏ qua ạ
Vì là ko học về office nên cần về vấn đề gì cũng mong anh chị giúp em hàm excel em lưu lại rùi cần copy chạy ạ, code VBA em càng ko biết gì luôn ạ,
 
"Là người bán hàng" không có nghĩa là bạn sử dụng từ viết tắt mà không biết rằng mình đang viết tắt?
Bạn cứ nhìn lại, nếu những từ ngữ mình viết có hể dùng trong báo cáo nộp cho sếp thì nó là chuẩn. Nếun còn sợ nó không lịch sự với sếp thì nó là chưa chuẩn.
 
Em là người bán hàng ko fai văn phòng, nên ko thông thạo về office lắm, nên sai sót gì mong anh chị bỏ qua ạ
Vì là ko học về office nên cần về vấn đề gì cũng mong anh chị giúp em hàm excel em lưu lại rùi cần copy chạy ạ, code VBA em càng ko biết gì luôn ạ,
Nếu chỉ nói mà tôi không làm thì bạn cho rằng tôi nói suông.
Gởi bạn 1 Hàm tự tạo bằng VBA, nếu bạn dùng được thì dùng.
Cấu trúc của Hàm:
LungTungBeng(Chuỗi ban đầu; Ký tự cần thay; Chuỗi những ký tự cần thay ngẫu nhiên)
Ví dụ:
Chuỗi ban đầu: A2
Ký tự cần thay: "." (Dấu Chấm)
Chuỗi những ký tự cần thay, cách nhau dấu Chấm Phẩy: ".;,;,,;..;.. ;';' ;'';'' ;a;b;c;d;e;f"
Công thức ô C2:
PHP:
=LungTungBeng(A2;".";".;,;,,;..;.. ;';' ;'';'' ;a;b;c;d;e;f")
 

File đính kèm

"Là người bán hàng" không có nghĩa là bạn sử dụng từ viết tắt mà không biết rằng mình đang viết tắt?
Bạn cứ nhìn lại, nếu những từ ngữ mình viết có hể dùng trong báo cáo nộp cho sếp thì nó là chuẩn. Nếun còn sợ nó không lịch sự với sếp thì nó là chưa chuẩn.
Em thực sự ko biết là viết tắt gì anh, anh cứ nói rõ anh,
Em ko học office, nên em hiểu thế nào mô tả vậy anh.
 
Tôi chỉ đưa lên ý kiến dùng hàm choose để thực hiện cái vụ chọn ngẫu nhiên.
Vấn đề của thớt như thế nào tôi không có hứng. Đã không biết cách ăn nói rõ ràng còn viết tắt tùm lum.

Em viết bài vẫn xưng hô anh chị dạ thưa đàng hoàng dù em ko biết ai lớn ai lớn nhỏ, không hề nói năng khiếm nhã mất lịch sự với ai
Em chỉ sai là ko viết hoa đầu câu, em đi dạo mấy bài cũng thấy có mấy bài ko viết hoa đầu câu, cái này có thể nhắc nhẹ anh để sửa, vì ko fai anh em nào cũng dân chuyên văn phòng để ý từ chữ từng câu từ, thì anh em sẽ sữa thui,

"Đã không biết cách ăn nói ....."
"Bạn cứ nhìn lại, nếu những từ ngữ mình viết có hể dùng trong báo cáo nộp cho sếp thì nó là chuẩn. Nếun còn sợ nó không lịch sự với sếp thì nó là chưa chuẩn. "
Em sai cái gì "nặng" mà anh dùng từ ngữ quá mức vậy anh ? nếu ko muốn nói là chửi xúc phạm người khác vậy anh ?
Anh em sai gì thì cứ góp ý thắng để họ rút kinh nghiệm sữa chữa, với lại forum này để anh học hỏi và chia sẽ khác xa với việc báo cáo "xếp", với lại em cũng nói rõ em chỉ là nhân viên đi bán hàng bình thường nên nhiều khi trình bày sai sót, khác với việc "cố tình" mất lịch sự người khác, đằng này anh cứ nói bóng gió chửi người khác vậy anh ?
 
Lần chỉnh sửa cuối:
Em viết bài vẫn xưng hô anh chị dạ thưa đàng hoàng dù em ko biết ai lớn ai lớn nhỏ, không hề nói năng khiếm nhã mất lịch sự với ai
Em chỉ sai là ko viết hoa đầu câu, em đi dạo mấy bài cũng thấy có mấy bài ko viết hoa đầu câu, cái này có thể nhắc nhẹ anh để sửa, vì ko fai anh em nào cũng dân chuyên văn phòng để ý từ chữ từng câu từ, thì anh em sẽ sữa thui,


Em sai cái gì "nặng" mà anh dùng từ ngữ quá mức vậy anh ? nếu ko muốn nói là chửi xúc phạm người khác vậy anh ?
ko và dc là viết tắt. Riêng ko thì cho tới tận bài cuối cùng mà tôi trích ở trên bạn vẫn dùng.
Anh em sai gì thì cứ góp ý thắng để họ rút kinh nghiệm sữa chữa, với lại forum này để anh học hỏi và chia sẽ khác xa với việc báo cáo "xếp", với lại em cũng nói rõ em chỉ là nhân viên đi bán hàng bình thường nên nhiều khi trình bày sai sót, khác với việc "cố tình" mất lịch sự người khác, đằng này anh cứ nói bóng gió chửi người khác vậy anh ?
Bác VetMini góp ý nghiêm khắc thì đúng. Nhưng bạn cho đó là câu chửi thì không đúng. Gay gắt không có nghĩa là chửi.
 
Bảo em "Đã không biết cách ăn nói ....."
So sánh em với việc báo cáo xếp ko lịch sự "Bạn cứ nhìn lại, nếu những từ ngữ mình viết có hể dùng trong báo cáo nộp cho sếp thì nó là chuẩn. Nếun còn sợ nó không lịch sự với sếp thì nó là chưa chuẩn. "
Em nói rùi em người bán hàng bình thường, làm gì có cơ hội viết báo cáo xếp, với lại hay chát với khách hàng thành ra quen tay mất, hiếm có room nào nghiêm khắc như thế thành ra em không để ý,
với lại đó chỉ vô tình. Nếu chỉ đơn giản là viết tắt "viết hoa" "ko" "dc" thì nhắc nhẹ anh em để biết sửa, không phải là em nói năng không lịch sự ai đó, sao phải nói bóng gió, nói quá mức nặng tới người khác như vậy anh ?
 
Không nói bóng gió thì nói thẳng đây:
Yêu cầu của bạn rắc rối lắm. Nó không thể dùng cái ngôn ngữ mà bạn quen ở mấy cái "room" gì đó mà nói chuyện được.
Bạn cần về học lại cách trình bày vấn đề cho thật rõ ràng. Học cách ra ví dụ và trình bày ví dụ. May ra lúc ấy có người hiểu mà đưa ra giải đáp.

Chớ có đổ thừa do nghiêm khắc, khó khăn gì cả. Ở đây còn 4 người khác cũng chẳng hiểu bạn muốn gì.
 
Không nói bóng gió thì nói thẳng đây:
Yêu cầu của bạn rắc rối lắm. Nó không thể dùng cái ngôn ngữ mà bạn quen ở mấy cái "room" gì đó mà nói chuyện được.
Bạn cần về học lại cách trình bày vấn đề cho thật rõ ràng. Học cách ra ví dụ và trình bày ví dụ. May ra lúc ấy có người hiểu mà đưa ra giải đáp.

Chớ có đổ thừa do nghiêm khắc, khó khăn gì cả. Ở đây còn 4 người khác cũng chẳng hiểu bạn muốn gì.
"Đã không biết cách ăn nói ....."
"Bạn cứ nhìn lại, nếu những từ ngữ mình viết có hể dùng trong báo cáo nộp cho sếp thì nó là chuẩn. Nếun còn sợ nó không lịch sự với sếp thì nó là chưa chuẩn. "
Cái này chẳng qua là sai cách trình bày trong room, đằng này anh còn so sánh là "không lịch sự với xếp", thà anh nhắc nhở trực tiếp anh biết sửa ngay, anh em tôn trọng, em chưa mất lịch sự hay khiếm nhã với ai, nhưng anh mà anh tìm cớ tìm chuyện để bắt bẻ để chửi bóng chửi gió xúc phạm người khác là người mất lịch sự trước, thế anh không phải là người sai ak ?
Anh em vào room là để chia sẽ giúp đỡ học hỏi lẫn nhau, anh em bỏ công sức bỏ thời gian ra giúp người khác, anh em rất quí, cảm ơn rất nhiều, chứ không phải là đi tìm kẻ hở sai chính tả rùi chửi người khác anh nhé, em cũng 35 tuổi khổng phải nhỏ, chắc anh cũng không phải nhỏ, anh sống nói chuyện sao để anh tôn trọng nhé
 
Lý luận giỏi lắm.
Mang cái kỹ năng này áp dụng vào cách trình bày câu hỏi thì vấn đề đã được giải quyết lâu rồi.
 
Theo tôi:
Thứ nhất, bạn @lala_qn nên chấp nhận là đã viết tắt (kiểu chat như ko, dc), ban đầu có tình trạng không viết hoa đầu câu, và chấp nhận sự góp ý (nghiêm khắc cũng tốt mà. Tôi gần 60 nhưng hễ sai thì ai nghiêm khắc với tôi cũng chịu)
Thứ hai, bạn nên hiểu thêm hỏi & giải thích quá ngắn cũng là 1 dạng viết tắt, không đủ ý cho các thành viên khác trả lời.
Thứ ba, bạn lấy ý của anh @VetMini hàm Choose, sửa lại 1 chút là dùng được (thí dụ Choose(RandBetween(1, 10) thay vì 7, phía sau liệt kê đủ 10 ký hiệu ngẫu nhiên, bao gồm cả dấu chấm không khoảng trắng. (10 hay bao nhiêu là do bạn quy định chứ không bắt buộc)
 
Theo tôi:
Thứ nhất, bạn @lala_qn nên chấp nhận là đã viết tắt (kiểu chat như ko, dc), ban đầu có tình trạng không viết hoa đầu câu, và chấp nhận sự góp ý (nghiêm khắc cũng tốt mà. Tôi gần 60 nhưng hễ sai thì ai nghiêm khắc với tôi cũng chịu)
Thứ hai, bạn nên hiểu thêm hỏi & giải thích quá ngắn cũng là 1 dạng viết tắt, không đủ ý cho các thành viên khác trả lời.
Thứ ba, bạn lấy ý của anh @VetMini hàm Choose, sửa lại 1 chút là dùng được (thí dụ Choose(RandBetween(1, 10) thay vì 7, phía sau liệt kê đủ 10 ký hiệu ngẫu nhiên, bao gồm cả dấu chấm không khoảng trắng. (10 hay bao nhiêu là do bạn quy định chứ không bắt buộc)
Dạ vẫn chưa ra được như kết quả như vd3 em up kèm ạ
 
Code của hàm:
PHP:
Function ReplaceRnd(MyStr As String, Rep As String, Optional Replacement)
Dim Tmp, LenStr As Long, i As Long, X As String
If IsMissing(Replacement) Then Replacement = ".; ,;, ;.,;..; , "
    LenStr = Len(MyStr)
    Tmp = Split(Replacement, ";")
    For i = 1 To LenStr
        If Mid(MyStr, i, 1) = Rep Then
            Randomize
            X = Tmp(Int(Rnd() * (UBound(Tmp) + 1)))
            ReplaceRnd = ReplaceRnd & X
        Else
            ReplaceRnd = ReplaceRnd & Mid(MyStr, i, 1)
        End If
    Next
End Function
Cách dùng
=ReplaceRnd(A2,".")
Muốn gì khác thì thay hoặc thêm vào code chỗ Then Replacement = ".; ,;, ;.,;..; , ", hoặc gõ vào tham số của hàm
=ReplaceRnd(A2,".","a;b;c ;!;@")

1570779886694.png
 
Code của hàm:
PHP:
Function ReplaceRnd(MyStr As String, Rep As String, Optional Replacement)
Dim Tmp, LenStr As Long, i As Long, X As String
If IsMissing(Replacement) Then Replacement = ".; ,;, ;.,;..; , "
    LenStr = Len(MyStr)
    Tmp = Split(Replacement, ";")
    For i = 1 To LenStr
        If Mid(MyStr, i, 1) = Rep Then
            Randomize
            X = Tmp(Int(Rnd() * (UBound(Tmp) + 1)))
            ReplaceRnd = ReplaceRnd & X
        Else
            ReplaceRnd = ReplaceRnd & Mid(MyStr, i, 1)
        End If
    Next
End Function
Cách dùng
=ReplaceRnd(A2,".")
Muốn gì khác thì thay hoặc thêm vào code chỗ Then Replacement = ".; ,;, ;.,;..; , ", hoặc gõ vào tham số của hàm
=ReplaceRnd(A2,".","a;b;c ;!;@")

View attachment 226471
Dạ em chạy thử thấy kí tự là dấu "." và số có thể tìm và thay thế kí tự khác được rùi anh
Dùng phím gì để thay đổi nhanh các ngẫu nhiên đó anh nhỉ ?
Em muốn thêm tìm chữ hoặc cụm chữ để thay thế với anh nhé
vd: Tìm "ar" thay thế "ar;Ar;aR; ar;ar ;AR"
Tìm "em la" thay thế "Hoang Lan;Tran Hoang;Le Hoa;Vi Vi;Pham Hoang"
Cảm ơn anh nhiều ạ !
 
Lần chỉnh sửa cuối:
Điền "ar" tham số 2, điền "ar;Ar;aR; ar;ar ;AR" vào tham số 3
 
Điền "ar" tham số 2, điền "ar;Ar;aR; ar;ar ;AR" vào tham số 3
Nhờ anh xem dùm em file với ạ, tại em không biết gì về code ạ
Nhờ anh chỉnh dùm em sẵn trong code các trường hợp tìm 1 kí tự hoặc 1 từ, hoặc 1 cụm từ để thay thế, còn trên bảng tỉnh chỉ chỉnh sữa hàm là chạy được luôn ạ, tại em không biết gì về code ạ, cảm ơn anh !
 

File đính kèm

Chỉnh sửa tham số ngay trong công thức trên sheet chứ đâu cần sửa code
thí dụ C2 =ReplaceRnd(A2,".","a;b;c ;!;@")
sửa thành =ReplaceRnd(A2,"ar", "ar;Ar;aR; ar;ar ;AR")
 
Chỉnh sửa tham số ngay trong công thức trên sheet chứ đâu cần sửa code
thí dụ C2 =ReplaceRnd(A2,".","a;b;c ;!;@")
sửa thành =ReplaceRnd(A2,"ar", "ar;Ar;aR; ar;ar ;AR")
dạ em nhập công thức như anh gởi chạy nó không ra ngẫu nhiên, anh xem lại hộ em ạ
 
Hàm viết lại: tham số Rep dài tuỳ ý
PHP:
Function ReplaceRnd(MyStr As String, Rep As String, Optional Replacement)
Application.Volatile True
Dim Tmp, LenStr As Long, i As Long, X As String
Dim LenRep As Long, LenCurrent As Long
If IsMissing(Replacement) Then Replacement = ".; ,;, ;.,;..; , "
    LenStr = Len(MyStr)
    LenRep = Len(Rep)
    LenCurrent = 0
    Tmp = Split(Replacement, ";")
    For i = 1 To LenStr
        If Mid(MyStr, i, LenRep) = Rep Then
            Randomize
            X = Tmp(Int(Rnd() * (UBound(Tmp) + 1)))
            ReplaceRnd = Left(ReplaceRnd, LenCurrent) & X
            i = i + LenRep - 1
        Else
            ReplaceRnd = ReplaceRnd & Mid(MyStr, i, 1)
        End If
        LenCurrent = Len(ReplaceRnd)
    Next
End Function
 

File đính kèm

...
For i = 1 To LenStr
If Mid(MyStr, i, LenRep) = Rep Then
Randomize
...
Theo lẽ thường, tránh bỏ Randomize trong vòng lặp.
Không chỉ vì mất công, mà với máy chạy nhanh có thể nó bị trở lại số trước.
1. Randomize là dùng thời gian hiện tại để đặt hạt giống cho Random. Nếu máy chạy nhanh quá, lúc vòng lại, đồng hồ chưa kịp tick, thế là số Random bị lặp lại.
2. Randomize nhiều lần thật ra còn có thể làm cho cái sê ri của Random gián đoạn.
 
Theo lẽ thường, tránh bỏ Randomize trong vòng lặp.
...
Trước đây tôi hiểu là nếu không có Randomize, thì Random lần sau có thể sẽ bị trùng với random lần trước liền kề. Vừa rồi tôi thử cho Randomize ra ngoài vòng lặp và test vài chục lần thì thấy khả năng trùng cao hơn so với bỏ trong vòng lặp, không biết đúng không
1. Randomize là dùng thời gian hiện tại để đặt hạt giống cho Random. Nếu máy chạy nhanh quá, lúc vòng lại, đồng hồ chưa kịp tick, thế là số Random bị lặp lại.
May mắn là trong trường hợp này Randomize nằm trong 1 cái IF, chỉ True mới chạy, và False (chạy qua Else) nhiều hơn nên kéo dài được 1 miếng thời gian, anh xem giùm cái "may mắn" này có giúp được tí nào không?
Và trường hợp không "may mắn" thì phải xử lý thế nào?
2. Randomize nhiều lần thật ra còn có thể làm cho cái sê ri của Random gián đoạn.

Phiền anh giải thích giùm cái sê ri của Random là gì, và bị gián đoạn là sao, thực tình tôi chưa biết.
 
...Và trường hợp không "may mắn" thì phải xử lý thế nào?
1. VBA khá chậm, cho nên ít xảy ra "không may mắn".
2. Thường thì người ta đặt Randomize ở khoảng đầu hàm, trước khi làm các việc khác. Nếu hàm nhỏ thì người ta đặt thêm cái biến static cho biết đã Randomize chưa.

...Phiền anh giải thích giùm cái sê ri của Random là gì, và bị gián đoạn là sao, thực tình tôi chưa biết.
Random là một hàm chuỗi (đại khái như chuỗi Taylor), dựa vào cái hạt giống ban đầu để lấy trị đầu tiên. Và cứ dựa vào đó mà lấy trị kế tiếp. Vì vậy, với một hạt giống, bạn sẽ được một sê ri.
Khi bạn liên tục gọi Randomize tức là bạn đặt lại hạt giống. Và mỗi số random thực ra thuộc về một sê ri khác.

Chú thích: ở trên tôi nói là nguyên tắc lấy random bình thường. Trường hợp đặc biệt thì processor sẽ dùng tích entropy để làm thông số cho hàm chuỗi. Và cái đó dân chuyên nghiệp gọi là thực thụ random.
 
1. VBA khá chậm, cho nên ít xảy ra "không may mắn".
2. Thường thì người ta đặt Randomize ở khoảng đầu hàm, trước khi làm các việc khác. Nếu hàm nhỏ thì người ta đặt thêm cái biến static cho biết đã Randomize chưa.


Random là một hàm chuỗi (đại khái như chuỗi Taylor), dựa vào cái hạt giống ban đầu để lấy trị đầu tiên. Và cứ dựa vào đó mà lấy trị kế tiếp. Vì vậy, với một hạt giống, bạn sẽ được một sê ri.
Khi bạn liên tục gọi Randomize tức là bạn đặt lại hạt giống. Và mỗi số random thực ra thuộc về một sê ri khác.

Chú thích: ở trên tôi nói là nguyên tắc lấy random bình thường. Trường hợp đặc biệt thì processor sẽ dùng tích entropy để làm thông số cho hàm chuỗi. Và cái đó dân chuyên nghiệp gọi là thực thụ random.
Bác ah, kỹ tính quá, Randomize thì chấp nhận là phụ thuộc vào hộp đen của họ rồi (lõi code biên dịch VBA, lõi Processor như bác nói)
Túm lại là bài toán ở đây quá nhỏ thì chắc khỏi cần Randomize
Vì trùng thì trùng cũng là ngẫu nhiên (đôi khi không trùng mới là quá ép)
 
Nếu dữ liệu tính theo hàng, thì 1 lần chạy khoảng 50.000 hàng dữ liệu thì có ổn không ạ
Em muốn nó ngẫu nhiêu hạn chế trùng lặp ạ
 
Hàm viết lại: tham số Rep dài tuỳ ý
PHP:
Function ReplaceRnd(MyStr As String, Rep As String, Optional Replacement)
Application.Volatile True
Dim Tmp, LenStr As Long, i As Long, X As String
Dim LenRep As Long, LenCurrent As Long
If IsMissing(Replacement) Then Replacement = ".; ,;, ;.,;..; , "
    LenStr = Len(MyStr)
    LenRep = Len(Rep)
    LenCurrent = 0
    Tmp = Split(Replacement, ";")
    For i = 1 To LenStr
        If Mid(MyStr, i, LenRep) = Rep Then
            Randomize
            X = Tmp(Int(Rnd() * (UBound(Tmp) + 1)))
            ReplaceRnd = Left(ReplaceRnd, LenCurrent) & X
            i = i + LenRep - 1
        Else
            ReplaceRnd = ReplaceRnd & Mid(MyStr, i, 1)
        End If
        LenCurrent = Len(ReplaceRnd)
    Next
End Function
Cũng trong bộ code này, nhờ anh viết dùm em thêm trường hơp ngẫu nhiên này với ạ
Vd tìm cụm kí tự "bnm" thay bằng cụm kí tự ngẫu nhiên khác, nhưng chỉ chọn 1 loại kí tự thay ngẫu nhiên đồng loạt vào 1 chuổi đó ạ, như trong vd4-2 em up file kèm mô tả ạ.
cảm ơn anh !
 

File đính kèm

Mình xin có câu hỏi ngu/ngơ với chủ bài đăng: "Thứ" này dùng làm gì có ích cho XH không bạn?
 
Mình xin có câu hỏi ngu/ngơ với chủ bài đăng: "Thứ" này dùng làm gì có ích cho XH không bạn?
Bán hàng, và ngẫu nhiên chế ra 50.000 chuỗi ký tự. Cái này bạn tự đoán ra lợi ích của nó rồi. Khỏi cần hỏi.

Bạn còn bao nhiêu trường hợp thì liệt kê ra hết đi
Người ta làm xong một bước mới sáng kiến bước kế tiếp. Vì sáng kiến không mất tiền cho nên không bao giờ hết đâu.
Chỉ khi nào trò chơi chán rồi thì mới dừng.
 
Người ta làm xong một bước mới sáng kiến bước kế tiếp. Vì sáng kiến không mất tiền cho nên không bao giờ hết đâu.
Chỉ khi nào trò chơi chán rồi thì mới dừng.
Nếu bạn ấy liệt kê xong và tuyên bố đã hết, thì tôi làm, và không làm thêm bất kỳ trường hợp nào khác nữa. Tất nhiên nếu 1 trường hợp nào đó oái oăm quá thì không làm nổi và bó tay
 
Nếu bạn ấy liệt kê xong và tuyên bố đã hết, thì tôi làm, và không làm thêm bất kỳ trường hợp nào khác nữa. Tất nhiên nếu 1 trường hợp nào đó oái oăm quá thì không làm nổi và bó tay
Từ "rất cần" chỉ phải gõ có 11 ký tự (máy tôi gõ theo Telex) cho nên ai lên đây cũng thấy vấn đề của mình "rất cần".
Liệt kê rõ nhu cầu thì gõ tới hàng trăm ký tự. Liệt kê HẾT nhu cầu thì cần phải động não rất nhiều; vì phải hình dung ra được kết quả của từng bước liên tiếp. Vì vậy người ta chỉ hình dung bước một; xong bước này mới tính ra được bước kế.
 
Từ "rất cần" chỉ phải gõ có 11 ký tự (máy tôi gõ theo Telex) cho nên ai lên đây cũng thấy vấn đề của mình "rất cần".
Liệt kê rõ nhu cầu thì gõ tới hàng trăm ký tự. Liệt kê HẾT nhu cầu thì cần phải động não rất nhiều; vì phải hình dung ra được kết quả của từng bước liên tiếp. Vì vậy người ta chỉ hình dung bước một; xong bước này mới tính ra được bước kế.
Đó là việc của người "cần" đó anh, còn tôi không "cần" và tôi đủ kiên nhẫn để chờ :)
Nói thêm: nói RÕ cũng không phải dễ, vì như VD4, mô tả bằng lời không giống trong file
 
Lần chỉnh sửa cuối:
Đó là việc của người "cần" đó anh, còn tôi không "cần" và tôi đủ kiên nhẫn để chờ :)
Nói thêm: nói RÕ cũng không phải dễ, vì như VD4, mô tả bằng lời không giống trong file
Dạ với chủ đề "tìm và thay thế ngẫu nhiên" thì em xin thêm trường hợp ở #48 (vd4-2) ạ, nhờ anh viết thêm dùm em code ở trường hợp này nữa với ạ, cảm ơn anh nhiều !
 
Quan trọng là hết chưa, vì tôi sẽ làm lần cuối cho chủ đề này
 
Thêm tham số RepCase:
Only one random replacement use Repcase = 1
All replacements are random use RepCase = 2
Change random replacement for new line use RepCase = 3

PHP:
Function ReplaceRnd(MyStr As String, Rep As String, Replacement, RepCase As Integer) As String
'Only one random replacement use Repcase = 1'
'All  replacements are random use RepCase = 2'
'Change random replacement for new line use RepCase = 3'
Application.Volatile True
Dim Tmp, LenStr As Long, i As Long, X As String
Dim LenRep As Long, LenCurrent As Long
    LenStr = Len(MyStr)
    LenRep = Len(Rep)
    LenCurrent = 0
    Tmp = Split(Replacement, ";")
    If RepCase = 1 Then 'Only one random replacement'
        Randomize
        X = Tmp(Int(Rnd() * (UBound(Tmp) + 1)))
        For i = 1 To LenStr
            If Mid(MyStr, i, LenRep) = Rep Then
                ReplaceRnd = ReplaceRnd & X
                i = i + LenRep - 1
            Else
                ReplaceRnd = ReplaceRnd & Mid(MyStr, i, 1)
            End If
        Next
    Else
        For i = 1 To LenStr
        Select Case RepCase
            Case 2 'All  replacements are random'
                If Mid(MyStr, i, LenRep) = Rep Then
                    Randomize
                    X = Tmp(Int(Rnd() * (UBound(Tmp) + 1)))
                    ReplaceRnd = ReplaceRnd & X
                    i = i + LenRep - 1
                Else
                    ReplaceRnd = ReplaceRnd & Mid(MyStr, i, 1)
                End If
               
            Case 3 'Change random replacement for new line'
                If i = 1 Or Mid(MyStr, i, 1) = Chr(10) Then
                    Randomize
                    X = Tmp(Int(Rnd() * (UBound(Tmp) + 1)))
                End If
                If Mid(MyStr, i, LenRep) = Rep Then
                    ReplaceRnd = ReplaceRnd & X
                    i = i + LenRep - 1
                Else
                    ReplaceRnd = ReplaceRnd & Mid(MyStr, i, 1)
                End If
        End Select
        'LenCurrent = Len(ReplaceRnd)
    Next
    End If
End Function
 

File đính kèm

Thêm tham số RepCase:
Only one random replacement use Repcase = 1
All replacements are random use RepCase = 2
Change random replacement for new line use RepCase = 3

PHP:
Function ReplaceRnd(MyStr As String, Rep As String, Replacement, RepCase As Integer) As String
'Only one random replacement use Repcase = 1'
'All  replacements are random use RepCase = 2'
'Change random replacement for new line use RepCase = 3'
Application.Volatile True
Dim Tmp, LenStr As Long, i As Long, X As String
Dim LenRep As Long, LenCurrent As Long
    LenStr = Len(MyStr)
    LenRep = Len(Rep)
    LenCurrent = 0
    Tmp = Split(Replacement, ";")
    If RepCase = 1 Then 'Only one random replacement'
        Randomize
        X = Tmp(Int(Rnd() * (UBound(Tmp) + 1)))
        For i = 1 To LenStr
            If Mid(MyStr, i, LenRep) = Rep Then
                ReplaceRnd = ReplaceRnd & X
                i = i + LenRep - 1
            Else
                ReplaceRnd = ReplaceRnd & Mid(MyStr, i, 1)
            End If
        Next
    Else
        For i = 1 To LenStr
        Select Case RepCase
            Case 2 'All  replacements are random'
                If Mid(MyStr, i, LenRep) = Rep Then
                    Randomize
                    X = Tmp(Int(Rnd() * (UBound(Tmp) + 1)))
                    ReplaceRnd = ReplaceRnd & X
                    i = i + LenRep - 1
                Else
                    ReplaceRnd = ReplaceRnd & Mid(MyStr, i, 1)
                End If
              
            Case 3 'Change random replacement for new line'
                If i = 1 Or Mid(MyStr, i, 1) = Chr(10) Then
                    Randomize
                    X = Tmp(Int(Rnd() * (UBound(Tmp) + 1)))
                End If
                If Mid(MyStr, i, LenRep) = Rep Then
                    ReplaceRnd = ReplaceRnd & X
                    i = i + LenRep - 1
                Else
                    ReplaceRnd = ReplaceRnd & Mid(MyStr, i, 1)
                End If
        End Select
        'LenCurrent = Len(ReplaceRnd)
    Next
    End If
End Function
Em chạy thử thì thấy có lỗi thêm cả "-ptmNo1" vào nữa anh
Em muốn thêm kí hiệu vào trong công thức luôn cho gọn đẹp ạ
Vd: kí hiệu số 1: là đảo ngẫu nhiên , kí kiệu số 2: là đảo ngẫu nhiên nhưng theo chuỗi
Cảm ơn anh !
 
bạn xem kỹ đi nha, -ptmNo1! là tôi cho vào công thức. Tham số 1 là gì, 2 là gì, 3 là gì đã định nghĩa
TB: đảo ngẫu nhiên nhưng theo "chuỗi" là gì? A1,A2 là chuỗi đó
Tôi xong rồi.
 
Mình xin có câu hỏi ngu/ngơ với chủ bài đăng: "Thứ" này dùng làm gì có ích cho XH không bạn?
Có hại thì có, như VetMini:
Bán hàng, và ngẫu nhiên chế ra 50.000 chuỗi ký tự. Cái này bạn tự đoán ra lợi ích của nó rồi. Khỏi cần hỏi.

Các bài dạng vô bổ thế này chỉ giúp may ra chỉ là sự tò mò
 
bạn xem kỹ đi nha, -ptmNo1! là tôi cho vào công thức. Tham số 1 là gì, 2 là gì, 3 là gì đã định nghĩa
TB: đảo ngẫu nhiên nhưng theo "chuỗi" là gì? A1,A2 là chuỗi đó
Tôi xong rồi.
Lúc nãy em ko biết sử dụng công thức nên ra kết quả sai ạ
Em chạy lại thấy ra kết quả OK rùi ạ
Nhờ anh tích hợp dùm em các trường hợp 1,2,3 đó vào công thức nhìn cho gọn và đẹp hơn với ạ
Cảm ơn anh nhiều ạ !
 
Có hại thì có, như VetMini
Các bài dạng vô bổ thế này chỉ giúp may ra chỉ là sự tò mò
Tôi nghĩ khác.
- Một đề bài không nhất thiết phải có lợi cho xã hội, chỉ cần có lợi cho người dùng, 1 người cũng được.
- Dữ liệu ra đề có quyền là dữ dữ liệu giả lập, không hề giống với dữ liệu thật. Quan trọng là áp dữ liệu thật vào chạy được. Muốn vậy phải có kỹ năng tạo giả lập và kỹ năng giải thích yêu cầu dựa trên sự giả lập
- Tôi không tò mò. Mặc kệ dữ liệu là thật hay là giả lập, có hứng thì tôi làm, hết hứng thì ngưng

Lúc nãy em ko biết sử dụng công thức nên ra kết quả sai ạ
Em chạy lại thấy ra kết quả OK rùi ạ
Nhờ anh tích hợp dùm em các trường hợp 1,2,3 đó vào công thức nhìn cho gọn và đẹp hơn với ạ
Cảm ơn anh nhiều ạ !
Bạn xem kỹ hơn nữa đi. 1, 2, 3 đã đưa vào công thức
 
Tôi nghĩ khác.
- Một đề bài không nhất thiết phải có lợi cho xã hội, chỉ cần có lợi cho người dùng, 1 người cũng được.
- Dữ liệu ra đề có quyền là dữ dữ liệu giả lập, không hề giống với dữ liệu thật. Quan trọng là áp dữ liệu thật vào chạy được. Muốn vậy phải có kỹ năng tạo giả lập và kỹ năng giải thích yêu cầu dựa trên sự giả lập
- Tôi không tò mò. Mặc kệ dữ liệu là thật hay là giả lập, có hứng thì tôi làm, hết hứng thì ngưng


Bạn xem kỹ hơn nữa đi. 1, 2, 3 đã đưa vào công thức
Trong file "vdFinal-Ptm.xlsm" anh gởi, em xóa các các vị trí C1,D1,E1 công thức không chạy ra kết quả anh
Nhờ anh tích hợp dùm em các trường hợp 1,2,3 vào trong công thức luôn với ạ !
 
Bạn biết xài hàm Vlookup không?
B2=Vlookup(A2,X2:Z10,2,0)
Xóa A2 thì có ra kết quả không?
 
Bạn biết xài hàm Vlookup không?
B2=Vlookup(A2,X2:Z10,2,0)
Xóa A2 thì có ra kết quả không?
VD em xóa các trường hợp 1,2,3 ở các cell C1,C2,C3 thì công thức không chạy ạ
Nếu có thể anh có thể nhờ anh tích hợp các trường hợp đó vào công thức, hoặc mỗi trường hợp 1,2,3 là là 1 công thức
Cần trường hợp nào em chỉnh sữa trên công thức với ạ
 

File đính kèm

Có ai cứu tôi với! Tôi đi chết đây! Có hàm rồi mà không biết xài
 
Mình mường tượng rằng mục đích của chủ bài đăng này là tìm ra 1 thủ thuật để phá dữ liệu của người khác 1 cách tinh vi!

Còn nếu bao biện là để mã hóa dữ liệu thì quả là cao thủ vì đang xài khóa bất đối xứng chăng?
 
Mình mường tượng rằng mục đích của chủ bài đăng này là tìm ra 1 thủ thuật để phá dữ liệu của người khác 1 cách tinh vi!
Bác yên tâm, công thức còn không biết xài, tham số RepCase = 1, 2, 3 còn không biết đưa vào công thức
Còn nếu bao biện là để mã hóa dữ liệu thì quả là cao thủ vì đang xài khóa bất đối xứng chăng?
Mã hóa phải có giải mã, hàm random full cũng không phải không thể giải mã, nhưng tầm cỡ công thức không biết, VBA không biết thì .. bác cứ yên tâm :)
 
Mình mường tượng rằng mục đích của chủ bài đăng này là tìm ra 1 thủ thuật để phá dữ liệu của người khác 1 cách tinh vi!

Còn nếu bao biện là để mã hóa dữ liệu thì quả là cao thủ vì đang xài khóa bất đối xứng chăng?
Em muốn làm ngẫu nhiên cho dữ liệu cá nhân của em đẹp hơn anh ak, dữ liệu của em hơi cá nhân nên em không đưa cụ thể được, nên em mới mô tả đại khái vd ko theo 1 trật tự nào hết. Anh nhìn vào vd lại nghĩ xấu người khác vậy anh ? Với lại ai cũng có trách nhiệm với "tài sản dữ liệu" của mình cả anh ak, nếu em là "cao thủ" thì em đã không phải lên đây xin và hỏi chi tiết các dùng mấy công thức này ạ, còn nếu là "phá" thì em "delete vĩnh viễn" cho nhanh việc gì phải lên đây "suy nghĩ ý tưởng" rùi nhờ anh chị giúp đỡ cho lâu thế anh nhỉ ?
Sao anh toàn "nghi ngờ" suy nghĩ xấu vậy anh nhỉ ? sống đơn giản cho đời thanh thản anh nhé !

Bác yên tâm, công thức còn không biết xài, tham số RepCase = 1, 2, 3 còn không biết đưa vào công thức

Mã hóa phải có giải mã, hàm random full cũng không phải không thể giải mã, nhưng tầm cỡ công thức không biết, VBA không biết thì .. bác cứ yên tâm :)
Em cảm ơn anh ạ !
 
Mình mường tượng rằng mục đích của chủ bài đăng này là tìm ra 1 thủ thuật để phá dữ liệu của người khác 1 cách tinh vi!
Còn nếu bao biện là để mã hóa dữ liệu thì quả là cao thủ vì đang xài khóa bất đối xứng chăng?
Theo tôi thì đây chỉ là một hình thức bàn thai đề.
Và có vẻ như thớt hỏi giùm cho chủ đề chứ không phải ý của mình.
 
Mình mường tượng rằng mục đích của chủ bài đăng này là tìm ra 1 thủ thuật để phá dữ liệu của người khác 1 cách tinh vi!

Còn nếu bao biện là để mã hóa dữ liệu thì quả là cao thủ vì đang xài khóa bất đối xứng chăng?
Theo tôi thì đây chỉ là một hình thức bàn thai đề.
Và có vẻ như thớt hỏi giùm cho chủ đề chứ không phải ý của mình.

Đúng vậy, đôi khi ta giúp tưởng vô hại, nhưng lại hại cho chính xã hội và loanh quanh ta.
Đời chưa hẳn thiếu những người vô tâm
 
Tôi nghĩ lợi hay hại thì đã lỡ xong mất rồi, thực hư thì cũng chỉ là đoán.
Vậy ta không nên bàn không đúng chủ đề nữa. Tôi đóng topic này lại.
 
Status
Không mở trả lời sau này.

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

Back
Top Bottom