EXCEL 解讀宏

  • 作者:由 匿名使用者 發表于 舞蹈
  • 2022-03-18

EXCEL 解讀宏 Eunice 1級 2019-05-06 回答

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]單元格。

哈哈,新年快樂!

EXCEL 解讀宏 風吹過的夏天 1級 2010-04-26 回答

這是個陣列公式,從最裡往外解釋:

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(。。。)

Top