返回列表 上一主題 發帖

[發問] 通過資料驗證不重複值和排序?

回復 1# maiko

試試看
  1. Sub test()
  2. '
  3.    
  4.     Columns("A:A").Copy
  5.     Columns("G:G").PasteSpecial Paste:=xlPasteValues '貼上值
  6.     Application.CutCopyMode = False
  7.     '移除重複
  8.     ActiveSheet.Range("G1:G" & [g65536].End(xlUp).Row).RemoveDuplicates Columns:=1, Header:=xlYes
  9.     '排序
  10.     ActiveWorkbook.Worksheets("工作表1").Sort.SortFields.Add Key:=Range("G1:G" & [g65536].End(xlUp).Row), _
  11.         SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
  12.     With ActiveWorkbook.Worksheets("工作表1").Sort
  13.         .SetRange Range("G1:G" & [g65536].End(xlUp).Row)
  14.         .Header = xlYes
  15.         .MatchCase = False
  16.         .Orientation = xlTopToBottom
  17.         .SortMethod = xlPinYin
  18.         .Apply
  19.     End With
  20. End Sub
複製代碼
PKKO

TOP

回復 3# maiko
我原本提供的程式碼為,複製A欄到G欄=>移除重複(保留表頭)=>排序(英文方式)
不懂你所謂的資料驗證,若你指的是下拉選單
試試看,檔案可以正常運作
test.rar (16.45 KB)
  1. Sub test()
  2. '
  3.    
  4.     Columns("A:A").Copy
  5.     Columns("G:G").PasteSpecial Paste:=xlPasteValues '貼上值
  6.     Application.CutCopyMode = False
  7.     '移除重複
  8.     ActiveSheet.Range("G1:G" & [g65536].End(xlUp).Row).RemoveDuplicates Columns:=1, Header:=xlYes
  9.     '排序
  10.     ActiveWorkbook.Worksheets("工作表1").Sort.SortFields.Add Key:=Range("G1:G" & [g65536].End(xlUp).Row), _
  11.         SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
  12.     With ActiveWorkbook.Worksheets("工作表1").Sort
  13.         .SetRange Range("G1:G" & [g65536].End(xlUp).Row)
  14.         .Header = xlYes
  15.         .MatchCase = False
  16.         .Orientation = xlTopToBottom
  17.         .SortMethod = xlPinYin
  18.         .Apply
  19.     End With
  20.     For i = 2 To [g65536].End(xlUp).Row
  21.         name1 = name1 & Cells(i, 7) & ","
  22.     Next
  23.     name2 = Mid(name1, 1, Len(name1) - 1)
  24.     With Range("G2:G" & [a65536].End(xlUp).Row).Validation
  25.         .Delete
  26.         .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
  27.         xlBetween, Formula1:=name2
  28.         .IgnoreBlank = True
  29.         .InCellDropdown = True
  30.         .InputTitle = ""
  31.         .ErrorTitle = ""
  32.         .InputMessage = ""
  33.         .ErrorMessage = ""
  34.         .IMEMode = xlIMEModeNoControl
  35.         .ShowInput = True
  36.         .ShowError = True
  37.     End With
  38.     Range("G2:G" & [g65536].End(xlUp).Row).ClearContents
  39. End Sub
複製代碼
PKKO

TOP

        靜思自在 : 受人點水之恩,須當湧泉以報。
返回列表 上一主題