Board logo

標題: [發問] 輸入資料後便自動地成為 [打印本頁]

作者: letugo    時間: 2010-5-11 12:53     標題: 輸入資料後便自動地成為

各位高手大大們

想設計一驗證資料表,在 sheet 1 的 B 欄輸入資料後便自動地成為驗證的下拉清單,可是若在附件 B2 儲存格輸入 test 可以在 B3 出現,但在 B3 再,輸入 test again 在 B4 的下拉清單就不能出現了?可有甚麼方法解決?若不用巨集又如何?

附件
http://www.sendspace.com/file/dl52wq

謝謝!
作者: Hsieh    時間: 2010-5-11 17:12

本帖最後由 Hsieh 於 2010-5-11 20:51 編輯

定義名稱list
=OFFSET(Sheet1!$B$2,,,IF(COUNTA(Sheet1!$B:$B)=0,1,COUNTA(Sheet1!$B:$B)),)
驗證清單
公式=list
[attach]255[/attach]
作者: letugo    時間: 2010-5-11 21:49

定義名稱list
=OFFSET(Sheet1!$B$2,,,IF(COUNTA(Sheet1!$BB)=0,1,COUNTA(Sheet1!$BB)),)
驗證清單
公 ...
Hsieh 發表於 2010-5-11 17:12


====================================================================================
真心感謝  Hsieh 大大,為我解決多困擾年的問題,謝謝!
但若加上條件是移除重複和只顯示最常出現的 20筆又可不可以做到?

又要麻煩  Hsieh 大大,感恩!謝謝!
作者: letugo    時間: 2010-5-11 22:08

LETUGO兄
不好意思.我想DOWNLOAD您的
附件
http://www.sendspace.com/file/dl52wq
來看...(但是HS版 ...
PD961A 發表於 2010-5-11 20:20



===================================================================
附件
作者: Hsieh    時間: 2010-5-11 22:53

本帖最後由 Hsieh 於 2010-5-11 23:03 編輯

回復 4# letugo


    這樣可能要用到VBA輔助才行[attach]259[/attach]
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. Dim Ar()
  3. Set d = CreateObject("Scripting.Dictionary")
  4. If Target.Column = 3 Then '指定欄位
  5.    With Target.EntireColumn.Validation
  6.    .Delete
  7.    For Each a In Range(Cells(2, Target.Column), Target)
  8.      d(a.Value) = d(a.Value) + 1
  9.    Next
  10.    Do Until d.Count = 0 Or i = 20
  11.        k = Application.Large(d.items, 1)
  12.        k = Application.Match(k, d.items, 0)
  13.        ans = Application.Index(d.keys, k)
  14.        If mystr = "" Then
  15.        mystr = ans
  16.        Else
  17.        mystr = mystr & "," & ans
  18.        End If
  19.        d.Remove ans: i = i + 1
  20.    Loop
  21.    If Not IsError(mystr) And mystr <> "" Then .Add xlValidateList, Formula1:=mystr: .ShowError = False
  22.    End With
  23. End If
  24. End Sub
複製代碼

作者: letugo    時間: 2010-5-12 12:21

回復  letugo


    這樣可能要用到VBA輔助才行
Hsieh 發表於 2010-5-11 22:53

==========================================================
首先再次多謝 Hsieh 大大賜教,真心感謝!
Thanks again !
作者: letugo    時間: 2010-8-11 23:53

對不起 Hsieh 大大
隔了這麼久還再發問,就是 C 欄的下拉清單怎樣做出來?是用資料驗證嗎?
另外若想在 E 欄加入另一組移除重複和只顯示最常出現的 30筆的下拉清單
那麼 VBA 又改成怎樣呢?
麻煩 Hsieh 大大賜教,謝謝!
作者: Hsieh    時間: 2010-8-17 00:21

回復 9# letugo
難道你都沒去了解程式碼嗎?
If Target.Column = 3 Or Target.Column = 5 Then '指定欄位

Do Until d.Count = 0 Or i = 30 'i為指定排名量

只是把不重複名單計算出現次數後,一次數多寡加入驗證清單
就這麼單純的邏輯
作者: letugo    時間: 2010-8-17 12:23

回復  letugo
難道你都沒去了解程式碼嗎?
If Target.Column = 3 Or Target.Column = 5 Then '指定欄位
...
Hsieh 發表於 2010-8-17 00:21


===================================================================
  請恕小弟愚昧,經 Hsieh 兄指點矛塞鈍開
  謝謝!




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