- 帖子
- 1447
- 主題
- 40
- 精華
- 0
- 積分
- 1471
- 點名
- 0
- 作業系統
- Windows 7
- 軟體版本
- Excel 2010 & 2016
- 閱讀權限
- 50
- 性別
- 男
- 來自
- 台灣
- 註冊時間
- 2020-7-15
- 最後登錄
- 2025-5-5
|
12#
發表於 2023-4-10 16:25
| 只看該作者
本帖最後由 Andy2483 於 2023-4-10 16:27 編輯
回復 11# bhsm
謝謝前輩,以下心得註解請參考
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
'↑當使用者或外部連結變更工作表中的儲存格時會發生此事件
With Target
'↑以下是關於觸發事件的程序
If .Address = "$E$4" Or .Address = "$F$4" Then
'↑如果觸發儲存格是[E4] 或[F4]的位址
Dim Y, S, Brr, i%, j%, T$, N&
'↑宣告變數:(Y,S,Brr)是通用型變數,(i,j)是短整數,T是字串變數
'N是長整數
Set Y = CreateObject("Scripting.Dictionary")
'↑令Y這通用型變數是 字典
Brr = [F9].Resize(6, 1)
'↑令Brr這通用型變數是 二維陣列,以[F9]向下擴展6格的儲存格值帶入
For i = 4 To 5
'↑設順迴圈!i從4到 5
For j = 4 To 6
'↑設順迴圈!j從4到 6
T = Cells(i, 2) & "|" & Cells(j, 3)
'↑令T這字串變數是 i迴圈列B欄儲存格值連接 "|",
'再連接 j迴圈列C欄儲存格值之後的新字串
S = Val(Cells(i, 2)) + Val(Cells(j, 3))
'↑令S這通用型變數是 i迴圈列B欄儲存格值轉化為數字值,
'加上j迴圈列C欄儲存格值轉化為數字值之後的新數值
N = N + 1: Y(T) = S
'↑令N這長整數變數 累加1
'令以T變數為key,item是S變數,納入Y字典
If T = [E4] & "|" & [F4] Then Brr(N, 1) = Y(T)
'↑如果T變數(字串)同
'[E4]儲存格值連接"|" 再連接[F4]儲存格值組成的新字串??
'就令N變數列第1欄Brr陣列值是 以T變數查Y字典的item值
Next
Next
[F9].Resize(6, 1) = Brr
'↑[F9]向下擴展6格的儲存格值以 Brr陣列值帶入
Set Y = Nothing: Erase Brr
'↑釋放變數
End If
End With
End Sub |
|