- 帖子
- 5923
- 主題
- 13
- 精華
- 1
- 積分
- 5986
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- Office 2010
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台灣基隆
- 註冊時間
- 2010-5-1
- 最後登錄
- 2022-1-23
        
|
22#
發表於 2018-10-5 15:49
| 只看該作者
回復 21# s7659109
不用字典物件- Option Explicit
- Sub Ex()
- Dim Rng As Range, S As Variant, Ar(), Arr(), i As Long, ii As Integer
- With Sheets("test")
- Set Rng = .Range("b1:" & .Cells(1, Columns.Count).End(xlToLeft).Address) 'test上的欄位
- Ar = Application.Transpose(Application.Transpose(Rng))
- For i = 1 To Rng.Cells.Count
- S = Application.Match(Rng(i), Sheets("data").Rows(1), 0)
- Ar(i) = IIf(IsError(S), "", S) '置入test上的欄位在data上的欄號
- Next
- Set Rng = .Range("a2:" & .Cells(Rows.Count, 1).End(xlUp).Address).Resize(, Rng.Columns.Count + 1)
- Arr = Rng
- End With
- For i = 1 To UBound(Arr)
- S = Application.Match(Arr(i, 1), Sheets("data").Columns(1), 0)
- If Not IsError(S) Then 'test上的學號在data上的位置
- For ii = 1 To UBound(Ar) '導入test上的欄位在data上的欄號
- If Ar(ii) <> "" Then Arr(i, ii + 1) = Sheets("data").Cells(S, Ar(ii))
- Next
- End If
- Next
- Rng.Value = Arr
- End Sub
複製代碼 |
|