Nhờ các thầy giúp đỡ: tìm bộ 3 số có max nhỏ nhất (1 người xem)

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

nockout159

Thành viên mới
Tham gia
16/2/12
Bài viết
43
Được thích
0
Em chào các thầy ạ!
Em có 1 bài toán muốn nhờ các thầy giúp đỡ, nội dung như sau ạ

Trong file đính kèm:

- Cột A: 100 số được sắp xếp từ 00-99 ( em tô màu vàng )
- Vùng B1:CW100 là vùng biểu thị tần suất xuất hiện và ko xuất hiện của các số theo cột A, số 0 là ko xuất hiện, số 1 là xuất hiện. ( Ví dụ số 00 thì tần suất của 00 là hàng số 1 )

Yêu cầu:
- Tìm bộ 3 số sao cho tần suất xuất hiện chung của 3 số đấy là dầy nhất,( có thể hiểu là các số 1 gần sát nhau nhất )
( Ví dụ: Hàng tần suất chung của 3 số : 00, 01, 02 là hàng 104 )

Mong các thầy giúp đỡ ạ!
E xin cảm ơn !
 

File đính kèm

Lần chỉnh sửa cuối:
Em chào các thầy ạ!
Em có 1 bài toán muốn nhờ các thầy giúp đỡ, nội dung như sau ạ

Trong file đính kèm:

- Cột A: 100 số được sắp xếp từ 00-99 ( em tô màu vàng )
- Vùng B1:CW100 là vùng biểu thị tần suất xuất hiện và ko xuất hiện của các số theo cột A, số 0 là ko xuất hiện, số 1 là xuất hiện. ( Ví dụ số 00 thì tần suất của 00 là hàng số 1 )

Yêu cầu:
- Tìm bộ 3 số sao cho tần suất xuất hiện chung của 3 số đấy là dầy nhất,( có thể hiểu là các số 1 gần sát nhau nhất )
( Ví dụ: Hàng tần suất chung của 3 số : 00, 01, 02 là hàng 104 )

Có nghĩa là mỗi bộ 3 số tương ứng với một "hàng tần suất chung", và tìm hàng" có số số 1 lớn nhất?
Nếu là thế thì xem code ở phần tiếp theo. Nhưng nếu là thế thì khái niệm "max NHỎ NHẤT" trong tiêu đề phải hiểu như thế nào?
-----------------
Mới viết nháp - nghĩ tới đâu viết tới đó. Mới test ở mức xem có lỗi hay không.

[GPECODE=vb]
Sub test()
Dim Arr, i As Long, j As Long, k As Long, index As Long, max, curr, dong1 As Long, dong2 As Long, dong3 As Long
Arr = Range("B1:CW100").Value
For i = 1 To 100
For j = i + 1 To 100
For k = j + 1 To 100
curr = 0
For index = 1 To 100
If Arr(i, index) + Arr(j, index) + Arr(k, index) > 0 Then curr = curr + 1
Next index
If curr > max Then
max = curr
dong1 = i: dong2 = j: dong3 = k
End If
Next k
Next j
Next i

Range("A102").Value = "Ba so: " & (dong1 - 1) & ", " & (dong2 - 1) & ", " & (dong3 - 1)
For index = 1 To 100
If Arr(dong1, index) + Arr(dong2, index) + Arr(dong3, index) > 0 Then
Cells(103, index + 1).Value = 1
Else
Cells(103, index + 1).Value = 0
End If
Next index
End Sub
[/GPECODE]
 

File đính kèm

Cảm ơn thầy đã nghiên cứu giùm em ạ. Em có ý kiến thế này: hàng có số số 1 nhiều nhất chưa chắc đã là hàng có các số 1 gần sát nhau nhất. Theo như đề bài thì e muốn tìm hàng tần suất chung mà có khoảng cách lớn nhất giữa 2 số 1 liền kề nhau của hàng tần suất chung đấy là nhỏ nhất trong số tất cả các hàng tần suất chung. ( có tổng cộng tất cả : tổ hợp chập 3 của 100 hàng tần suất chung ).
Em làm thêm cái file đính kèm này thầy xem ạ : hàng 2 có nhiều số 1 hơn, nhưng xét khoảng cách lớn nhất giữa 2 số 1 liền kề nhau thì hàng 1 lại có khoảng cách nhỏ hơn

