Hỏi về Data Validation (1 người xem)

Liên hệ QC

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

Cá ngừ F1

( ͡° ͜ʖ ͡°)
Thành viên BQT
Moderator
Tham gia
1/1/08
Bài viết
2,579
Được thích
3,723
Donate (Momo)
Donate
Giới tính
Nam
Nghề nghiệp
Quan hệ.. và quan hệ..
Chào các anh chị
E muốn kiểm soát dữ liệu nhập bằng Data Validition của 1 ô là Bội số của 5 (5,10,15...) thì làm thế nào?
Mong sự giúp đỡ!
 
allow chọn customer
formular: copy cthức trên vào

chúc thành công
Cảm ơn bạn nhiều
Cho mình hỏi nâng cao hơn một chút. Có một cột phân loại, nếu loại A thì điều kiện nhập là bội của 2, loại B thì điều kiện nhập là bội của 5..
Như file đính kèm, mong ac giúp đỡ
 

File đính kèm

Cảm ơn bạn nhiều
Cho mình hỏi nâng cao hơn một chút. Có một cột phân loại, nếu loại A thì điều kiện nhập là bội của 2, loại B thì điều kiện nhập là bội của 5..
Như file đính kèm, mong ac giúp đỡ
Thì dùng IF thôi:
Tô chọn B4:B1000
Công thức trong Validation là
PHP:
=IF(A4="A";MOD(B4;2)=0;IF(A4="B";MOD(B4;5)=0;MOD(B4;10)=0))
 
Cảm ơn bạn nhiều
Cho mình hỏi nâng cao hơn một chút. Có một cột phân loại, nếu loại A thì điều kiện nhập là bội của 2, loại B thì điều kiện nhập là bội của 5..
Như file đính kèm, mong ac giúp đỡ

Trời ơi! Làm 1 điều kiện được rồi, giờ 2 hoặc 3 điều kiện thì IF vài cái là xong chứ gì
 
Trời ơi! Làm 1 điều kiện được rồi, giờ 2 hoặc 3 điều kiện thì IF vài cái là xong chứ gì
Dạ, e lười suy nghĩ quá ạh, trong lúc bối rối nên hỏi luôn, hì
Nếu như mà thêm điều kiện nhỏ hơn 1 số nào nữa thì ntn ạh, ví dụ <50,000,000 chẳng hạn
 
Cảm ơn bạn nhiều
Cho mình hỏi nâng cao hơn một chút. Có một cột phân loại, nếu loại A thì điều kiện nhập là bội của 2, loại B thì điều kiện nhập là bội của 5..
Như file đính kèm, mong ac giúp đỡ

chắc là như vậy, validation cho B4
=MOD(B4,IF(A4="A",2,IF(A4="B",5,10)))=0
--->ok xong
sau đó chọn từ B4--->B bao nhiêu bạn thích --->excel sẻ tự gán đk cho các cell còn lại
 
Mình có làm ra cái hàm này

Đã chay ngon. Tuy nhiên muốn chặn dưới, ví dụ 10<=B4<=20 thì dường như là hàm nó ko hiểu, hjk

Chắc là nó sai ở chổ nào đó,
bạn thử lại cái này
=AND(MOD(B4,IF(A4="A",2,IF(A4="B",5,10)))=0,B4>=10,B4<=20)

hoặc
=AND(MOD(B4,IF(A4="A",2,IF(A4="B",5,10)))=0,MEDIAN(10,20,B4)=B4)
 
Lần chỉnh sửa cuối:
Chắc là nó sai ở chổ nào đó,
bạn thử lại cái này
=AND(MOD(B4,IF(A4="A",2,IF(A4="B",5,10)))=0,B4>=10,B4<=20)
Như này được hiểu là nếu loại A hay B thì đều có thể chạy từ 10 đến 20
Mình tách như hàm trên để là nếu loại A thì số chỉ chạy từ 10 đến 20, nếu B chạy từ 20 đến 30..., C...
=IF(A4="A",AND(10<B4<=20,MOD(B4,2)=0),IF(A4="B",AND(20<B4<=30,MOD(B4,5)=0),AND(B4<=40,MOD(B4,10)=0)))
Như này thì lại ko chạy được :D

Mình đặt hàm ở ngoài thử thì kết quả FALSE, đang tìm nguyên nhân, hjk
 
