標題:
[發問]
請問沿用舊表格,若將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模組
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
Application.EnableEvents = False
If Target.Column = 1 And Target = "" Then Target.EntireRow = "" '整列清空
Application.EnableEvents = True
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
不建議這樣做法
Private Sub Worksheet_Change(ByVal Target As Range)
Dim A As Range, B As Range, Rng As Range, MyStr$
If Target.Count > 1 Then Exit Sub
Application.EnableEvents = False
If Target.Column = 1 And Target = "" Then
Target.EntireRow = "" '整列清空
ElseIf Target.Column = 1 And Target <> "" Then
Set A = Sheet2.Columns("A").Find(Target, lookat:=xlWhole)
k = Application.CountA(A.EntireRow)
MyStr = Join(Application.Transpose(Application.Transpose(A.Offset(, 1).Resize(, k - 1))), ",")
With Target.Offset(, 1).Validation
.Modify 3, , , MyStr
End With
ElseIf Target.Column = 2 And Target <> "" Then
Set A = Sheet3.Columns("A").Find(Target.Offset(, -1), lookat:=xlWhole)
Set B = Sheet3.Columns("A:B").Find(Target, after:=A, lookat:=xlWhole)
Set Rng = Sheet3.Range(B.Offset(, 1), B.End(xlToRight))
If Rng.Count = 1 Then MyStr = Rng Else MyStr = Join(Application.Transpose(Application.Transpose(Rng)), ",")
With Target.Offset(, 1).Validation
.Modify 3, , , MyStr
End With
End If
Application.EnableEvents = True
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/)