Board logo

標題: [發問] 請問沿用舊表格,若將A1資料刪除,B1及C1...以後的儲存格資料是否可以 跟著消失 [打印本頁]

作者: ClareWu    時間: 2010-12-20 16:57     標題: 請問沿用舊表格,若將A1資料刪除,B1及C1...以後的儲存格資料是否可以 跟著消失

:dizzy:
請問若我沿用舊表格來key 入新資料
而我原有表格中,儲存格都是有資料驗證的
當我將A1表格的資料清除時,B1,C1....後面儲存格中的資料依然存在
我想知道可不可能當我A1儲存格中資料清除後,後面的儲存格也自動跟著清除
謝謝各位先進
作者: mistery    時間: 2010-12-20 17:46

本帖最後由 mistery 於 2010-12-20 17:48 編輯

回復 1# ClareWu


    A1 B1 C1  三者有連動關係嗎?? 還是有實例可參考?
   (感覺應該是用VBA寫....)
作者: ClareWu    時間: 2010-12-21 10:49

回復 2# mistery


    A1,B1,C1是多層次篩選
也就是說,B1是根據A1而來的篩選清單
C1是依A1,B1而來的
而當我把A1這個格子內容清除,B1及C1的內容還是存在
作者: ClareWu    時間: 2010-12-21 12:03

回復 2# mistery


    [attach]4161[/attach]
如附件地址這個檔案,若我清除縣市這個儲存格,後面的鄉鎮及村里資料還是存在
作者: mistery    時間: 2010-12-21 13:52

回復 4# ClareWu


    清單的部份  可用 indirect() 函數
    做了一個小小範例  (不過我是用手動逐一命名清單)

    當A1改變時  自動清除 B1 C1  就要用到 VBA 囉 (Worksheet_SelectionChange )
   

    [attach]4162[/attach]
作者: ClareWu    時間: 2010-12-21 15:00

我不能開您的附檔,太菜了
用indirect跟用offset去命名清單有很大差異嗎?
因為我用offset去命名清單也是要手動逐一命名
作者: Hsieh    時間: 2010-12-21 15:16

回復 6# ClareWu
清空的問題用vba解決
sheet1模組
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. If Target.Count > 1 Then Exit Sub
  3. Application.EnableEvents = False
  4. If Target.Column = 1 And Target = "" Then Target.EntireRow = "" '整列清空
  5. Application.EnableEvents = True
  6. End Sub
複製代碼

作者: mistery    時間: 2010-12-21 16:32

回復 7# Hsieh

借題...請問 Hsieh 版主 ...該怎樣用VBA 去快速命名清單?(以此案為例)
作者: mistery    時間: 2010-12-21 16:41

本帖最後由 mistery 於 2010-12-21 16:44 編輯

回復 ClareWu


     (更新附件    之前的不小心加密了  再把 Hsieh 版主寫的自動清除 VBA 加進去)

     [attach]4165[/attach]
作者: Hsieh    時間: 2010-12-21 17:59

回復 8# mistery
不建議這樣做法
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. Dim A As Range, B As Range, Rng As Range, MyStr$
  3. If Target.Count > 1 Then Exit Sub
  4. Application.EnableEvents = False
  5. If Target.Column = 1 And Target = "" Then
  6. Target.EntireRow = "" '整列清空
  7. ElseIf Target.Column = 1 And Target <> "" Then
  8. Set A = Sheet2.Columns("A").Find(Target, lookat:=xlWhole)
  9. k = Application.CountA(A.EntireRow)
  10. MyStr = Join(Application.Transpose(Application.Transpose(A.Offset(, 1).Resize(, k - 1))), ",")
  11. With Target.Offset(, 1).Validation
  12. .Modify 3, , , MyStr
  13. End With
  14. ElseIf Target.Column = 2 And Target <> "" Then
  15. Set A = Sheet3.Columns("A").Find(Target.Offset(, -1), lookat:=xlWhole)
  16. Set B = Sheet3.Columns("A:B").Find(Target, after:=A, lookat:=xlWhole)
  17. Set Rng = Sheet3.Range(B.Offset(, 1), B.End(xlToRight))
  18. If Rng.Count = 1 Then MyStr = Rng Else MyStr = Join(Application.Transpose(Application.Transpose(Rng)), ",")
  19. With Target.Offset(, 1).Validation
  20. .Modify 3, , , MyStr
  21. End With
  22. End If
  23. Application.EnableEvents = True
  24. End Sub
複製代碼

作者: ClareWu    時間: 2010-12-21 18:15

謝謝版主 and  Mistery
1. 但是要辜負版主,因為我還不懂VBA
2. Mistery,我還是不能開你的檔案
不過看起來,不用VBA好像無法解決我的問題
作者: mistery    時間: 2010-12-21 18:23

回復 10# Hsieh


    謝謝  Hsieh 版主  
    真的有很聰明的方法來完成"清單"的工作 ....
    (要花時間來消化您的VBA碼了)(現在是邊看實例邊學...)
作者: Hsieh    時間: 2010-12-21 18:52

回復 11# ClareWu

用一個只是看不見B,C欄資料的方法
選取B,C欄,設定格式化條件
[attach]4174[/attach]




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