程序窗口:
測試數據:
生成結果:
程序完整代碼:
Option Explicit
Sub 格式轉換()
Dim arr1, arr2, n&, i&, j&, jj&, t
arr1 = Sheets(1).UsedRange
n = UBound(arr1) * (UBound(arr1, 2) - 4) '結果表行數
ReDim arr2(1 To n, 1 To 6)
'表頭
j = 1
For Each t In Array(arr1(1, 1), arr1(1, 2), arr1(1, 3), "指標名稱", "檢測值", arr1(1, UBound(arr1, 2)))
arr2(1, j) = t
j = j + 1
Next t
'內容
n = 1
For i = 2 To UBound(arr1)
For j = 4 To UBound(arr1, 2) - 1
If arr1(i, j) <> "" Then
n = n + 1
jj = 1
For Each t In Array(arr1(i, 1), arr1(i, 2), arr1(i, 3), arr1(1, j), arr1(i, j), arr1(i, UBound(arr1, 2)))
arr2(n, jj) = t
jj = jj + 1
Next t
End If
Next j
Next i
'存表
Sheets(2).Activate
With Sheets(2).Range("a1").Resize(n, 6)
.Select
.Value = arr2
End With
End Sub