- 帖子
- 5923
- 主題
- 13
- 精華
- 1
- 積分
- 5986
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- Office 2010
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台灣基隆
- 註冊時間
- 2010-5-1
- 最後登錄
- 2022-1-23
        
|
本帖最後由 GBKEE 於 2011-5-9 09:05 編輯
附檔的注解: 但又 不想用 VBA 來使用回圈逐個判斷,避免花費時間過長,
可是 處理資料 是避免不了要用到 迴圈的
附檔的程式 可修改如下- Sub Ex()
- Dim Rng(1 To 2) As Range, R As Range
- With Sheets("Sheet1")
- Set Rng(1) = .Range(.[A2], .[A2].End(xlDown)) '設定比對的欄位範圍
- If Application.CountA(Rng(1)) = 0 Then Exit Sub '比對的範圍沒資料 離開程式
- End With
- With Sheets("Sheet2")
- Set Rng(2) = .Range(.[A2], .[A2].End(xlDown)) '設定變更的欄位範圍
- If Application.CountA(Rng(2)) = 0 Then Exit Sub '變更的範圍沒資料 離開程式
- Rng(2).Offset(, 100) = Rng(2).Value 'Rng(2)位移100欄位置的值=Rng(2)的值
- Rng(2).Offset(, 1).FormulaR1C1 = "=IF(RC[99]=RC[-1],"""",RC[99])" 'Rng(2)位移1欄位置的寫下公式
- End With
- For Each R In Rng(1) '依序處裡 比對範圍的儲存格
- If R(1, 2) <> "" Then Rng(2).Offset(, 100).Replace "*" & R & "*", R(1, 2), Lookat:=xlPart
- 'Rng(2).Offset(, 100)中 有包含 R的儲存格 更換(Replace)為R(1, 2) [R位移1欄]的字串
- Next
- Rng(2).Offset(, 1).Value = Rng(2).Offset(, 1).Value
- 'Rng(2).Offset(, 1)的值=Rng(2).Offset(, 1)的值 'Rng(2).Offset(, 1)原本是公式
- Rng(2).Offset(, 100).Clear '清除
- End Sub
複製代碼 |
|