- 帖子
- 1447
- 主題
- 40
- 精華
- 0
- 積分
- 1471
- 點名
- 0
- 作業系統
- Windows 7
- 軟體版本
- Excel 2010 & 2016
- 閱讀權限
- 50
- 性別
- 男
- 來自
- 台灣
- 註冊時間
- 2020-7-15
- 最後登錄
- 2025-3-24
|
13#
發表於 2023-3-23 11:27
| 只看該作者
本帖最後由 Andy2483 於 2023-3-23 11:47 編輯
回復 1# KITTYBOY
回復 8# Hsieh
謝謝論壇,謝謝前輩
後學藉此帖複習 在同一陣列裡收集結果資料,將局部資料(結果資料)寫入儲存格,
學習的方案如下,請各位前輩指教
原始資料:
執行結果1:
執行結果2:產生一個新活頁簿
Option Explicit
Sub TEST()
Dim Brr, i&, Tr&, TT&, N&, Tf$, Tg$, j%
'↑宣告變數:Brr是通用型變數,(i,Tr,TT,N)是長整數變數,
'(Tf,Tg)是字串變數,j是短整數變數
Brr = Range([R1], Cells(Rows.Count, "E").End(xlUp))
'↑令Brr這通用型變數是 二維陣列,以[R1]到 E欄最後有內容儲存格值帶入
For i = 2 To UBound(Brr)
'↑設順迴圈!i從2到 Brr陣列縱向最大索引列號
Tf = Trim(Brr(i, 2)): Tg = Brr(i, 3): Tr = Val(Brr(i, 14))
'↑令Tf這字串變數是 i迴圈列第2欄Brr陣列值去除頭尾空白字元的新字串
'↑令Tg這字串變數是 i迴圈列第3欄Brr陣列值的新字串
'↑令Tr這長整數變數是 i迴圈列第14欄Brr陣列值經轉化為數值的整數
If Tf Like "CC*" Then
'↑如果Tf變數是以 "CC"字串開頭?
If Tg Like "*日立*" Or Tg Like "*MCL*" Then
'↑如果 Tg變數裡包含"日立"字串,或 Tg變數裡包含"MCL"字串?,
'這兩個其中只要有一個條件成立?
TT = TT + Tr: N = N + 1
'↑令TT這長整數變數是 TT變數自身 + Tr變數,
'令N這長整數變數累加 1 (PS:N變數一開始的初始值是0)
'(N變數是要指定符合條件的資料要陸續放在Brr陣列的哪個列位)
For j = 1 To UBound(Brr, 2): Brr(N + 1, j) = Brr(i, j): Next
'↑設順迴圈!j從1到 Brr陣列橫向最大索引欄號,
'令(N變數+1)列第j變數欄的Brr陣列值是 i迴圈列第j變數欄的Brr陣列值
End If
End If
Next
[B2] = TT
'↑令[B2]儲存格值是 TT變數
Workbooks.Add
'↑令產生一個新的活頁簿
[A1].Resize(N + 1, UBound(Brr, 2)) = Brr
'↑令新活頁簿第1個工作表的[A1]儲存格擴展向下 N變數+1列,
'向右擴展 Brr陣列橫向最大索引欄號數欄,這範圍儲存格值 以Brr陣列值帶入
Cells.Columns.AutoFit
'↑令整個工作表全部欄位 自動調整欄寬
ActiveWindow.Zoom = 75
'↑令視窗顯示75%
'100 表示正常大小、200 表示雙倍大小,依此類推)
MsgBox TT
'↑令跳出提示窗顯示: TT變數值
Erase Brr
End Sub |
|