Thì tôi đoán mò thôi chứ bạn có phát biểu khái niệm "có thể hiểu là các số 1 gần sát nhau nhất" đâu?
Trước đó là "các số 1 gần sát nhau nhất" sau đó là "mà có khoảng cách lớn nhất giữa 2 số 1 liền kề nhau"
Thú thật là tôi chả hiểu gì cả.

Có phải là: mỗi bộ 3 số tương ứng với 1 hàng nào đó. Trong hàng đó sẽ có 2 số 1 liên tiếp cách nhau xa nhất - khoảng cách đó ta gọi là MAX. Trong tất cả các MAX tương ứng với tất cả các hàng hãy chỉ ra MAX nhỏ nhất, và tương ứng với nó là bộ 3 số nào?
 
Có phải là: mỗi bộ 3 số tương ứng với 1 hàng nào đó. Trong hàng đó sẽ có 2 số 1 liên tiếp cách nhau xa nhất - khoảng cách đó ta gọi là MAX. Trong tất cả các MAX tương ứng với tất cả các hàng hãy chỉ ra MAX nhỏ nhất, và tương ứng với nó là bộ 3 số nào?

Vì tôi muốn giúp bạn mà lại không hiểu rõ yêu cầu nên tôi đặt câu hỏi như trên.
Hoặc là bạn khẳng định cách hiểu của tôi như trong đoạn trích ở trên là đúng hoặc bạn mô tả lại thật kỹ.
Do bạn không trả lời câu hỏi trên nên tôi làm theo cách hiểu như thế. Không trúng thì thôi.
Bạn quá kiệm lời, mà tôi thì không thích chơi trò "thông tin nhỏ giọt - làm rồi sửa".
Bạn không nói là tìm tất cả các bộ 3 số hay chỉ tìm 1 bộ nên tôi chỉ tìm 1 bộ. Ví dụ không có hàng nào (lập từ bộ 3 số) ứng với max = 1 và có 2 hàng có max = 2 thì tôi cũng chỉ tìm 1 bộ mà thôi.
---------------
Nghĩ tới đâu làm tới đó, cũng chả nghiên cứu tối ưu. Bạn thay sub test ở tập tin tôi đính kèm ở bài #2 bằng sub test dưới đây. Hi vọng kết quả đúng.

[GPECODE=vb]
Sub test()
Dim Arr, i As Long, j As Long, k As Long, index As Long, max As Long, curr_max_123 As Long, max_123 As Long
Dim start As Long, dong1 As Long, dong2 As Long, dong3 As Long, t As Double
Arr = Range("B1:CW100").Value

max = 100
For i = 1 To 100
For j = i + 1 To 100
For k = j + 1 To 100
max_123 = 0
' tim so 1 dau tien trong hang
For start = 1 To 100
' gap so 1 dau tien trong hang hien hanh, ra khoi vong lap
If Arr(i, start) + Arr(j, start) + Arr(k, start) > 0 Then Exit For
Next start
' tim cac so 1 tiep theo
For index = start + 1 To 100
' gap so 1 tiep theo (so 1 thu hai trong cap 2 so 1 lien tiep) trong hang hien hanh
If Arr(i, index) + Arr(j, index) + Arr(k, index) > 0 Then
' khoang cach giua 2 so 1 lien tiep hien hanh
curr_max_123 = index - start - 1
' neu khoang cach giua 2 so 1 lien tiep hien hanh lon hon gia tri duoc luu thi cap nhat gia tri duoc luu
If curr_max_123 > max_123 Then max_123 = curr_max_123
' cap nhat chi so cua so 1 dau tien trong cap 2 so 1 lien tiep
start = index
End If
Next index
' neu max ung voi hang hien hanh nho hon gia tri duoc luu thi cap nhat va ghi nho bo 3 so
If max_123 < max Then
max = max_123
dong1 = i: dong2 = j: dong3 = k
End If
Next k
Next j
Next i

