tan.ngohoangquoc
Thành viên hoạt động
- Tham gia
- 10/7/14
- Bài viết
- 100
- Được thích
- 41
- Nghề nghiệp
- M&A Specialist - RM Assistant
Hi mọi người,
Em có viết một vòng lặp để đưa dữ liệu vào Data Validation
Tuy nhiên phải qua 2 vòng lặp em mới loại bỏ dc dữ liệu dư ( các dấu ,,,,,,) trong Validation.
Mọi người có cách nào nhanh hơn không ạ.
Tiện thể đây Em dùng code nối chuỗi của thầy ndu. Mà dùng Scripting.Dictionary để lọc trùng luôn mà không xong
Em có viết một vòng lặp để đưa dữ liệu vào Data Validation
Tuy nhiên phải qua 2 vòng lặp em mới loại bỏ dc dữ liệu dư ( các dấu ,,,,,,) trong Validation.
Mọi người có cách nào nhanh hơn không ạ.
Mã:
Function SetUpValidation(aRange As String) Dim i As Long, j As Long, k As Long, Validation_List As String
Dim Dic As Object, Arr(), sArr(), aValidation, sRange As Range
Application.ScreenUpdating = False
Set sRange = Sheets("Allocation").Range("TableAllocation[" & aRange & "]")
Arr = sRange
ReDim sArr(1 To UBound(Arr), 1 To 1)
Set Dic = CreateObject("Scripting.Dictionary")
On Error Resume Next
For i = 1 To UBound(Arr, 1)
If Not Dic.exists(Arr(i, 1)) Then
Dic.Add Arr(i, 1), 1
j = j + 1
sArr(j, 1) = Arr(i, 1)
End If
Next
ReDim aValidation(1 To j, 1 To 1)
For k = 1 To j
aValidation(k, 1) = sArr(k, 1)
Next
Validation_List = Join(WorksheetFunction.Transpose(aValidation), ",")
With Range("B1").Validation
.Delete
.Add 3, , , Validation_List
.IgnoreBlank = True
End With
Set Dic = Nothing
Application.ScreenUpdating = True
End Function
Tiện thể đây Em dùng code nối chuỗi của thầy ndu. Mà dùng Scripting.Dictionary để lọc trùng luôn mà không xong
Mã:
Function MergeContent(ByVal Delimiter As String, ParamArray Arrays()) As String Dim aTmp, Arr(), Item, tmp As String
Dim i As Long, n As Long
On Error Resume Next
For i = LBound(Arrays) To UBound(Arrays)
aTmp = Arrays(i)
If Not IsArray(aTmp) Then aTmp = Array(aTmp)
For Each Item In aTmp
tmp = IIf(TypeName(Item) = "Error", "", Trim(CStr(Item)))
If Len(tmp) Then
n = n + 1
ReDim Preserve Arr(1 To n)
Arr(n) = tmp
End If
Next
Next
If n Then MergeContent = Join(Arr, Delimiter)
End Function