更新於 2024/12/09閱讀時間約 3 分鐘

使用 VBA 查找及記錄 Excel 中值為 1 的欄位標題

功能說明:

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

分析:

詳細分析這段 VBA 程式碼的功能和邏輯:

  1. 函數目的: 這是一個名為 Sub 記錄值1的列號_I() 的子程序,主要目的是找出特定範圍內數值為 1 的列,並記錄對應的列標題。
  2. 變數宣告:
    • i, j, k:用於迴圈計數的迭代變數
    • rngArr:用於儲存 A1:Q13 範圍的所有值
    • brr:用於儲存結果的二維陣列
    • headArr:用於儲存 A1:Q1 範圍的標題列
  3. 主要步驟: 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:(陣列輸出)

分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.