返回列表 上一主題 發帖

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

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

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

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

回復 1# ClareWu


    A1 B1 C1  三者有連動關係嗎?? 還是有實例可參考?
   (感覺應該是用VBA寫....)

TOP

[版主管理留言]
  • Hsieh(2010-12-21 11:14): 請上傳檔案說明

回復 2# mistery


    A1,B1,C1是多層次篩選
也就是說,B1是根據A1而來的篩選清單
C1是依A1,B1而來的
而當我把A1這個格子內容清除,B1及C1的內容還是存在

TOP

回復 2# mistery


    地址.zip (26.63 KB)
如附件地址這個檔案,若我清除縣市這個儲存格,後面的鄉鎮及村里資料還是存在

TOP

[版主管理留言]
  • Hsieh(2010-12-21 15:17): 上傳壓縮檔請勿使用密碼

回復 4# ClareWu


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

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

    地址.zip (46.63 KB)

TOP

我不能開您的附檔,太菜了
用indirect跟用offset去命名清單有很大差異嗎?
因為我用offset去命名清單也是要手動逐一命名

TOP

回復 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
複製代碼
學海無涯_不恥下問

TOP

回復 7# Hsieh

借題...請問 Hsieh 版主 ...該怎樣用VBA 去快速命名清單?(以此案為例)

TOP

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

回復 ClareWu


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

      地址.zip (48.81 KB)

TOP

回復 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
複製代碼
學海無涯_不恥下問

TOP

        靜思自在 : 能付出愛心就是福,能消除煩惱就是慧。
返回列表 上一主題