- 帖子
- 1447
- 主題
- 40
- 精華
- 0
- 積分
- 1471
- 點名
- 0
- 作業系統
- Windows 7
- 軟體版本
- Excel 2010 & 2016
- 閱讀權限
- 50
- 性別
- 男
- 來自
- 台灣
- 註冊時間
- 2020-7-15
- 最後登錄
- 2025-5-5
|
本帖最後由 Andy2483 於 2023-2-20 15:00 編輯
回復 6# 准提部林
謝謝前輩
學公式很不簡單!懂VBA解法不一定會公式解法,後學駑鈍,學公式希望勤能補拙
以下是後學學習以VBA的方式處理,懇請前輩再指導,謝謝
不用(Application.EnableEvents = False)盡力防堵再觸發,不知什麼原因還是發生再觸發了,哪裡錯了??
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Arr, V$, N&, A$, i&
With Target
If InStr(.Address, "$Q$9") Or .Count > 1 Then
Exit Sub
End If
If .Address = "$Q$8" Then
V = .Value
Arr = Sheets("客戶基本資料").Range([客戶基本資料!D1], [客戶基本資料!C65536].End(3))
For i = 2 To UBound(Arr)
If Arr(i, 1) & Arr(i, 2) & "/" Like "*" & V Then
A = Split(V, "*")(0)
A = Format(InStr(Arr(i, 1) & Arr(i, 2) & "/", A), "00|")
N = N + 1
Arr(N, 1) = A & Arr(i, 1) & "_" & Arr(i, 2)
End If
Next
Range([Q9], Cells(Rows.Count, "Q").End(3)(2)) = ""
If N = 0 Then Exit Sub
With .Item(2, 1).Resize(N, 1)
.Value = Arr
If N > 1 Then
[T:W].EntireColumn.Hidden = False
.Sort Key1:=.Item(1), Order1:=xlAscending, Header:=xlNo
[T:W].EntireColumn.Hidden = True
End If
.Replace "*|", ""
End With
End If
End With
End Sub |
|