Range("A102").Value = "Ba so: " & (dong1 - 1) & ", " & (dong2 - 1) & ", " & (dong3 - 1)
For index = 1 To 100
If Arr(dong1, index) + Arr(dong2, index) + Arr(dong3, index) > 0 Then
Cells(103, index + 1).Value = 1
Else
Cells(103, index + 1).Value = 0
End If
Next index
End Sub
[/GPECODE]
 
Yêu cầu:
- Tìm bộ 3 số sao cho tần suất xuất hiện chung của 3 số đấy là dầy nhất,( có thể hiểu là các số 1 gần sát nhau nhất )
( Ví dụ: Hàng tần suất chung của 3 số : 00, 01, 02 là hàng 104 )

!

thực ra thì mình ko hiểu được hết bài của bạn, nhưng bài của bạn làm mình liên tưởng đến biểu đồ control chart(một dạng biểu đồ kiểm soát thường dùng trong quản lý sản xuất)
đối với biểu đồ này thì càng ổn định càng tốt, và nó được tính dựa vào độ lệch chuẩn (standard deviation) càng nhỏ càng tốt.
đối với bài của bạn thì bạn đi tìm dòng nào ko ổn định , có nghĩa là số 0,1 càng xem kẻ nhau càng nhiều thì càng tốt. như vậy thì độ lệch chuẩn càng lớn thì càng tốt.
mình thử dùng công thức tính độ lệch chuẩn
=STDEV.S(B1:CW1)
fill xuống rồi sort tìm giá trị lớn nhất
kết quả dòng số 104 (ko tính dòng 102 nha) có kết quả lớn nhất
tương tự như vậy,áp dụng cho file ở bài#3 thì dòng số một cũng cho kết quả lớn hơn.
mình ko chắc lắm, chỉ là chia sẻ suy nghỉ của mình, bạn thử kiểm tra số liệu thực tế của bạn xem sao?
 
thực ra thì mình ko hiểu được hết bài của bạn, nhưng bài của bạn làm mình liên tưởng đến biểu đồ control chart(một dạng biểu đồ kiểm soát thường dùng trong quản lý sản xuất)
đối với biểu đồ này thì càng ổn định càng tốt, và nó được tính dựa vào độ lệch chuẩn (standard deviation) càng nhỏ càng tốt.
đối với bài của bạn thì bạn đi tìm dòng nào ko ổn định , có nghĩa là số 0,1 càng xem kẻ nhau càng nhiều thì càng tốt. như vậy thì độ lệch chuẩn càng lớn thì càng tốt.
mình thử dùng công thức tính độ lệch chuẩn
=STDEV.S(B1:CW1)
fill xuống rồi sort tìm giá trị lớn nhất
kết quả dòng số 104 (ko tính dòng 102 nha) có kết quả lớn nhất
tương tự như vậy,áp dụng cho file ở bài#3 thì dòng số một cũng cho kết quả lớn hơn.
mình ko chắc lắm, chỉ là chia sẻ suy nghỉ của mình, bạn thử kiểm tra số liệu thực tế của bạn xem sao?
Dòng 104 là dòng kết quả, e lấy ví dụ ra như vậy thôi ạ
 
Lần chỉnh sửa cuối:
Vâng ạ, tại em ko biết diễn tả thế nào cho dễ hiểu, mong thầy bỏ quá cho ạ. Theo ý của thầy: "mỗi bộ 3 số tương ứng với 1 hàng nào đó. Trong hàng đó sẽ có 2 số 1 liên tiếp cách nhau xa nhất - khoảng cách đó ta gọi là MAX. Trong tất cả các MAX tương ứng với tất cả các hàng hãy chỉ ra MAX nhỏ nhất, và tương ứng với nó là bộ 3 số nào" e thấy đúng ý rồi ạ. Mới đầu e chỉ có ý tìm ra 1 bộ, nhưng thấy thầy gợi ý tìm ra được nhiều bộ nên cũng muốn học hỏi ạ !. E cảm ơn thầy!

