功能說明:
- 對於原始資料中每一列,找出值為 1 的欄位
- 將這些欄位的標題按順序記錄到新的範圍(S2 開始)
- 如果一列中有多個值為 1 的欄位,會依序記錄其標題

分析:
詳細分析這段 VBA 程式碼的功能和邏輯:
- 函數目的: 這是一個名為 Sub 記錄值1的列號_I() 的子程序,主要目的是找出特定範圍內數值為 1 的列,並記錄對應的列標題。
- 變數宣告:
- i, j, k:用於迴圈計數的迭代變數
- rngArr:用於儲存 A1:Q13 範圍的所有值
- brr:用於儲存結果的二維陣列
- headArr:用於儲存 A1:Q1 範圍的標題列
- 主要步驟: a. 讀取數據:
b. 清除目標範圍:
c. 初始化結果陣列:
d. 主要邏輯處理:
e. 輸出結果: - rngArr = Range("A1:Q13").value:將 A1:Q13 範圍的值複製到 rngArr
- headArr = Range("A1:Q1").value:將 A1:Q1 範圍的標題列複製到 headArr
- Range("S2").Resize(12, 14).ClearContents:清除 S2 開始的 12x14 範圍的內容
- ReDim brr(1 To 12, 1 To 14):建立一個 12x14 的二維陣列來儲存結果
- 外層迴圈 For i = 2 To 13:遍歷 A2:Q13 的每一列
- 內層迴圈 For j = 2 To UBound(rngArr, 2):遍歷每一列的每一欄
- 當找到值為 1 的儲存格時: 將對應的標題(來自 headArr)寫入 brr 陣列 使用 k 作為 brr 陣列的列索引
- Range("S2").Resize(12, 14).value = brr:將 brr 陣列的值寫入 S2 開始的 12x14 範圍
VBA CODE:
(儲格輸出)

VBA CODE:
(陣列輸出)