求解..
請問如何用vba寫出多條件查找並且更改欄位字串
希望出來的成果是:
工作頁member_users J欄Group找出"SP-STD-USD"和"GL-STD-USD"後統一名稱為STD-USD後
自動再貼到另一份excel檔
原
With Worksheets(1).Range("J2:J19")
指的是第一張工作表
改成
With ActiveSheet.Range("J2:J19")
就可以在「任何一張」/目前的工作表執行
海綿大大 還是失敗..還請麻煩再協助指導,感恩感恩!
記得原題目是「成功,但換到別的檔案就失敗」
現在改成「失敗」二字
請問是那一個部份失敗?
找出"SP-STD-USD"和"GL-STD-USD" - 找不到?
統一名稱為STD-USD後 - 不能取代?
自動再貼到另一份excel檔 - 不能貼?
其他 ?
海綿寶寶海大大照您說的改了之後,點按鈕無任何反應
可能是
1.執行 FindString 時沒有開啟任何工作表
2.J2:J999 沒有符合的資料
先用最單純的方式(開一張工作表+直接/只呼叫 FindString)測試 FindString
成功後再用原完整程式使用
單純開一張工作表是可以將GL-STD-USD改成STD-USD,
想請問海大大,如果我要J列的GL-STD-USD和SP-STD-USD都改成STD-USD,語法應該怎麼改才行
簡單寫就再重覆一次,大概像這樣
With ActiveSheet.Range("J2:J999")
'原程式
Set member_users = .Find("GL-STD-USD", LookIn:=xlValues)
If Not ...
...
End If
'重覆寫
Set member_users = .Find("SP-STD-USD", LookIn:=xlValues)
If Not ...
...
End If
End With
海綿寶寶感謝海大大的協助,已解決!!!
如果問題已解決
請選個最佳解答以結案
Sub test()
arr = WorksheetFunction.Transpose(Columns("j"))
For i = 1 To UBound(arr)
If arr(i) <> "" Then
arr(i) = Replace(arr(i), "GL-STD-USD", "STD-USD")
Else
Exit For
End If
Next
[j1].Resize(i - 1, 1) = arr
End Sub
blanksoul12大大,會出現這個錯誤
那麼奇怪啊,我自己運行時沒這個問題,你試試按偵錯後,看看區域變數視窗.
1.ARR 入面有沒有資料
2.i 值是多少
用 f8 續條程序行看看有什麼支怪吧,因為這不是複雜的做法
1.ARR有資料的
2.i值是2
blanksoul12大大 我單純開一張工作表的話,是直接前幾欄字串直接變Group,
抱歉初學VBA還不太會看續條程序行
我們幫客戶是這樣寫的,可以展開資料與比對與回寫
ls_preorderfile=ActiveWorkbook.Name 可記錄操作中檔名
Windows(ls_preorderfile).Activate 切到此檔
讀取條件可以指定欄位成批一起或逐次讀取,也可搭配綜合條件組合,條件可由客戶自行維護
檔案是公司內部使用,考慮安全行的話,必須過濾有疑慮的條件,例如 delete,drop 等,但很容易抓出來並回報客戶主管,所以沒發生有惡意的情形