EXCEL 解讀宏
- 2022-03-18
Sub AA() `宏AA
t = 0 `變數 T=0
For i = 1 To 15 `迴圈開始,I 從1到15
If Range(“A” & i)。Value = “A” Then `如果[A1]~[A15]單元格的值為“A”
t = t + 1 `變數 T + 1 (統計有多少個“A”值)
Else `否則([A1]~[A15]單元格的值不為“A”)
If t <> 0 Then Range(“B” & i - 1)。Value = t `在[B1]~[B15]單元格的上一格寫入T值
t = 0 `變數 T=0
End If `IF語句結束
Next i `迴圈結束
End Sub `宏AA 結束
主要功能是:
統計從[A1]到[A15]單元格中,連續出現“A”的次數,並記錄在[B1]~[B15]單元格中(最後出現“A”的邊上);
如果有空格或沒有出現“A”,則重新計數。
不過這個宏,有個問題:
如果[A1]沒有出現“A”,宏就會出現錯誤!
因為宏要在[B0]單元格寫入T(=0)值,實際上沒有[B0]單元格。
哈哈,新年快樂!
這是個陣列公式,從最裡往外解釋:
check>0有兩種結果,0或者1;
max((check>0)*{1;2}),如果check全部小於等於0,返回0;只要有一個大於0,返回2。
所以,indirect(。。。)這個函式(這個函式返回引用區域,如indirect(“a5”)返回單元格a5的內容)會返回兩種可能:成績表0!a3:d5,或者 成績表2!a3:d5;
vlookup($c$1,。。。,{2,3,4},0)在工作表 成績表0(2)的a3到a5裡查詢$c$1的值,找到後在該區域返回往右數2、3、4列的單元格的值(即對應的b、c、d列的值);
if(or(check),。。。,“”),如果check全部為0(or(check)的結果為假),返回空;只要有一個不為0的數,返回vlookup(。。。)