Board logo

標題: [發問] 通過資料驗證不重複值和排序? [打印本頁]

作者: maiko    時間: 2015-4-21 16:26     標題: 通過資料驗證不重複值和排序?

A欄上有一組Member名稱,如何在G2上用資料驗證不重複值排序

Member
B
A
B
B
C
D
E
A
B
E
D
G
A
B
B
F


請各位賜教,謝謝!
作者: PKKO    時間: 2015-4-21 19:24

回復 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
複製代碼

作者: maiko    時間: 2015-4-21 19:31

回復  maiko

試試看
PKKO 發表於 2015-4-21 19:24



   
程式到 .Apply 的時候出現錯誤,如圖:
[attach]20762[/attach]

而且,不是資料驗證。
作者: stillfish00    時間: 2015-4-21 19:54

回復 1# maiko
別說賜教了,連問題都沒看懂。。。
你不把問題再說清楚點嗎?
作者: PKKO    時間: 2015-4-21 19:56

回復 3# maiko
我原本提供的程式碼為,複製A欄到G欄=>移除重複(保留表頭)=>排序(英文方式)
不懂你所謂的資料驗證,若你指的是下拉選單
試試看,檔案可以正常運作
[attach]20763[/attach]
  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
複製代碼

作者: maiko    時間: 2015-4-22 01:43

回復 5# PKKO


    程式總是到 .Apply 這一步就出現 1004 錯誤:
[attach]20764[/attach]
作者: maiko    時間: 2015-4-22 01:46

回復 4# stillfish00


    就是把A欄上的Member名稱:
B
A
B
B
C
D
E
A
B
E
D
G
A
B
B
F
做一個下拉選單,而且這選單是要不重複、由小到大排序的。

可能用資料驗證大家會不懂,其實就是下拉選單。
作者: lpk187    時間: 2015-4-22 07:13

回復 7# maiko

PKKO大上傳的檔案和程式碼,可以達成你的問題,也可以正常執行,甚至沒有出現你PO出來的錯誤,何不把你的檔案上傳上來讓大家幫你檢視呢?




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)