Lần chỉnh sửa cuối:
Như này được hiểu là nếu loại A hay B thì đều có thể chạy từ 10 đến 20
Mình tách như hàm trên để là nếu loại A thì số chỉ chạy từ 10 đến 20, nếu B chạy từ 20 đến 30..., C...
=IF(A4="A",AND(10<B4<=20,MOD(B4,2)=0),IF(A4="B",AND(20<B4<=30,MOD(B4,5)=0),AND(B4<=40,MOD(B4,10)=0)))
Như này thì lại ko chạy được :D

Mình đặt hàm ở ngoài thử thì kết quả FALSE, đang tìm nguyên nhân, hjk

Bạn sai cú pháp

AND(10<B4<=20,MOD(B4,2)=0----->and(B4>10,B4<=20,mod(B4,2)=0
 
Data validation cho giá trị duy nhất

E có một cột với nhiều số trùng nhau.. làm thể nào để đưa ra một ô dạng list của data validation các số là duy nhất
many tks!
 

File đính kèm

E có một cột với nhiều số trùng nhau.. làm thể nào để đưa ra một ô dạng list của data validation các số là duy nhất
many tks!

Dù dùng code VBA hay công thức thì cũng chỉ có 1 cách duy nhất: Phải tạo 1 cột phụ chứa list duy nhất. Validation sẽ tham chiếu đến phụ này
Đương nhiên VBA cũng có 1 cách hơi "tà đạo" là nạp trực tiếp vào Validation theo dạng chuổi (không cần cột phụ). Có điều cách này cũng có giới hạn, sẽ không làm được với những list dài
 
E có một cột với nhiều số trùng nhau.. làm thể nào để đưa ra một ô dạng list của data validation các số là duy nhất
many tks!

Dùng chức năng có sẵn của excel: Data->consolidate

Tất nhiên là qua cột phụ, có điều nhanh gọn.
 
Dùng chức năng có sẵn của excel: Data->consolidate

Tất nhiên là qua cột phụ, có điều nhanh gọn.
Với cột phụ thì e có khả năng làm được, nhưng để file thêm nhỏ gọn nên e muốn add luôn vào soucre của list data validation ạh, hì
 
Với cột phụ thì e có khả năng làm được, nhưng để file thêm nhỏ gọn nên e muốn add luôn vào soucre của list data validation ạh, hì

Cột phụ thì ai cũng làm được, ý mình là nếu làm cột phụ thì mình nghĩ dùng consolidate là nhanh gọn nhất.
Không thì .. chỉ có VBA như anh NDU nói.
 
Với cột phụ thì e có khả năng làm được, nhưng để file thêm nhỏ gọn nên e muốn add luôn vào soucre của list data validation ạh, hì

Bạn đưa dữ liệu thật lên tôi làm luôn cho
(giả lập không đúng sự thật, mất công làm đi làm lại mệt lắm)
 
Bạn đưa dữ liệu thật lên tôi làm luôn cho
(giả lập không đúng sự thật, mất công làm đi làm lại mệt lắm)
Dạ, cảm ơn thày, thày có thể làm trên giả lập ko ạh, để học trò còn động não suy nghĩ cho dữ liệu thật..
 
Dạ, cảm ơn thày, thày có thể làm trên giả lập ko ạh, để học trò còn động não suy nghĩ cho dữ liệu thật..
1> Code trong Module:
Mã:
Function UniqueList(ParamArray sArray())
  Dim Item, tmpArr, SubArr, tmp
  On Error Resume Next
  With CreateObject("Scripting.Dictionary")
    For Each SubArr In sArray
      tmpArr = SubArr
      If Not IsArray(tmpArr) Then tmpArr = Array(tmpArr)
      For Each Item In tmpArr
        tmp = CStr(Item)
        If Len(tmp) Then
          If Not .Exists(tmp) Then .Add tmp, ""
        End If
      Next
    Next
    If .Count Then UniqueList = .Keys
  End With
End Function
2> Code sự kiện SelectionChange
Mã:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Target.Address = "[COLOR=#ff0000]$G$9[/COLOR]" Then
    Dim arr, rng As Range
    Set rng = [COLOR=#0000cd]Range("D5:D1000")[/COLOR]
    arr = UniqueList(rng)
    If IsArray(arr) Then
      With Target
        .Validation.Delete
        .Validation.Add 3, , , Join(arr, ",")
      End With
    End If
  End If
End Sub
Bạn nhập liệu gì cứ thây kệ, hể chọn vào cell G9 là list sẽ tự cập nhất
Lưu ý:
- Chổ màu đỏ là cell chứa Validaiton
- Chổ màu xanh là vùng dữ liệu cần lấy list duy nhất
Cứ tùy biến 2 chổ đỏ xanh ấy thoải mái, những chổ khác cứ để nguyên
 

File đính kèm

list duy nhất

1> Code trong Module:
Mã:
Function UniqueList(ParamArray sArray())
  Dim Item, tmpArr, SubArr, tmp
  On Error Resume Next
  With CreateObject("Scripting.Dictionary")
    For Each SubArr In sArray
      tmpArr = SubArr
      If Not IsArray(tmpArr) Then tmpArr = Array(tmpArr)
      For Each Item In tmpArr
        tmp = CStr(Item)
        If Len(tmp) Then
          If Not .Exists(tmp) Then .Add tmp, ""
        End If
      Next
    Next
    If .Count Then UniqueList = .Keys
  End With
End Function
2> Code sự kiện SelectionChange
Mã:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Target.Address = "[COLOR=#ff0000]$G$9[/COLOR]" Then
    Dim arr, rng As Range
    Set rng = [COLOR=#0000cd]Range("D5:D1000")[/COLOR]
    arr = UniqueList(rng)
    If IsArray(arr) Then
      With Target
        .Validation.Delete
        .Validation.Add 3, , , Join(arr, ",")
      End With
    End If
  End If
End Sub
Bạn nhập liệu gì cứ thây kệ, hể chọn vào cell G9 là list sẽ tự cập nhất
Lưu ý:
- Chổ màu đỏ là cell chứa Validaiton
- Chổ màu xanh là vùng dữ liệu cần lấy list duy nhất
Cứ tùy biến 2 chổ đỏ xanh ấy thoải mái, những chổ khác cứ để nguyên
Thày ơi, e có thử nghiệm code với file đính kèm, nhưng không chạy được... e ko hiểu cơ chế nên chỉ copy code và thay đổi tham chiếu.. hjk +-+-+-+
Mong thầy và mng chị dẫn!!!
 

File đính kèm

consolidate dùng như thế nào bạn? mình chưa dùng chức năng này bao giờ, hì, tks
Excel 2007: Chọn ô trả ra kết quả trước > Data > Consolidate > Chọn hàm cần tính (nếu chỉ lấy list thì hàm nào cũng được) > Chọn vùng dữ liệu (List dữ liệu nằm bền trái, tối thiểu 2 cột) > Add > Check Left column > OK.
Untitled.jpg
 
Thày ơi, e có thử nghiệm code với file đính kèm, nhưng không chạy được... e ko hiểu cơ chế nên chỉ copy code và thay đổi tham chiếu.. hjk +-+-+-+
Mong thầy và mng chị dẫn!!!

Trong file bạn nói rằng:
List duy nhất ở ô màu đỏ lấy tham chiếu từ name list bên sheet data
Vậy mà code lại ghi:
Mã:
Set rng = Range("list")
thì sao mà được
Lý ra phải:
Mã:
Set rng = [COLOR=#ff0000]Sheets("data").[/COLOR]Range("list")
Chỉ rõ tên sheet nguồn đàng hoàng
 
Dạ, thật là tuyệt... vì là e áp dụng hơi máy móc, chưa hiểu về code ạh (nghĩ đơn giản là đặt name rồi thì áp dụng ở đâu cũng được), rất cảm ơn thày...
 
Trong file bạn nói rằng:

Vậy mà code lại ghi:
Mã:
Set rng = Range("list")
thì sao mà được
Lý ra phải:
Mã:
Set rng = [COLOR=#ff0000]Sheets("data").[/COLOR]Range("list")
Chỉ rõ tên sheet nguồn đàng hoàng
Cho e hỏi bổ đề chút là có thể tư động sort cái list (từ nhỏ đến lớn) trong sheet list đc ko ah?
 
Cho e hỏi bổ đề chút là có thể tư động sort cái list (từ nhỏ đến lớn) trong sheet list đc ko ah?

Được luôn!
1> Thêm code này vào Module:
Mã:
Function Sort1DArray(ByVal Arr, Optional ByVal isText As Boolean = False, Optional ByVal isDESC As Boolean = False)
  Dim sCommand As String
  sCommand = "('" & Join(Arr, vbBack) & "').split('" & vbBack & "').sort("
  If isText Then
    sCommand = sCommand & ")"
  Else
    sCommand = sCommand & "function(a,b){return (a-b)})"
  End If
  If isDESC Then sCommand = sCommand & ".reverse()"
  sCommand = sCommand & ".join('" & vbBack & "')"
  With CreateObject("MSScriptControl.ScriptControl")
    .Language = "JavaScript"
    Sort1DArray = Split(.Eval(sCommand), vbBack)
  End With
End Function
2> Sửa code sự kiện SelectionChange thành:
Mã:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Target.Address = "$F$8" Then
    Dim Arr, rng As Range
    Set rng = Sheets("data").Range("list")
    Arr = UniqueList(rng)
   [COLOR=#ff0000][B] Arr = Sort1DArray(Arr, True, False)[/B][/COLOR]
    If IsArray(Arr) Then
      With Target
        .Validation.Delete
        .Validation.Add 3, , , Join(Arr, ",")
      End With
    End If
  End If
End Sub
 

File đính kèm

Danh sách tham chiếu phụ thuộc

E có tham khảo tài liệu data validation in Excel của Thày PhanTuHuong trên GPE.
Mục "Tạo danh sách tham chiếu phụ thuộc"
E xin gửi theo vi dụ của thày PTH đính kèm.
Giả sử sắp tới Hà Nội thêm quận mới là quận Mỹ Đình, e có nhập tiếp vào danh sách mà mở rộng tham chiếu ở source list Quận/Huyện thì công thức này phá sản, hjk
Chẳng nhẽ mỗi lần thêm quân mới lại phải insert vào đúng phần Tỉnh/thành phố..??
Có giải pháp nào hoàn hảo hơn không ạh? Mong giúp đỡ
 

File đính kèm

E có tham khảo tài liệu data validation in Excel của Thày PhanTuHuong trên GPE.
Mục "Tạo danh sách tham chiếu phụ thuộc"
E xin gửi theo vi dụ của thày PTH đính kèm.
Giả sử sắp tới Hà Nội thêm quận mới là quận Mỹ Đình, e có nhập tiếp vào danh sách mà mở rộng tham chiếu ở source list Quận/Huyện thì công thức này phá sản, hjk
Chẳng nhẽ mỗi lần thêm quân mới lại phải insert vào đúng phần Tỉnh/thành phố..??
Có giải pháp nào hoàn hảo hơn không ạh? Mong giúp đỡ

Công thức này bắt buộc phải tuân thủ quy tắc: Sort dữ liệu
Vậy nên trường hợp muốn nhập liệu thoải mái (nhập tiếp vào danh sách mà không cần phải chèn đúng chổ), bạn phải dùng đến VBA
 
Công thức này bắt buộc phải tuân thủ quy tắc: Sort dữ liệu
Vậy nên trường hợp muốn nhập liệu thoải mái (nhập tiếp vào danh sách mà không cần phải chèn đúng chổ), bạn phải dùng đến VBA
Mọi con đường đều dẫn đến VBA... Hì.. thày giúp em với ạh.
 
Mọi con đường đều dẫn đến VBA... Hì.. thày giúp em với ạh.
Có cách nào tạo một mảng ĐỘNG với tham chiếu điều kiện là Tỉnh/thành phố không ạh?
ví dụ: Nếu chọn Hà Nội trong file bài #35 có mảng động là [A2:A8,A22].. từ đó ta có thể offset sang Quận/huyện??
 

File đính kèm

Lần chỉnh sửa cuối:
Thật ra dạng bài này đã có rồi. Bạn xem topic này:
http://www.giaiphapexcel.com/forum/...a-validation-có-điều-kiện&p=535067#post535067

Mọi thứ đã có sẵn, ta vẽ thêm "con mèo" vào là xong! (trong 30 giây)
E hỏi thêm chút, liệu list có thể đưa ra gợi ý về việc lựa chọn (như kiểu đánh hàm số trên excel)
Giả dụ: nhập chữ H ở list thì đưa ra lựa chọn như: Hà Nội, Hà Nam... Hà Tiên ???
 
E hỏi thêm chút, liệu list có thể đưa ra gợi ý về việc lựa chọn (như kiểu đánh hàm số trên excel)
Giả dụ: nhập chữ H ở list thì đưa ra lựa chọn như: Hà Nội, Hà Nam... Hà Tiên ???

Hình như bạn muốn nhập liệu nhanh!
Yêu cầu nhiều quá, đã đến lúc bạn nên nghĩ đến việc dùng UserForm thay vì Validation
UserForm kết hợp ComboBox và ListBox sẽ đáp ứng mọi thứ bạn cần (gần giống như tra từ điển)
 
Hình như bạn muốn nhập liệu nhanh!
Yêu cầu nhiều quá, đã đến lúc bạn nên nghĩ đến việc dùng UserForm thay vì Validation
UserForm kết hợp ComboBox và ListBox sẽ đáp ứng mọi thứ bạn cần (gần giống như tra từ điển)
Quả thật.. thầy đi GUỐC trong bụng học trò..
Chỉ có điều.. e cũng có nghiên cứu userform nhưng cứ như +-+-+-+... khó khó là khó
 
Quả thật.. thầy đi GUỐC trong bụng học trò..
Chỉ có điều.. e cũng có nghiên cứu userform nhưng cứ như +-+-+-+... khó khó là khó
Xem file mẫu đính kèm nhé
Hướng dẫn sơ qua cách dùng như clip dưới đây

[video=youtube;H1MGVQ31KcE]http://www.youtube.com/watch?v=H1MGVQ31KcE&feature=youtu.be[/video]


Bạn gõ vài ký tự vào ComboBox, lập tức Listbox sẽ lọc ra những dữ liệu liên quan
Cho phép nhập ký tự đại diện như *, ?...
(dữ liệu được lấy từ sheet MC nha)
----------------
Cách hàm đã viết sẵn cả rồi, giờ việc của bạn là:
- Thay đổi thiết kế của UserForm cho phù hợp
- Thay đổi vùng dữ liệu gốc cho phù hợp
vậy thôi
 

File đính kèm

Xem file mẫu đính kèm nhé
Hướng dẫn sơ qua cách dùng như clip dưới đây

[video=youtube;H1MGVQ31KcE]http://www.youtube.com/watch?v=H1MGVQ31KcE&feature=youtu.be[/video]


Bạn gõ vài ký tự vào ComboBox, lập tức Listbox sẽ lọc ra những dữ liệu liên quan
Cho phép nhập ký tự đại diện như *, ?...
(dữ liệu được lấy từ sheet MC nha)
----------------
Cách hàm đã viết sẵn cả rồi, giờ việc của bạn là:
- Thay đổi thiết kế của UserForm cho phù hợp
- Thay đổi vùng dữ liệu gốc cho phù hợp
vậy thôi
Thầy ơi... This video is private ạh
 
1> Code trong Module:
Mã:
Function UniqueList(ParamArray sArray())
  Dim Item, tmpArr, SubArr, tmp
  On Error Resume Next
  With CreateObject("Scripting.Dictionary")
    For Each SubArr In sArray
      tmpArr = SubArr
      If Not IsArray(tmpArr) Then tmpArr = Array(tmpArr)
      For Each Item In tmpArr
        tmp = CStr(Item)
        If Len(tmp) Then
          If Not .Exists(tmp) Then .Add tmp, ""
        End If
      Next
    Next
    If .Count Then UniqueList = .Keys
  End With
End Function
2> Code sự kiện SelectionChange
Mã:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Target.Address = "[COLOR=#ff0000]$G$9[/COLOR]" Then
    Dim arr, rng As Range
    Set rng = [COLOR=#0000cd]Range("D5:D1000")[/COLOR]
    arr = UniqueList(rng)
    If IsArray(arr) Then
      With Target
        .Validation.Delete
        .Validation.Add 3, , , Join(arr, ",")
      End With
    End If
  End If
End Sub
Bạn nhập liệu gì cứ thây kệ, hể chọn vào cell G9 là list sẽ tự cập nhất
Lưu ý:
- Chổ màu đỏ là cell chứa Validaiton
- Chổ màu xanh là vùng dữ liệu cần lấy list duy nhất
Cứ tùy biến 2 chổ đỏ xanh ấy thoải mái, những chổ khác cứ để nguyên
E có sử dụng code này của thày để lọc dữ liệu duy nhất, ở một số sheet khác thì không thấy có lỗi.. nhưng khi kích vào ô D2 của sheet này để chọn thì báo lỗi này, ko biết là lỗi j ạh?
 

File đính kèm

  • run time error.jpg
    run time error.jpg
    92.5 KB · Đọc: 7
  • VBA.jpg
    VBA.jpg
    138.2 KB · Đọc: 5
E có sử dụng code này của thày để lọc dữ liệu duy nhất, ở một số sheet khác thì không thấy có lỗi.. nhưng khi kích vào ô D2 của sheet này để chọn thì báo lỗi này, ko biết là lỗi j ạh?

Đoán thôi: Có thể cái list mà bạn định cho vào Validation nó quá dài... dài đến mức quá tải
Chỉ đoán thôi chứ không có file cũng không biết được gì
 
Đoán thôi: Có thể cái list mà bạn định cho vào Validation nó quá dài... dài đến mức quá tải
Chỉ đoán thôi chứ không có file cũng không biết được gì
name "Phong_dm" là 204 bản ghi (liệu có quá dài)
Nhưng, E cũng áp dụng cách này cho sheet khác thì ko thấy báo lỗi j ạh...
Dạ, e có phát hiện ra là nếu protect sheet thì báo lỗi mà unprotect thì lại ko báo lỗi này ạh
 
Lần chỉnh sửa cuối:
Có khi nào trong source của list data validation vừa chứa phần tử là chuỗi, vừa có phần tử là hàm số được không ạh?
 
1> Code trong Module:
Mã:
Function UniqueList(ParamArray sArray())
  Dim Item, tmpArr, SubArr, tmp
  On Error Resume Next
  With CreateObject("Scripting.Dictionary")
    For Each SubArr In sArray
      tmpArr = SubArr
      If Not IsArray(tmpArr) Then tmpArr = Array(tmpArr)
      For Each Item In tmpArr
        tmp = CStr(Item)
        If Len(tmp) Then
          If Not .Exists(tmp) Then .Add tmp, ""
        End If
      Next
    Next
    If .Count Then UniqueList = .Keys
  End With
End Function
2> Code sự kiện SelectionChange
Mã:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Target.Address = [SIZE=3][B]"[COLOR=#ff0000]$G$9[/COLOR]"[/B][/SIZE] Then
    Dim arr, rng As Range
    Set rng = [COLOR=#0000cd]Range("D5:D1000")[/COLOR]
    arr = UniqueList(rng)
    If IsArray(arr) Then
      With Target
        .Validation.Delete
        .Validation.Add 3, , , Join(arr, ",")
      End With
    End If
  End If
End Sub
Bạn nhập liệu gì cứ thây kệ, hể chọn vào cell G9 là list sẽ tự cập nhất
Lưu ý:
- Chổ màu đỏ là cell chứa Validaiton
- Chổ màu xanh là vùng dữ liệu cần lấy list duy nhất
Cứ tùy biến 2 chổ đỏ xanh ấy thoải mái, những chổ khác cứ để nguyên
Cho e hỏi bổ sung thêm chỗ này chút ạh.. liệu có thay cái target ( If Target.Address = "$G$9") này thành 1 mảng không, vì e muốn cái data vali này ko chỉ 1 cell mà ở một range..
E có mạnh dạn thay bằng cái này If Target.Address = "G9:G2000" Then mà ko có được
tks
 
Lần chỉnh sửa cuối:
Cho e hỏi bổ sung thêm chỗ này chút ạh.. liệu có thay cái target ( If Target.Address = "$G$9") này thành 1 mảng không, vì e muốn cái data vali này ko chỉ 1 cell mà ở một range..
E có mạnh dạn thay bằng cái này If Target.Address = "G9:G2000" Then mà ko có được
tks

Trật lất!
Vầy mới đúng:
Mã:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  [COLOR=#ff0000]If Not Intersect(Range("G9:G2000"), Target) Is Nothing Then[/COLOR]
    Dim arr, rng As Range
    Set rng = Sheets("data").Range("list")
    arr = UniqueList(rng)
    arr = Sort1DArray(arr, True, False)
    If IsArray(arr) Then
      With [COLOR=#ff0000]Intersect(Range("G9:G2000"), Target)[/COLOR]
        .Validation.Delete
        .Validation.Add 3, , , Join(arr, ",")
      End With
    End If
  End If
End Sub
 
Trật lất!
Vầy mới đúng:
Mã:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  [COLOR=#ff0000]If Not Intersect(Range("G9:G2000"), Target) Is Nothing Then[/COLOR]
    Dim arr, rng As Range
    Set rng = Sheets("data").Range("list")
    arr = UniqueList(rng)
    arr = Sort1DArray(arr, True, False)
    If IsArray(arr) Then
      With [COLOR=#ff0000]Intersect(Range("G9:G2000"), Target)[/COLOR]
        .Validation.Delete
        .Validation.Add 3, , , Join(arr, ",")
      End With
    End If
  End If
End Sub
E có sửa lại thì báo lỗi này
New Picture.jpg
Vậy là sao hả Thầy???
 

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

Back
Top Bottom