Trời ạ, bạn rút kinh nghiệm lần sau nhé. Hãy miêu tả thật kỹ.
Thôi được, tôi làm cho nhiều kết quả. Nhưng ta hãy thống nhất về một điểm nữa:

Trong bài #3 bạn cho ví dụ về 2 hàng:
hàng 1: 01101010010101 --> max = 2 (2 số 0 giữa số 1 thứ 4 và số 1 thứ 5)
hàng 2: 11111100001111 --> max = 4 (4 số 0 giữa số 1 thứ 6 và số 1 thứ 7)

Với kiểu xét như trên thì với:

hàng 3: 00001010010000

tôi sẽ cho là max = 2 (2 số 0 giữa số 1 thứ 2 và số 1 thứ 3)

Tại sao tôi lại cho là thế khi ở đầu và cuối đều có 4 chữ số 0? Tại sao không phải là max = 4?
Bởi tôi dựa trên 3 câu - 2 câu của bạn và 1 câu của tôi nhưng được bạn "gật đầu"

các số 1 gần sát nhau nhất (bài #1)
khoảng cách lớn nhất giữa 2 số 1 liền kề nhau (bài #3)
...
Trong hàng đó sẽ có 2 số 1 liên tiếp cách nhau xa nhất - khoảng cách đó ta gọi là MAX (bài #5)

Từ các đoạn trích thì thấy khi xác định max cho mỗi hàng thì ta chỉ xét các số 0 nằm giữa 2 số 1 liên tiếp.

Trong code dưới đây tôi làm với giả thiết max được xác định như cách hiểu ở trên.

[GPECODE=vb]
Sub test()
Dim Arr, i As Long, j As Long, k As Long, index As Long, max As Long, curr_max_123 As Long, max_123 As Long
Dim start As Long, dong1 As Long, dong2 As Long, dong3 As Long, Arr123(), count As Long, Arr_0_1(), r As Long
Arr = Range("B1:CW100").Value

max = 100
For i = 1 To 100
For j = i + 1 To 100
For k = j + 1 To 100
max_123 = 0
' tim so 1 dau tien trong hang
For start = 1 To 100
' gap so 1 dau tien trong hang hien hanh, ra khoi vong lap
If Arr(i, start) + Arr(j, start) + Arr(k, start) > 0 Then Exit For
Next start
' tim cac so 1 tiep theo
For index = start + 1 To 100
' gap so 1 tiep theo (so 1 thu hai trong cap 2 so 1 lien tiep) trong hang hien hanh
If Arr(i, index) + Arr(j, index) + Arr(k, index) > 0 Then
' khoang cach giua 2 so 1 lien tiep hien hanh
curr_max_123 = index - start - 1
' neu khoang cach giua 2 so 1 lien tiep hien hanh lon hon gia tri duoc luu thi cap nhat gia tri duoc luu
If curr_max_123 > max_123 Then max_123 = curr_max_123
' cap nhat chi so cua so 1 dau tien trong cap 2 so 1 lien tiep
start = index
End If
Next index
' neu max ung voi hang hien hanh nho hon gia tri duoc luu thi cap nhat va ghi nho bo 3 so
If max_123 < max Then
count = 1
ReDim Arr123(1 To 3, 1 To count)
' ghi bo 3 so
Arr123(1, count) = i - 1: Arr123(2, count) = j - 1: Arr123(3, count) = k - 1
max = max_123
ElseIf max_123 = max Then
count = count + 1
ReDim Preserve Arr123(1 To 3, 1 To count)
' ghi bo 3 so tiep theo
Arr123(1, count) = i - 1: Arr123(2, count) = j - 1: Arr123(3, count) = k - 1
End If
Next k
Next j
Next i

' ghi tieu de
Range("B102").Value = "M" & ChrW(7895) & "i b" & ChrW(7897) & " ba s" & ChrW(7889) & " n" & ChrW(7857) & "m trong m" & ChrW(7897) & "t c" & ChrW(7897) & "t:"
Range("B103").Resize(3, count).Value = Arr123

Range("B106").Value = "C" & ChrW(225) & "c h" & ChrW(224) & "ng t" & ChrW(432) & ChrW(417) & "ng " & ChrW(7913) & "ng"

' tao mang cac hang ung voi moi bo 3 so
ReDim Arr_0_1(1 To count, 1 To 100)
' di theo tung cot cua Arr123 de xet tung bo 3 so
For r = 1 To count
' bo 3 dong i, j, k
i = Arr123(1, r) + 1: j = Arr123(2, r) + 1: k = Arr123(3, r) + 1
For index = 1 To 100
If Arr(i, index) + Arr(j, index) + Arr(k, index) > 0 Then
Arr_0_1(r, index) = 1
Else
Arr_0_1(r, index) = 0
End If
Next index
Next r
' ghi cac hang
Range("B107").Resize(count, 100).Value = Arr_0_1
End Sub
[/GPECODE]
 

File đính kèm

Trời ạ, bạn rút kinh nghiệm lần sau nhé. Hãy miêu tả thật kỹ.
Thôi được, tôi làm cho nhiều kết quả. Nhưng ta hãy thống nhất về một điểm nữa:
Cám ơn thầy nhiều nhiều ạ ! E thử làm xem sao ạ
 
Lần chỉnh sửa cuối:
Trời ạ, bạn rút kinh nghiệm lần sau nhé. Hãy miêu tả thật kỹ.
Thầy ơi, thầy có thể hướng dẫn cho e cách làm sub test, viết chương trình như ở bài này được ko ạ. E chưa viết chương trình ở trong excel bao giờ ạ. Thầy hướng dẫn đoạn code mà em chưa biết chèn vào đâu , chạy chương trình thế nào? E cám ơn thầy trước ạ !
 
Lần chỉnh sửa cuối:
Thầy ơi, thầy có thể hướng dẫn cho e cách làm sub test, viết chương trình như ở bài này được ko ạ. E chưa viết chương trình ở trong excel bao giờ ạ. Thầy hướng dẫn đoạn code mà em chưa biết chèn vào đâu , chạy chương trình thế nào? E cám ơn thầy trước ạ !

Tôi đã trả lời tin nhắn của bạn.
Nếu bạn không nhận được thì báo lại ở đây để tôi biết.
 
Tôi đã trả lời tin nhắn của bạn.
Nếu bạn không nhận được thì báo lại ở đây để tôi biết.
e đã nhận và làm được theo hướng dẫn của thầy. Nhưng có điều sao ra nhiều bộ số vậy thầy nhỉ, chỉ cần in ra các bộ 3 số có max nhỏ nhất thôi mà ( Max giống theo ý của thầy đây ạ: mỗi bộ 3 số tương ứng với 1 hàng nào đó. Trong hàng đó sẽ có 2 số 1 liên tiếp cách nhau xa nhất - khoảng cách đó ta gọi là MAX. Trong tất cả các MAX tương ứng với tất cả các hàng hãy chỉ ra MAX nhỏ nhất, và tương ứng với nó là bộ 3 số nào )
 
Lần chỉnh sửa cuối:
e đã nhận và làm được theo hướng dẫn của thầy. Nhưng có điều sao ra nhiều bộ số vậy thầy nhỉ, chỉ cần in ra các bộ 3 số có max nhỏ nhất thôi mà ( Max giống theo ý của thầy đây ạ: mỗi bộ 3 số tương ứng với 1 hàng nào đó. Trong hàng đó sẽ có 2 số 1 liên tiếp cách nhau xa nhất - khoảng cách đó ta gọi là MAX. Trong tất cả các MAX tương ứng với tất cả các hàng hãy chỉ ra MAX nhỏ nhất, và tương ứng với nó là bộ 3 số nào )

Thì bạn muốn tìm tất cả các kết quả thì phải chấp nhận thôi.
Với dữ liệu vào như thế thì ...

1. Không có hàng nào có max = 1
2. Tất cả các hàng kết quả (và ở trên chúng là bảng các bộ 3 số tương ứng) được liệt kê đều có max = 2. Bạn có thể tự kiểm tra "bằng tay" cho từng bộ 3 số được liệt kê ở trên thì sẽ thấy các hàng được liệt kê ở phía dưới là tương ứng. Và thấy là chúng có max = 2. Nếu bạn lười thì bạn thử kiểm tra cho 10 hoặc 20 hàng thôi.

Vậy thì phải lấy tất cả các hàng thôi.
 
Thì bạn muốn tìm tất cả các kết quả thì phải chấp nhận thôi.
Với dữ liệu vào như thế thì ...

1. Không có hàng nào có max = 1
2. Tất cả các hàng kết quả (và ở trên chúng là bảng các bộ 3 số tương ứng) được liệt kê đều có max = 2. Bạn có thể tự kiểm tra
 
Lần chỉnh sửa cuối:
Vâng, giờ ví dụ em muốn áp dụng cho 1 mảng khác nhiều cột hơn, cụ thể là mảng "B1:QF100" thì chỉ việc thay vào đoạn này đúng ko hay phải thay ở những chỗ khác nữa ạ :
Dim Arr, i As Long, j As Long, k As Long, index As Long, max As Long, curr_max_123 As Long, max_123 As Long
Dim start As Long, dong1 As Long, dong2 As Long, dong3 As Long, Arr123(), count As Long, Arr_0_1(), r As Long
Arr = Range("B1:CW100").Value

Thay vào thành :
Arr = range("B1:QF100")



Không chỉ mỗi chỗ đó đâu.
Tôi đã sửa lại code để bạn chủ động hơn về số cột và cả số dòng.

1. Khi bạn thay đổi vùng hiện thời B1:CW100 bằng một vùng khác thì bạn chỉ thay chỗ đỏ đỏ bằng vùng mới
Mã:
Arr = Range("[B][COLOR=#ff0000]B1:CW100[/COLOR][/B]").Value

2. Bạn có thể thay đổi số dòng vd. thay bằng vùng B1: CW150. Nhưng bạn phải biết là số dòng càng lớn thì code chạy càng lâu.

3. Bạn có thể chọn vùng không nhất thiết bắt đầu từ dòng 1 của bảng tính, ví dụ chọn vùng B10:CW109. Nhưng bạn vẫn phải nhớ "qui tắc" là dòng đầu tiên của dữ liệu (dòng B10:CW10) tương ứng với số 00, dòng B11:CW11 tương ứng với số 01, ...

[GPECODE=vb]
Sub test()
Dim Arr, i As Long, j As Long, k As Long, index As Long, max As Long, curr_max_123 As Long, max_123 As Long
Dim start As Long, sodong As Long, socot As Long, Arr123(), count As Long, Arr_0_1(), r As Long
Arr = Range("B1:CW100").Value

sodong = UBound(Arr)
socot = UBound(Arr, 2)

max = socot
For i = 1 To sodong
For j = i + 1 To sodong
For k = j + 1 To sodong
max_123 = 0
' tim so 1 dau tien trong hang
For start = 1 To socot
' gap so 1 dau tien trong hang hien hanh, ra khoi vong lap
If Arr(i, start) + Arr(j, start) + Arr(k, start) > 0 Then Exit For
Next start
' tim cac so 1 tiep theo
For index = start + 1 To socot
' gap so 1 tiep theo (so 1 thu hai trong cap 2 so 1 lien tiep) trong hang hien hanh
If Arr(i, index) + Arr(j, index) + Arr(k, index) > 0 Then
' khoang cach giua 2 so 1 lien tiep hien hanh
curr_max_123 = index - start - 1
' neu khoang cach giua 2 so 1 lien tiep hien hanh lon hon gia tri duoc luu thi cap nhat gia tri duoc luu
If curr_max_123 > max_123 Then max_123 = curr_max_123
' cap nhat chi so cua so 1 dau tien trong cap 2 so 1 lien tiep
start = index
End If
Next index
' neu max ung voi hang hien hanh nho hon gia tri duoc luu thi cap nhat va ghi nho bo 3 so
If max_123 < max Then
count = 1
ReDim Arr123(1 To 3, 1 To count)
' ghi bo 3 so
Arr123(1, count) = i - 1: Arr123(2, count) = j - 1: Arr123(3, count) = k - 1
max = max_123
ElseIf max_123 = max Then
count = count + 1
ReDim Preserve Arr123(1 To 3, 1 To count)
' ghi bo 3 so tiep theo
Arr123(1, count) = i - 1: Arr123(2, count) = j - 1: Arr123(3, count) = k - 1
End If
Next k
Next j
Next i

' ghi tieu de
Cells(sodong + 2, 2).Value = "M" & ChrW(7895) & "i b" & ChrW(7897) & " ba s" & ChrW(7889) & " n" & ChrW(7857) & "m trong m" & ChrW(7897) & "t c" & ChrW(7897) & "t:"
Cells(sodong + 3, 2).Resize(3, count).Value = Arr123

Cells(sodong + 6, 2).Value = "C" & ChrW(225) & "c h" & ChrW(224) & "ng t" & ChrW(432) & ChrW(417) & "ng " & ChrW(7913) & "ng"

' tao mang cac hang ung voi moi bo 3 so
ReDim Arr_0_1(1 To count, 1 To socot)
' di theo tung cot cua Arr123 de xet tung bo 3 so
For r = 1 To count
' bo 3 dong i, j, k
i = Arr123(1, r) + 1: j = Arr123(2, r) + 1: k = Arr123(3, r) + 1
For index = 1 To socot
If Arr(i, index) + Arr(j, index) + Arr(k, index) > 0 Then
Arr_0_1(r, index) = 1
Else
Arr_0_1(r, index) = 0
End If
Next index
Next r
' ghi cac hang
Cells(sodong + 7, 2).Resize(count, socot).Value = Arr_0_1
End Sub
[/GPECODE]
 

File đính kèm

Không chỉ mỗi chỗ đó đâu.
Tôi đã sửa lại code để bạn chủ động hơn về số cột và cả số dòng.

1. Khi bạn thay đổi vùng hiện thời B1:CW100 bằng một vùng khác thì bạn chỉ thay chỗ đỏ đỏ bằng vùng mới
Mã:
Arr = Range(
 
Lần chỉnh sửa cuối:
Nhờ thầy giúp đỡ em thêm phần code của bài này với ạ:
Vẫn là cách tìm bộ số có max nhỏ nhất nhưng thay vì bộ 3 số có max nhỏ nhất, nhờ thầy viết giúp em đoạn code tìm bộ 4 số có max nhỏ nhất ạ
Em cảm ơn thầy nhiều ạ!
Không chỉ mỗi chỗ đó đâu.
Tôi đã sửa lại code để bạn chủ động hơn về số cột và cả số dòng.

1. Khi bạn thay đổi vùng hiện thời B1:CW100 bằng một vùng khác thì bạn chỉ thay chỗ đỏ đỏ bằng vùng mới
Mã:
Arr = Range(
 
Lần chỉnh sửa cuối:
Không chỉ mỗi chỗ đó đâu.
Tôi đã sửa lại code để bạn chủ động hơn về số cột và cả số dòng.

1. Khi bạn thay đổi vùng hiện thời B1:CW100 bằng một vùng khác thì bạn chỉ thay chỗ đỏ đỏ bằng vùng mới
Mã:
Arr = Range(
 
Lần chỉnh sửa cuối:

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

Back
Top Bottom