hiénlinh197
Thành viên tiêu biểu

- Tham gia
- 26/5/09
- Bài viết
- 491
- Được thích
- 113
Thử codeNhờ các bạn sửa giúp code theo file đính kèm,
Cảm ơn các bạn!
Sub Rectangle1_Click()
Dim Arr(), kq(), i As Long, j As Long, k As Long, jMax As Long
Arr = Sheet1.Range("l3:z22").Value
ReDim kq(1 To UBound(Arr, 1), 1 To UBound(Arr, 2))
For i = 1 To UBound(Arr, 1)
k = 0
For j = 1 To UBound(Arr, 2)
If Arr(i, j) <> "" Then
k = k + 1
kq(i, k) = Arr(i, j)
End If
Next j
If jMax < k Then jMax = k 'Tính só cot ket qua
Next i
Sheet1.Range("A3").Resize(UBound(kq, 1), jMax).Value = kq
End Sub
Cảm ơn anhThử codeNếu không đúng ý thì nhập kết quả và gởi lênMã:Sub Rectangle1_Click() Dim Arr(), kq(), i As Long, j As Long, k As Long, jMax As Long Arr = Sheet1.Range("l3:z22").Value ReDim kq(1 To UBound(Arr, 1), 1 To UBound(Arr, 2)) For i = 1 To UBound(Arr, 1) k = 0 For j = 1 To UBound(Arr, 2) If Arr(i, j) <> "" Then k = k + 1 kq(i, k) = Arr(i, j) End If Next j If jMax < k Then jMax = k 'Tính só cot ket qua Next i Sheet1.Range("A3").Resize(UBound(kq, 1), jMax).Value = kq End Sub
Cảm ơn anh
HieuCD
. Anh ơi nhưng em muốn là các số trùng nhau thì chỉ lấy 1 số . anh sửa giúp em với nhé!
Sub Rectangle1_Click()
Dim Arr(), kq(), i As Long, j As Long, k As Long, jMax As Long, key As String
Arr = Sheet1.Range("l3:z22").Value
ReDim kq(1 To UBound(Arr, 1), 1 To UBound(Arr, 2))
With CreateObject("Scripting.dictionary")
For i = 1 To UBound(Arr, 1)
k = 0
For j = 1 To UBound(Arr, 2)
key = CStr(Arr(i, j))
If key <> "" Then
If Not .exists(key) Then
.Add key, ""
k = k + 1
kq(i, k) = key
End If
End If
Next j
.RemoveAll 'Neu loai trung tat ca dòng thì bo lenh nay
If jMax < k Then jMax = k 'Tính só cot ket qua
Next i
End With
Sheet1.Range("A3").Resize(UBound(kq, 1), jMax).Value = kq
End Sub
Cảm ơn anh rất nhiều, code chạy rất chuẩn anh à, Nhưng bây giờ anh giúp em chút síu nữa là khi muốn dồn 2 hoặc nhiều mảng không liền kề nhau thì làm như nào?Mã:Sub Rectangle1_Click() Dim Arr(), kq(), i As Long, j As Long, k As Long, jMax As Long, key As String Arr = Sheet1.Range("l3:z22").Value ReDim kq(1 To UBound(Arr, 1), 1 To UBound(Arr, 2)) With CreateObject("Scripting.dictionary") For i = 1 To UBound(Arr, 1) k = 0 For j = 1 To UBound(Arr, 2) key = CStr(Arr(i, j)) If key <> "" Then If Not .exists(key) Then .Add key, "" k = k + 1 kq(i, k) = key End If End If Next j .RemoveAll 'Neu loai trung tat ca dòng thì bo lenh nay If jMax < k Then jMax = k 'Tính só cot ket qua Next i End With Sheet1.Range("A3").Resize(UBound(kq, 1), jMax).Value = kq End Sub
Thêm vòng lập tính dòng cuối mảng dữ liệu, bạn có thể nhìn bảng và nhập trực tiếp vào lệnh tạo mảng ArrCảm ơn anh rất nhiều, code chạy rất chuẩn anh à, Nhưng bây giờ anh giúp em chút síu nữa là khi muốn dồn 2 hoặc nhiều mảng không liền kề nhau thì làm như nào?
Sub donso() 'Hieucd b2
Dim Arr(), kq(), i As Long, j As Long, k As Long, jMax As Long, key As String
For j = 12 To 26 'Cot L toi cot Z
i = Cells(65500, j).End(xlUp).Row 'dòng cuoi cot j
If i > k Then k = i 'dòng cuoi cua mang du lieu
Next j
Arr = Sheet1.Range("L3:Z" & k).Value
ReDim kq(1 To UBound(Arr, 1), 1 To UBound(Arr, 2))
With CreateObject("Scripting.dictionary")
For i = 1 To UBound(Arr, 1)
k = 0
For j = 1 To UBound(Arr, 2)
key = CStr(Arr(i, j))
If key <> "" Then
If Not .exists(key) Then
.Add key, ""
k = k + 1
kq(i, k) = key
End If
End If
Next j
.RemoveAll 'Neu loai trung tat ca dòng thì bo lenh nay
If jMax < k Then jMax = k 'Tính só cot ket qua
Next i
End With
Sheet1.Range("A3").Resize(UBound(kq, 1), jMax).Value = kq
End Sub
Thêm vòng lập tính dòng cuối mảng dữ liệu, bạn có thể nhìn bảng và nhập trực tiếp vào lệnh tạo mảng Arr
Mã:Sub donso() 'Hieucd b2 Dim Arr(), kq(), i As Long, j As Long, k As Long, jMax As Long, key As String For j = 12 To 26 'Cot L toi cot Z i = Cells(65500, j).End(xlUp).Row 'dòng cuoi cot j If i > k Then k = i 'dòng cuoi cua mang du lieu Next j Arr = Sheet1.Range("L3:Z" & k).Value ReDim kq(1 To UBound(Arr, 1), 1 To UBound(Arr, 2)) With CreateObject("Scripting.dictionary") For i = 1 To UBound(Arr, 1) k = 0 For j = 1 To UBound(Arr, 2) key = CStr(Arr(i, j)) If key <> "" Then If Not .exists(key) Then .Add key, "" k = k + 1 kq(i, k) = key End If End If Next j .RemoveAll 'Neu loai trung tat ca dòng thì bo lenh nay If jMax < k Then jMax = k 'Tính só cot ket qua Next i End With Sheet1.Range("A3").Resize(UBound(kq, 1), jMax).Value = kq End Sub
Em cảm ơn anhThêm vòng lập tính dòng cuối mảng dữ liệu, bạn có thể nhìn bảng và nhập trực tiếp vào lệnh tạo mảng Arr
Mã:Sub donso() 'Hieucd b2 Dim Arr(), kq(), i As Long, j As Long, k As Long, jMax As Long, key As String For j = 12 To 26 'Cot L toi cot Z i = Cells(65500, j).End(xlUp).Row 'dòng cuoi cot j If i > k Then k = i 'dòng cuoi cua mang du lieu Next j Arr = Sheet1.Range("L3:Z" & k).Value ReDim kq(1 To UBound(Arr, 1), 1 To UBound(Arr, 2)) With CreateObject("Scripting.dictionary") For i = 1 To UBound(Arr, 1) k = 0 For j = 1 To UBound(Arr, 2) key = CStr(Arr(i, j)) If key <> "" Then If Not .exists(key) Then .Add key, "" k = k + 1 kq(i, k) = key End If End If Next j .RemoveAll 'Neu loai trung tat ca dòng thì bo lenh nay If jMax < k Then jMax = k 'Tính só cot ket qua Next i End With Sheet1.Range("A3").Resize(UBound(kq, 1), jMax).Value = kq End Sub
Dạ cảm ơn anh!Nhập tay kết quả gởi lên
Dạ cảm ơn anh!
Sub donso() 'Hieucd b3 (Láy nhieu mang)
Dim Arr(), kq(), i As Long, j As Long, k As Long, jMax As Long, key
For j = 12 To 26 'Cot L toi cot Z
i = Cells(65500, j).End(xlUp).Row 'dòng cuoi cot j
If i > k Then k = i 'dòng cuoi cua mang du lieu
Next j
Arr = Sheet1.Range("L4:Z" & k).Value
k = 0
With CreateObject("Scripting.dictionary")
For i = 1 To UBound(Arr, 1)
For j = 1 To UBound(Arr, 2)
key = Arr(i, j)
If TypeName(key) = "Double" Then
If Not .exists(key) Then
.Add key, ""
k = k + 1
ReDim Preserve kq(1 To k)
kq(k) = key
End If
End If
Next j
Next i
End With
Sheet1.Range("B2").Resize(, k).Value = kq
End Sub
Sub donso() 'Hieucd b3 (Láy nhieu mang)
Dim Arr(), i As Long, j As Long, k As Long, key
For j = 12 To 26 'Cot L toi cot Z
i = Sheet1.Cells(Rows.Count, j).End(xlUp).Row 'dong cuoi cot j
If i > k Then k = i 'dong cuoi cua mang du lieu
Next j
Arr = Sheet1.Range("L4:Z" & k).Value
With CreateObject("Scripting.dictionary")
For i = 1 To UBound(Arr, 1)
For j = 1 To UBound(Arr, 2)
key = Arr(i, j)
If TypeName(key) = "Double" Then
If Not .exists(key) Then .Add key, ""
End If
Next j
Next i
Sheet1.Range("B2").Resize(, .Count).Value = .keys()
End With
End Sub
Cảm ơn anhMã:Sub donso() 'Hieucd b3 (Láy nhieu mang) Dim Arr(), kq(), i As Long, j As Long, k As Long, jMax As Long, key For j = 12 To 26 'Cot L toi cot Z i = Cells(65500, j).End(xlUp).Row 'dòng cuoi cot j If i > k Then k = i 'dòng cuoi cua mang du lieu Next j Arr = Sheet1.Range("L4:Z" & k).Value k = 0 With CreateObject("Scripting.dictionary") For i = 1 To UBound(Arr, 1) For j = 1 To UBound(Arr, 2) key = Arr(i, j) If TypeName(key) = "Double" Then If Not .exists(key) Then .Add key, "" k = k + 1 ReDim Preserve kq(1 To k) kq(k) = key End If End If Next j Next i End With Sheet1.Range("B2").Resize(, k).Value = kq End Sub
Cảm ơn bạnThử rút gọn code của bạn HieuCD
Mã:Sub donso() 'Hieucd b3 (Láy nhieu mang) Dim Arr(), i As Long, j As Long, k As Long, key For j = 12 To 26 'Cot L toi cot Z i = Sheet1.Cells(Rows.Count, j).End(xlUp).Row 'dong cuoi cot j If i > k Then k = i 'dong cuoi cua mang du lieu Next j Arr = Sheet1.Range("L4:Z" & k).Value With CreateObject("Scripting.dictionary") For i = 1 To UBound(Arr, 1) For j = 1 To UBound(Arr, 2) key = Arr(i, j) If TypeName(key) = "Double" Then If Not .exists(key) Then .Add key, "" End If Next j Next i Sheet1.Range("B2").Resize(, .Count).Value = .keys() End With End Sub
Code đó có phải của tôi đâu?Cảm ơn bạn
batman1
đã rút gọn code, chạy rất tốt, nhưng có điều là không xóa dữ liệu cũ đi nên hay bị nhầm dữ liệu.
Rút gọn thôi chứ không thêm.Thử rút gọn code của bạn HieuCD
Vâng! Cảm ơn bạn nhe!Code đó có phải của tôi đâu?
Tôi thấy bạn "thích" nên nghĩ là bạn hài lòng rồi.
Tôi viết rõ mà
Rút gọn thôi chứ không thêm.
Bài này trước đây tôi có làm 1 lần, nó thế này:Nhờ các bạn sửa giúp code theo file đính kèm,
Cảm ơn các bạn!
Function UniqueList(ParamArray Arrays())
Dim item, aTmpArr, aSubArr
'On Error Resume Next
With CreateObject("Scripting.Dictionary")
For Each aSubArr In Arrays
aTmpArr = aSubArr
If Not IsArray(aTmpArr) Then aTmpArr = Array(aTmpArr)
For Each item In aTmpArr
If TypeName(item) <> "Error" Then
If Len(item) Then
If Not .exists(item) Then .Add item, Empty
End If
End If
Next
Next
If .Count Then UniqueList = .Keys
End With
End Function
Sub Main()
Dim Arr
Arr = UniqueList(Range("L4:Z23"), Range("L31:Z50"))
If IsArray(Arr) Then Range("B2").Resize(, UBound(Arr) + 1).Value = Arr
End Sub
Cảm ơn bácBài này trước đây tôi có làm 1 lần, nó thế này:
1> Viết 1 hàm lọc duy nhất
2> Code áp dụng:Mã:Function UniqueList(ParamArray Arrays()) Dim item, aTmpArr, aSubArr 'On Error Resume Next With CreateObject("Scripting.Dictionary") For Each aSubArr In Arrays aTmpArr = aSubArr If Not IsArray(aTmpArr) Then aTmpArr = Array(aTmpArr) For Each item In aTmpArr If TypeName(item) <> "Error" Then If Len(item) Then If Not .exists(item) Then .Add item, Empty End If End If Next Next If .Count Then UniqueList = .Keys End With End Function
Mã:Sub Main() Dim Arr Arr = UniqueList(Range("L4:Z23"), Range("L31:Z50")) If IsArray(Arr) Then Range("B2").Resize(, UBound(Arr) + 1).Value = Arr End Sub
Trời, em chưa để ý bácBài này trước đây tôi có làm 1 lần, nó thế này:
1> Viết 1 hàm lọc duy nhất
2> Code áp dụng:Mã:Function UniqueList(ParamArray Arrays()) Dim item, aTmpArr, aSubArr 'On Error Resume Next With CreateObject("Scripting.Dictionary") For Each aSubArr In Arrays aTmpArr = aSubArr If Not IsArray(aTmpArr) Then aTmpArr = Array(aTmpArr) For Each item In aTmpArr If TypeName(item) <> "Error" Then If Len(item) Then If Not .exists(item) Then .Add item, Empty End If End If Next Next If .Count Then UniqueList = .Keys End With End Function
Mã:Sub Main() Dim Arr Arr = UniqueList(Range("L4:Z23"), Range("L31:Z50")) If IsArray(Arr) Then Range("B2").Resize(, UBound(Arr) + 1).Value = Arr End Sub
Rất cảm ơn bạnXóa dòng 2:
PHP:Sheet1.Rows(2).ClearContents 'Hoặc:' 'Sheet1.Range("A2").Resize(1, Columns.Count).ClearContents
Ở trên đã trả lời rồi nhưng tôi cũng xin gợi ý bạn về cách học để mai này không cần hỏi những câu tương tự như trên nhé!bác bận tâm thêm cho em dòng xoa dữ cũ liệu vào với nhé, Cảm ơn bác!
vâng! Rất cảm ơn anh ndu96081631, nhưng mà sửa macro khó quá anh à. Anh có thể sửa giúp em là kết quả trả về từng dòng như file em đính kèm được không?Ở trên đã trả lời rồi nhưng tôi cũng xin gợi ý bạn về cách học để mai này không cần hỏi những câu tương tự như trên nhé!
Đó là nếu bạn không biết code xóa dữ liệu nó như thế nào bạn có thể:
- Bật chức năng record macro lên
- Chọn dòng 2 và xóa
- Tắt record macro
- Bấm Alt + F11 vào xem code
Vậy là bạn có code rồi đó. Những cái đơn giản khác (những cái có thể làm bằng tay) cũng hãy thao tác tương tự để có code
Cảm ơn bạnSao đến bài này lại đổi yêu cầu rồi vậy? Bài trước ra kết quả giống y như file yêu cầu rồi mà!!!
Sao chủ đề nào mình cũng lòng vòng vậy?
Bạn không hiểu một điều đơn giản là khi yêu cầu thay đổi thì rất có thể phải viết code mới. Trong trường hợp này thậm chí nếu muốn dùng đoạn code nào đấy trong bài #17 thì cũng phải viết một code dài để "cố gượng ép" dùng (gọi) code đó. Lúc này thì thà đập đi làm mới còn ngắn và nhanh hơn.Cảm ơn bạn
befaint
đã giúp đỡ, nhưng thật tình mình thích kiểu phong cách viết của bác ndu96081631 ở bài #17, mình chỉ cần cho thêm mảng vào là oke rồi, không cần thêm cái gì nữa "Bởi vìh min chưa hiểu biết và vận dụng code, nên cái gì ngắn gọn là mình sướng rồi"
Bạn có thể giúp mình giống như vậy được không?
Cảm ơn bạn! Nhưng code đó nếu như thêm mảng vào thì có phải thêm các vòng lặp vào nữa không?Bạn không hiểu một điều đơn giản là khi yêu cầu thay đổi thì rất có thể phải viết code mới. Trong trường hợp này thậm chí nếu muốn dùng đoạn code nào đấy trong bài #17 thì cũng phải viết một code dài để "cố gượng ép" dùng (gọi) code đó. Lúc này thì thà đập đi làm mới còn ngắn và nhanh hơn.
Nếu tôi hiểu ý của bạn thì khi bạn gọi với tham số là 1 mảng thôi thì kết quả sẽ là một mảng liên tục. Đập xuống sheet thì tùy theo cách đập mà sẽ là 1 dòng kết quả hoặc 1 cột kết quả chứ không phải là nhiều dòng kết quả như bạn ghi trong tập tin.Cảm ơn bạn! Nhưng code đó nếu như thêm mảng vào thì có phải thêm các vòng lặp vào nữa không?
Mà bạn thì muốn code ngắn mà.thậm chí nếu muốn dùng đoạn code nào đấy trong bài #17 thì cũng phải viết một code dài để "cố gượng ép" dùng (gọi) code đó. Lúc này thì thà đập đi làm mới còn ngắn và nhanh hơn.
Bạn batman1 ơi, như file mình đính kèm ở bài #23 đó. Thật sự mình không hiểu nên đôi khi diễn đạt không đúng, bạn thông cảm. Cái này anh @HieuCD cũng viết rồi, nhưng lại phải thêm những vòng lặp để chọn mảng tiếp theo. Mình thấy cũng bất tiện. NHờ bạn sửa giúp mình làm sao như của bác @ndu96081631 là chỉ cần thêm mảng vào là OK.Nếu tôi hiểu ý của bạn thì khi bạn gọi với tham số là 1 mảng thôi thì kết quả sẽ là một mảng liên tục. Đập xuống sheet thì tùy theo cách đập mà sẽ là 1 dòng kết quả hoặc 1 cột kết quả chứ không phải là nhiều dòng kết quả như bạn ghi trong tập tin.
Bạn vẫn cố tình không hiểu
Mà bạn thì muốn code ngắn mà.
Tại sai lại là tôi?
Lúc này thì thà đập đi làm mới còn ngắn và nhanh hơn.
rất tuyệt vơi, tuy nhìn code hơi dài một tý, nhưng chạy rất chuẩn "Không biết tốc độ như nào". Cảm ơn bạnTạm...
Nói chung là thua!
Xin lỗi bạnTạm...
Nói chung là thua!
BácMới lượm được đôi dép cùn, lót ngồi xem.
(lỡ bị CA đuổi chạy mất dép cũng không thiệt thòi nhiều)
Mỗi khi có vụ mới thì phải mô tả kỹ để người khác biết mình muốn gì. Rõ ràng là yêu cầu bây giờ khác yêu cầu ban đầu, nên là vấn đề mới, vậy phải mô tả lại từ đầu.Nhưng bạn làm là dồn tất cả các số có mặt trong dòng.
Bác cho tôi xin lại được không? Hôm qua tôi xem kịch hay mà bỏ quên.Mới lượm được đôi dép cùn, lót ngồi xem
Xin lỗi, tôi mới nhỏm dậy đi một chút mà thằng/con nào lại cuỗm mất rồi....
Bác cho tôi xin lại được không? Hôm qua tôi xem kịch hay mà bỏ quên.
Xin lỗi, tôi mới nhỏm dậy đi một chút mà thằng/con nào lại cuỗm mất rồi.
Giờ đi hóng chuyện lại phải tiếp tục trở về cái thế chồm hổm thôi.
Bác nhìn xem gần đó có cô nào có vẻ ngoan ngoan không. Cứ chồm hổm bên cạnh một lúc là thể nào cũng có đối thoại (không phải đối thoại trên sân khấu nhé):Xin lỗi, tôi mới nhỏm dậy đi một chút mà thằng/con nào lại cuỗm mất rồi.
Giờ đi hóng chuyện lại phải tiếp tục trở về cái thế chồm hổm thôi.
Chào bácMỗi khi có vụ mới thì phải mô tả kỹ để người khác biết mình muốn gì. Rõ ràng là yêu cầu bây giờ khác yêu cầu ban đầu, nên là vấn đề mới, vậy phải mô tả lại từ đầu.
Tập tin phải có dữ liệu "biết nói". Nếu dữ liệu giả lập là 2, 3, 4, 5 và kết quả mong đợi cũng là 2, 3, 4 và 5 thì người khác có thể hiểu là lấy hết các số có trong dòng. Nếu dữ liệu giả lập là 2, 3, 4, 3, 5, 4, 2 mà kết quả mong đợi là 2, 3, 4 và 5 thì người khác sẽ hiểu là chỉ lấy các giá trị khác nhau từng đôi một. Dữ liệu thứ hai là dữ liệu "biết nói"
Hỏi cũng phải biết hỏi, phải suy nghĩ, để khỏi mất thời gian của người khác.
Bác cho tôi xin lại được không? Hôm qua tôi xem kịch hay mà bỏ quên.
Chào bác
batman1
Thật sự cái phương án ban đầu thì chỉ có như vậy. Nhưng qua thực tế thì lại phát sinh ra nhiều vấn đề.
Tôi muốn những cái tổng quát, ai ai cũng làm được, không biết VBA như bác giải toán lớp 3 còn sai
VetMini
. Vì vậy bác batman1 thông cảm bỏ qua. Bác sửa lại giúp tôi code của bài #29 với nhé!
Cảm ơn bác,
BạnCoi chừng bạn tìm nhầm người. Mình nghe nói bạn batman1 đếm số 1,2,3,4,5 còn chưa chắc thuộc hết đó, đặt cái tài khoản có gắn số 1 đuôi là tôi nghi rồi.
Sợ bạn batman1 không giúp nổi bạn ấy chứ.
Hình như bạn (hiénlinh197) là con cưng của Diễn đàn này hay sao?Bạn
AutoReply
nhìn nhầm người rồi, "Nhìn mặt mà bắt hình dong". "nhìn mặt gửi vàng" đấy là câu nói của các cụ ngày xưa, Không biết bây giờ có còn đúng hay không? Nhưng theo kinh nghiệm nhìn tướng của mình thì cái bác giải bài toán lớp 3 không được (@VetMini ), thì làm sao mà xen vào lĩnh vực cao thủ VBA như này được bạn à,
Bạn @tam888 nhầm rồi, không ai là con cưng cả, Chân lý là chân lý bạn à, Một công thức làm ra phải có chứng minh thì mới gọi là công thức. Nếu không có chứng minh thì là suông. "Một dạng bài toán thì phải có nhiều kiểu". Bạn xem lại câu nói của bạn đi nhé!Hình như bạn (hiénlinh197) là con cưng của Diễn đàn này hay sao?
Chủ đề nào cũng dài lê thê, thay đổi câu hỏi, đòi hỏi đủ điều, từ vô lý bài toán lớp 3 đến việc khích mạ người khác, vậy mà BQT vẫn dung dưỡng và để tồn tại, phải chăng đến lúc mạc rồi (?).
Chạy codeKhó quá, nhờ các bạn sửa giúp theo file mình gửi kèm đã có 1 code ở đó.
Cảm ơn các bạn.
Sub Rectangle1_Click()
Dim Arr(), kq(), Rng(), i As Long, j As Long, k As Long, jMax As Long, key As String
Rng = Array("L4:Z23", "L31:Z50") 'Nhap dia chi vào Rng
For n = 0 To UBound(Rng)
On Error Resume Next
Arr = Sheet1.Range(Rng(n)).Value
If Err.Number Then MsgBox ("Loi Dia Chi: " & Rng(n))
ReDim kq(1 To UBound(Arr, 1), 1 To UBound(Arr, 2))
With CreateObject("Scripting.dictionary")
For i = 1 To UBound(Arr, 1)
k = 0
.RemoveAll
For j = 1 To UBound(Arr, 2)
key = CStr(Arr(i, j))
If key <> "" Then
If Not .exists(key) Then
.Add key, ""
k = k + 1
kq(i, k) = key
End If
End If
Next j
If jMax < k Then jMax = k 'Tính só cot ket qua
Next i
End With
Sheet1.Range("B" & Range(Rng(n)).Row).Resize(UBound(kq, 1), 10).ClearContents
Sheet1.Range("B" & Range(Rng(n)).Row).Resize(UBound(kq, 1), jMax).Value = kq
On Error GoTo 0
Next n
End Sub
Em ăm trộm Code của anh HieuCD đưa vào Function. Kết quả được gắn vào ô B52 Sheet1. Anh kiểm tra thửKhó quá, nhờ các bạn sửa giúp theo file mình gửi kèm đã có 1 code ở đó.
Cảm ơn các bạn.
Chỉnh Sub để Kết quả trả về đúng dòng của dữ liệu của từng mảng là OkEm ăm trộm Code của anh HieuCD đưa vào Function. Kết quả được gắn vào ô B52 Sheet1. Anh kiểm tra thử
P/s: Nếu có lỗi trong quá trình chạy Code đều được bỏ qua. Như vậy cho hào phóng anh ạ![]()
Tuyệt vời, quá tuyệt vời! Cảm ơn anhChạy codeMã:Sub Rectangle1_Click() Dim Arr(), kq(), Rng(), i As Long, j As Long, k As Long, jMax As Long, key As String Rng = Array("L4:Z23", "L31:Z50") 'Nhap dia chi vào Rng For n = 0 To UBound(Rng) On Error Resume Next Arr = Sheet1.Range(Rng(n)).Value If Err.Number Then MsgBox ("Loi Dia Chi: " & Rng(n)) ReDim kq(1 To UBound(Arr, 1), 1 To UBound(Arr, 2)) With CreateObject("Scripting.dictionary") For i = 1 To UBound(Arr, 1) k = 0 .RemoveAll For j = 1 To UBound(Arr, 2) key = CStr(Arr(i, j)) If key <> "" Then If Not .exists(key) Then .Add key, "" k = k + 1 kq(i, k) = key End If End If Next j If jMax < k Then jMax = k 'Tính só cot ket qua Next i End With Sheet1.Range("B" & Range(Rng(n)).Row).Resize(UBound(kq, 1), 10).ClearContents Sheet1.Range("B" & Range(Rng(n)).Row).Resize(UBound(kq, 1), jMax).Value = kq On Error GoTo 0 Next n End Sub
Cảm ơn bạnEm ăm trộm Code của anh HieuCD đưa vào Function. Kết quả được gắn vào ô B52 Sheet1. Anh kiểm tra thử
P/s: Nếu có lỗi trong quá trình chạy Code đều được bỏ qua. Như vậy cho hào phóng anh ạ![]()