Xin hàm liệt kê tất cả số tổ hợp chuỗi 10 ký tự tạo nên từ hai ký tự A và B

Liên hệ QC

Hugo Nguyen

Thành viên mới
Tham gia
15/8/20
Bài viết
38
Được thích
4
Chào mọi người!
Mình có một bài toán như tiêu đề, nhờ mọi người giúp đỡ ạ.
Xin cảm ơn mọi người!
 

File đính kèm

  • TÌM SỐ TỔ HỢP CỦA A VÀ B.xlsx
    14.5 KB · Đọc: 21
Toán đại số nhị phân: A là 0, B là 1 thì 10 chữ số tức là 1024 số.
Theo lẽ thì hàm DEC2có thể làm ngon lành. Nhưng rất tiếc hàm này chỉ làm việc với số 0-511 (512 số đầu). Vì vậy phải cần thêm thủ thuật cho 512-1024

=IF(ROW()<=512, "A", "B") & SUBSTITUTE(SUBSTITUTE(DEC2BIN(MOD(ROW()-1,512),9), "0", "A"), "1", "B")
Kéo từ dòng 1 đến 1024
 
Toán đại số nhị phân: A là 0, B là 1 thì 10 chữ số tức là 1024 số.
Theo lẽ thì hàm DEC2có thể làm ngon lành. Nhưng rất tiếc hàm này chỉ làm việc với số 0-511 (512 số đầu). Vì vậy phải cần thêm thủ thuật cho 512-1024

=IF(ROW()<=512, "A", "B") & SUBSTITUTE(SUBSTITUTE(DEC2BIN(MOD(ROW()-1,512),9), "0", "A"), "1", "B")
Kéo từ dòng 1 đến 1024

Xin cảm ơn công thức của bác, nhưng nếu trường hợp cần tạo thành dãy nhiều ký tự hơn, tầm trên 20 ký tự thì có cách gì không bác?
 
Xin cảm ơn công thức của bác, nhưng nếu trường hợp cần tạo thành dãy nhiều ký tự hơn, tầm trên 20 ký tự thì có cách gì không bác?
Viết hàm tự tạo Dec2Bin, ví dụ:
Mã:
Function D2B(ByVal Num As Long, Optional ByVal Places As Long = 1) As String
  Dim qt As Long, rd As Long, Tmp As String
  qt = Num
  Do
    rd = qt Mod 2
    qt = Int(qt / 2)
    Tmp = rd & Tmp
  Loop Until qt = 0
  D2B = Format(Val(Tmp), String(Places, "0"))
End Function
Rồi cứ thế mà kéo fill trên bảng tính theo công thức sau:
Mã:
=SUBSTITUTE(SUBSTITUTE(d2b(ROW(A1),10),0,"A"),1,"B")
------------------------------------------------------------------------
Cái này sao thấy giống giống dò tìm password protect sheet quá ta?
 
Xin cảm ơn công thức của bác, nhưng nếu trường hợp cần tạo thành dãy nhiều ký tự hơn, tầm trên 20 ký tự thì có cách gì không bác?
20 ký tự
Mã:
=SUBSTITUTE(SUBSTITUTE(DEC2BIN(INT((ROW()-1)/262144),2)&DEC2BIN(MOD(INT((ROW()-1)/512),512),9)&DEC2BIN(MOD(ROW()-1,512),9),0,"A"),1,"B")
23 ký tự
Mã:
=SUBSTITUTE(SUBSTITUTE(DEC2BIN(INT((ROW()-1)/262144),5)&DEC2BIN(MOD(INT((ROW()-1)/512),512),9)&DEC2BIN(MOD(ROW()-1,512),9),0,"A"),1,"B")
 
Chắc người hỏi, chỉ hỏi cho vui: không hiểu cái này ứng dụng vào đâu? mà phải liệt kê ra hết cỡ ngần đó số.
Xem bài #8.
Cái vụ AB này người ta dùng để phá password của Excel. Nhưng tôi nhớ thì hình như chỉ cần tới 8 ký tự, Excel cắt bỏ phần còn lại.
 
Viết hàm tự tạo Dec2Bin, ví dụ:
Mã:
Function D2B(ByVal Num As Long, Optional ByVal Places As Long = 1) As String
  Dim qt As Long, rd As Long, Tmp As String
  qt = Num
  Do
    rd = qt Mod 2
    qt = Int(qt / 2)
    Tmp = rd & Tmp
  Loop Until qt = 0
  D2B = Format(Val(Tmp), String(Places, "0"))
End Function
Rồi cứ thế mà kéo fill trên bảng tính theo công thức sau:
Mã:
=SUBSTITUTE(SUBSTITUTE(d2b(ROW(A1),10),0,"A"),1,"B")
------------------------------------------------------------------------
Cái này sao thấy giống giống dò tìm password protect sheet quá ta?
Xin cảm ơn code của bác ndu96081631 nhiều ạ!
Bài đã được tự động gộp:

Trước khi hỏi thì bạn có đoán thử 20 ký tự sẽ cho ra bao nhiêu kết quả chưa?

Mình biết số tổ hợp sẽ là 2^(số ký tự mỗi số), nên mới hỏi ví dụ trên 20 ký tự nó vượt qua giới hạn số dòng của excel thì có cách gì xử lý không ý mà.
Bài đã được tự động gộp:

Chắc người hỏi, chỉ hỏi cho vui: không hiểu cái này ứng dụng vào đâu? mà phải liệt kê ra hết cỡ ngần đó số.

Mình đang có bài toán: cho một dãy số và 1 tổng là tổng của một vài số trong dãy số đó, cần tìm các số tạo nên tổng đó bạn à.
 
Bao nhiêu ký tự cũng được. Muốn bao nhiêu ký tự thì nhập vào A1 bấy nhiêu chữ A. Công thức sau áp dụng cho chuỗi từ 100 ký tự trở xuống.
Mã:
A2=LEFT(REPLACE(A1,MATCH(2,1/(MID(A1,ROW($1:$100),1)="A")),100,"B"&REPT("A",100)),LEN(A1))
 
Ở đây có tiết mục treo củ cải đầu cái sào rồi.


1606190509052.png

----
@Thớt:
Từ khóa: Solver.
 
Bao nhiêu ký tự cũng được. Muốn bao nhiêu ký tự thì nhập vào A1 bấy nhiêu chữ A. Công thức sau áp dụng cho chuỗi từ 100 ký tự trở xuống.
Mã:
A2=LEFT(REPLACE(A1,MATCH(2,1/(MID(A1,ROW($1:$100),1)="A")),100,"B"&REPT("A",100)),LEN(A1))
Xin cảm ơn công thức của bác rất nhiều ạ!
Bài đã được tự động gộp:

Ủa, sao mình không đi thẳng vào vấn đề ngay từ đầu luôn?
Mình đang làm bị vướng ở phần này nên hỏi phần này, phần này mình hỏi được rồi mình nghĩ phần sau có thể tự làm bạn ạ, cảm ơn bạn :)
 
Web KT
Back
Top Bottom